We have three copies of the code that formats the WebKit version for use in the user agent string. We should move the logic to WebCore so it can be shared between WebKit and WebKit2.
Created attachment 234216 [details] Patch
Comment on attachment 234216 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=234216&action=review > Source/WebCore/page/cocoa/UserAgent.mm:51 > + // If the version is longer than 3 digits then the leading digits represent the version of the OS. Our user agent > + // string should not include the leading digits, so strip them off and report the rest as the version. <rdar://problem/4997547> > + NSRange nonDigitRange = [fullWebKitVersion rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]; > + if (nonDigitRange.location == NSNotFound && fullWebKitVersion.length > 3) > + return [fullWebKitVersion substringFromIndex:fullWebKitVersion.length - 3]; > + if (nonDigitRange.location != NSNotFound && nonDigitRange.location > 3) > + return [fullWebKitVersion substringFromIndex:nonDigitRange.location - 3]; Sad that we go to NSString and back. > Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:66 > + return [[NSBundle bundleForClass:NSClassFromString(@"WKView")] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; There's a WKView in WebCore. Is that really the one we want? > Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:102 > + return [[NSBundle bundleForClass:NSClassFromString(@"WKView")] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; WKView again?
(In reply to comment #2) > > Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:66 > > + return [[NSBundle bundleForClass:NSClassFromString(@"WKView")] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; > > There's a WKView in WebCore. Is that really the one we want? The WKView class lives in WebKit2. I'll change to WKWebView though since that's now WebKit2's primary class.
Landed in r170734. <https://trac.webkit.org/r170734>