Simplify Cocoa platform user agent logic by using string constants instead of functio...
authormjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Mar 2019 02:52:33 +0000 (02:52 +0000)
committermjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Mar 2019 02:52:33 +0000 (02:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=195936

Reviewed by Dean Jackson.

No new tests because no behavior changes. Existing behavior is tested by fast/dom/navigator-userAgent-frozen.html

* platform/UserAgent.h: Remove prototype of removed function.
* platform/cocoa/UserAgentCocoa.mm:
(WebCore::userAgentBundleVersion): Deleted.
* platform/ios/UserAgentIOS.mm:
* platform/ios/UserAgentIOS.mm:
(WebCore::osNameForUserAgent): Use WTF String instead of NSString
(WebCore::deviceNameForUserAgent): dutto
(WebCore::standardUserAgentWithApplicationName): Simplify this
function to account for WebKit version now being frozen. Also
use String instead of NSString.
* platform/mac/UserAgentMac.mm:
(WebCore::standardUserAgentWithApplicationName): Simplify this
function to account for CPU and WEbKit version now being
frozen. Also avoid two separate but very similar calls to
makeString().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243187 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/UserAgent.h
Source/WebCore/platform/cocoa/UserAgentCocoa.mm
Source/WebCore/platform/ios/UserAgentIOS.mm
Source/WebCore/platform/mac/UserAgentMac.mm

index 81de98b..26d6b47 100644 (file)
@@ -1,3 +1,28 @@
+2019-03-18  Maciej Stachowiak  <mjs@apple.com>
+
+        Simplify Cocoa platform user agent logic by using string constants instead of function calls for the frozen parts
+        https://bugs.webkit.org/show_bug.cgi?id=195936
+
+        Reviewed by Dean Jackson.
+
+        No new tests because no behavior changes. Existing behavior is tested by fast/dom/navigator-userAgent-frozen.html
+
+        * platform/UserAgent.h: Remove prototype of removed function.
+        * platform/cocoa/UserAgentCocoa.mm:
+        (WebCore::userAgentBundleVersion): Deleted.
+        * platform/ios/UserAgentIOS.mm:
+        * platform/ios/UserAgentIOS.mm:
+        (WebCore::osNameForUserAgent): Use WTF String instead of NSString
+        (WebCore::deviceNameForUserAgent): dutto
+        (WebCore::standardUserAgentWithApplicationName): Simplify this
+        function to account for WebKit version now being frozen. Also
+        use String instead of NSString.
+        * platform/mac/UserAgentMac.mm:
+        (WebCore::standardUserAgentWithApplicationName): Simplify this
+        function to account for CPU and WEbKit version now being
+        frozen. Also avoid two separate but very similar calls to
+        makeString().
+
 2019-03-19  Ross Kirsling  <ross.kirsling@sony.com>
 
         Unreviewed adjustment to r242842 per Darin's request.
index c344848..9f5aeda 100644 (file)
@@ -34,7 +34,6 @@ namespace WebCore {
 WEBCORE_EXPORT String standardUserAgentWithApplicationName(const String& applicationName);
 
 String systemMarketingVersionForUserAgentString();
-String userAgentBundleVersion();
 #else
 
 WEBCORE_EXPORT String standardUserAgent(const String& applicationName = emptyString(), const String& applicationVersion = emptyString());
index ee4e7e2..308f288 100644 (file)
@@ -38,9 +38,4 @@ String systemMarketingVersionForUserAgentString()
     return [systemMarketingVersion() stringByReplacingOccurrencesOfString:@"." withString:@"_"];
 }
 
-String userAgentBundleVersion()
-{
-    return "605.1.15"_s;
-}
-
 } // namespace WebCore
index 6bedcc9..b3bfdce 100644 (file)
@@ -52,32 +52,33 @@ static inline bool isClassicPhone()
     return isClassic() && [PAL::getUIApplicationClass() _classicMode] != UIApplicationSceneClassicModeOriginalPad;
 }
 
-static inline NSString *osNameForUserAgent()
+static inline String osNameForUserAgent()
 {
     if (deviceHasIPadCapability() && !isClassicPhone())
-        return @"OS";
-    return @"iPhone OS";
+        return "OS";
+    return "iPhone OS";
 }
 
-static inline NSString *deviceNameForUserAgent()
+static inline String deviceNameForUserAgent()
 {
     if (isClassic()) {
         if (isClassicPad())
-            return @"iPad";
-        return @"iPhone";
+            return "iPad";
+        return "iPhone";
     }
 
-    NSString *name = deviceName();
+    String name = deviceName();
 #if PLATFORM(IOS_FAMILY_SIMULATOR)
-    NSUInteger location = [name rangeOfString:@" Simulator" options:NSBackwardsSearch].location;
-    if (location != NSNotFound && location > 0)
-        return [name substringToIndex:location];
+    size_t location = name.find(" Simulator");
+    if (location != notFound) 
+        return name.substring(0, location);
 #endif
     return name;
 }
 
 String standardUserAgentWithApplicationName(const String& applicationName)
 {
+    // FIXME: Is this needed any more? Mac doesn't have this check,
     // Check to see if there is a user agent override for all WebKit clients.
     CFPropertyListRef override = CFPreferencesCopyAppValue(CFSTR("UserAgent"), CFSTR("com.apple.WebFoundation"));
     if (override) {
@@ -86,12 +87,10 @@ String standardUserAgentWithApplicationName(const String& applicationName)
         CFRelease(override);
     }
 
-    // FIXME: We should implement this with String and/or StringBuilder instead.
-    NSString *webKitVersion = userAgentBundleVersion();
-    NSString *osMarketingVersionString = systemMarketingVersionForUserAgentString();
-    if (applicationName.isEmpty())
-        return [NSString stringWithFormat:@"Mozilla/5.0 (%@; CPU %@ %@ like Mac OS X) AppleWebKit/%@ (KHTML, like Gecko)", deviceNameForUserAgent(), osNameForUserAgent(), osMarketingVersionString, webKitVersion];
-    return [NSString stringWithFormat:@"Mozilla/5.0 (%@; CPU %@ %@ like Mac OS X) AppleWebKit/%@ (KHTML, like Gecko) %@", deviceNameForUserAgent(), osNameForUserAgent(), osMarketingVersionString, webKitVersion, static_cast<NSString *>(applicationName)];
+    String osVersion = systemMarketingVersionForUserAgentString();
+    String appNameSuffix = applicationName.isEmpty() ? "" : makeString(" ", applicationName);
+
+    return makeString("Mozilla/5.0 (", deviceNameForUserAgent(), "; CPU ", osNameForUserAgent(), " ", osVersion, " like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)", appNameSuffix);
 }
 
 } // namespace WebCore.
index da7e183..8020885 100644 (file)
 
 namespace WebCore {
 
-#if defined(__ppc__) || defined(__ppc64__)
-#define PROCESSOR "PPC"
-#elif defined(__i386__) || defined(__x86_64__)
-#define PROCESSOR "Intel"
-#else
-#error Unknown architecture
-#endif
-
 String standardUserAgentWithApplicationName(const String& applicationName)
 {
     String osVersion = systemMarketingVersionForUserAgentString();
-    String webKitVersionString = userAgentBundleVersion();
+    String appNameSuffix = applicationName.isEmpty() ? "" : makeString(" ", applicationName);
 
-    if (applicationName.isEmpty())
-        return makeString("Mozilla/5.0 (Macintosh; " PROCESSOR " Mac OS X ", osVersion, ") AppleWebKit/", webKitVersionString, " (KHTML, like Gecko)");
-    return makeString("Mozilla/5.0 (Macintosh; " PROCESSOR " Mac OS X ", osVersion, ") AppleWebKit/", webKitVersionString, " (KHTML, like Gecko) ", applicationName);
+    return makeString("Mozilla/5.0 (Macintosh; Intel Mac OS X ", osVersion, ") AppleWebKit/605.1.15 (KHTML, like Gecko)", appNameSuffix);
 }
 
 } // namespace WebCore