Title: [207120] releases/WebKitGTK/webkit-2.14
Revision
207120
Author
[email protected]
Date
2016-10-11 06:24:09 -0700 (Tue, 11 Oct 2016)

Log Message

Merge r206519 - [GTK] Add Chrome UA quirk
https://bugs.webkit.org/show_bug.cgi?id=162617

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add Chrome UA quirk and use it on typekit.net, typekit.com, youtube.com, slack.com, and
any domain that begins with "google".

* platform/gtk/UserAgentGtk.cpp:
(WebCore::buildUserAgentString):
(WebCore::urlRequiresChromeBrowser):
(WebCore::standardUserAgentForURL):

Tools:

Update test. This portion of the commit was actually unreviewed.

* TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:
(TestWebKitAPI::TEST):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog (207119 => 207120)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-10-11 13:24:01 UTC (rev 207119)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-10-11 13:24:09 UTC (rev 207120)
@@ -1,5 +1,20 @@
 2016-09-28  Michael Catanzaro  <[email protected]>
 
+        [GTK] Add Chrome UA quirk
+        https://bugs.webkit.org/show_bug.cgi?id=162617
+
+        Reviewed by Carlos Garcia Campos.
+
+        Add Chrome UA quirk and use it on typekit.net, typekit.com, youtube.com, slack.com, and
+        any domain that begins with "google".
+
+        * platform/gtk/UserAgentGtk.cpp:
+        (WebCore::buildUserAgentString):
+        (WebCore::urlRequiresChromeBrowser):
+        (WebCore::standardUserAgentForURL):
+
+2016-09-28  Michael Catanzaro  <[email protected]>
+
         [GTK] User agent should always claim to be Intel
         https://bugs.webkit.org/show_bug.cgi?id=162610
 

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/gtk/UserAgentGtk.cpp (207119 => 207120)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/gtk/UserAgentGtk.cpp	2016-10-11 13:24:01 UTC (rev 207119)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/gtk/UserAgentGtk.cpp	2016-10-11 13:24:09 UTC (rev 207120)
@@ -46,6 +46,7 @@
 class UserAgentQuirks {
 public:
     enum UserAgentQuirk {
+        NeedsChromeBrowser,
         NeedsMacintoshPlatform,
 
         NumUserAgentQuirks
@@ -125,9 +126,15 @@
 
     uaString.appendLiteral(") AppleWebKit/");
     uaString.append(versionForUAString());
+    uaString.appendLiteral(" (KHTML, like Gecko) ");
+
+    // Note that Chrome UAs advertise *both* Chrome and Safari.
+    if (quirks.contains(UserAgentQuirks::NeedsChromeBrowser))
+        uaString.append("Chrome/51.0.2704.106 ");
+
     // Version/X is mandatory *before* Safari/X to be a valid Safari UA. See
     // https://bugs.webkit.org/show_bug.cgi?id=133403 for details.
-    uaString.appendLiteral(" (KHTML, like Gecko) Version/10.0 Safari/");
+    uaString.appendLiteral(" Version/10.0 Safari/");
     uaString.append(versionForUAString());
 
     return uaString.toString();
@@ -159,6 +166,30 @@
     return standardUserAgentStatic() + ' ' + applicationName + '/' + finalApplicationVersion;
 }
 
+// Be careful with this quirk: it's an invitation for sites to use _javascript_ we can't handle.
+static bool urlRequiresChromeBrowser(const URL& url)
+{
+    String baseDomain = topPrivatelyControlledDomain(url.host());
+
+    // Needed for fonts on many sites, https://bugs.webkit.org/show_bug.cgi?id=147296
+    if (baseDomain == "typekit.net" || baseDomain == "typekit.com")
+        return true;
+
+    // Shut off Chrome ads. Avoid missing features on maps.google.com.
+    if (baseDomain.startsWith("google"))
+        return true;
+
+    // Needed for YouTube 360 (requires ENABLE_MEDIA_SOURCE).
+    if (baseDomain == "youtube.com")
+        return true;
+
+    // Slack completely blocks users with our standard user agent.
+    if (baseDomain == "slack.com")
+        return true;
+
+    return false;
+}
+
 static bool urlRequiresMacintoshPlatform(const URL& url)
 {
     String baseDomain = topPrivatelyControlledDomain(url.host());
@@ -178,9 +209,10 @@
 {
     ASSERT(!url.isNull());
     UserAgentQuirks quirks;
-    if (urlRequiresMacintoshPlatform(url)) {
+    if (urlRequiresChromeBrowser(url))
+        quirks.add(UserAgentQuirks::NeedsChromeBrowser);
+    if (urlRequiresMacintoshPlatform(url))
         quirks.add(UserAgentQuirks::NeedsMacintoshPlatform);
-    }
 
     // The null string means we don't need a specific UA for the given URL.
     return quirks.isEmpty() ? String() : buildUserAgentString(quirks);

Modified: releases/WebKitGTK/webkit-2.14/Tools/ChangeLog (207119 => 207120)


--- releases/WebKitGTK/webkit-2.14/Tools/ChangeLog	2016-10-11 13:24:01 UTC (rev 207119)
+++ releases/WebKitGTK/webkit-2.14/Tools/ChangeLog	2016-10-11 13:24:09 UTC (rev 207120)
@@ -1,3 +1,15 @@
+2016-09-28  Michael Catanzaro  <[email protected]>
+
+        [GTK] Add Chrome UA quirk
+        https://bugs.webkit.org/show_bug.cgi?id=162617
+
+        Reviewed by Carlos Garcia Campos.
+
+        Update test. This portion of the commit was actually unreviewed.
+
+        * TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:
+        (TestWebKitAPI::TEST):
+
 2016-09-27  Michael Catanzaro  <[email protected]>
 
         [GTK] Install binaries to pkglibexecdir rather than bindir

Modified: releases/WebKitGTK/webkit-2.14/Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp (207119 => 207120)


--- releases/WebKitGTK/webkit-2.14/Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp	2016-10-11 13:24:01 UTC (rev 207119)
+++ releases/WebKitGTK/webkit-2.14/Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp	2016-10-11 13:24:09 UTC (rev 207120)
@@ -43,6 +43,27 @@
     EXPECT_TRUE(uaString.contains("Macintosh"));
     EXPECT_TRUE(uaString.contains("Mac OS X"));
     EXPECT_FALSE(uaString.contains("Linux"));
+    EXPECT_FALSE(uaString.contains("Chrome"));
+
+    // google domains require Chrome in the UA
+    uaString = standardUserAgentForURL(URL(ParsedURLString, "http://www.google.es/"));
+    EXPECT_FALSE(uaString.contains("Macintosh"));
+    EXPECT_FALSE(uaString.contains("Mac OS X"));
+    EXPECT_TRUE(uaString.contains("Linux"));
+    EXPECT_TRUE(uaString.contains("Chrome"));
+
+    uaString = standardUserAgentForURL(URL(ParsedURLString, "http://maps.google.com/"));
+    EXPECT_FALSE(uaString.contains("Macintosh"));
+    EXPECT_FALSE(uaString.contains("Mac OS X"));
+    EXPECT_TRUE(uaString.contains("Linux"));
+    EXPECT_TRUE(uaString.contains("Chrome"));
+
+    // Slack requires Chrome in the UA
+    uaString = standardUserAgentForURL(URL(ParsedURLString, "http://www.slack.com/"));
+    EXPECT_FALSE(uaString.contains("Macintosh"));
+    EXPECT_FALSE(uaString.contains("Mac OS X"));
+    EXPECT_TRUE(uaString.contains("Linux"));
+    EXPECT_TRUE(uaString.contains("Chrome"));
 }
 
 } // namespace TestWebKitAPI
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to