Changeset 206519 in webkit


Ignore:
Timestamp:
Sep 28, 2016 8:34:11 AM (8 years ago)
Author:
Michael Catanzaro
Message:

[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):

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r206518 r206519  
     12016-09-28  Michael Catanzaro  <mcatanzaro@igalia.com>
     2
     3        [GTK] Add Chrome UA quirk
     4        https://bugs.webkit.org/show_bug.cgi?id=162617
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        Add Chrome UA quirk and use it on typekit.net, typekit.com, youtube.com, slack.com, and
     9        any domain that begins with "google".
     10
     11        * platform/gtk/UserAgentGtk.cpp:
     12        (WebCore::buildUserAgentString):
     13        (WebCore::urlRequiresChromeBrowser):
     14        (WebCore::standardUserAgentForURL):
     15
    1162016-09-28  Jer Noble  <jer.noble@apple.com>
    217
  • trunk/Source/WebCore/platform/gtk/UserAgentGtk.cpp

    r206517 r206519  
    4747public:
    4848    enum UserAgentQuirk {
     49        NeedsChromeBrowser,
    4950        NeedsMacintoshPlatform,
    5051
     
    126127    uaString.appendLiteral(") AppleWebKit/");
    127128    uaString.append(versionForUAString());
     129    uaString.appendLiteral(" (KHTML, like Gecko) ");
     130
     131    // Note that Chrome UAs advertise *both* Chrome and Safari.
     132    if (quirks.contains(UserAgentQuirks::NeedsChromeBrowser))
     133        uaString.append("Chrome/51.0.2704.106 ");
     134
    128135    // Version/X is mandatory *before* Safari/X to be a valid Safari UA. See
    129136    // https://bugs.webkit.org/show_bug.cgi?id=133403 for details.
    130     uaString.appendLiteral(" (KHTML, like Gecko) Version/10.0 Safari/");
     137    uaString.appendLiteral(" Version/10.0 Safari/");
    131138    uaString.append(versionForUAString());
    132139
     
    160167}
    161168
     169// Be careful with this quirk: it's an invitation for sites to use JavaScript we can't handle.
     170static bool urlRequiresChromeBrowser(const URL& url)
     171{
     172    String baseDomain = topPrivatelyControlledDomain(url.host());
     173
     174    // Needed for fonts on many sites, https://bugs.webkit.org/show_bug.cgi?id=147296
     175    if (baseDomain == "typekit.net" || baseDomain == "typekit.com")
     176        return true;
     177
     178    // Shut off Chrome ads. Avoid missing features on maps.google.com.
     179    if (baseDomain.startsWith("google"))
     180        return true;
     181
     182    // Needed for YouTube 360 (requires ENABLE_MEDIA_SOURCE).
     183    if (baseDomain == "youtube.com")
     184        return true;
     185
     186    // Slack completely blocks users with our standard user agent.
     187    if (baseDomain == "slack.com")
     188        return true;
     189
     190    return false;
     191}
     192
    162193static bool urlRequiresMacintoshPlatform(const URL& url)
    163194{
     
    179210    ASSERT(!url.isNull());
    180211    UserAgentQuirks quirks;
    181     if (urlRequiresMacintoshPlatform(url)) {
     212    if (urlRequiresChromeBrowser(url))
     213        quirks.add(UserAgentQuirks::NeedsChromeBrowser);
     214    if (urlRequiresMacintoshPlatform(url))
    182215        quirks.add(UserAgentQuirks::NeedsMacintoshPlatform);
    183     }
    184216
    185217    // The null string means we don't need a specific UA for the given URL.
  • trunk/Tools/ChangeLog

    r206516 r206519  
     12016-09-28  Michael Catanzaro  <mcatanzaro@igalia.com>
     2
     3        [GTK] Add Chrome UA quirk
     4        https://bugs.webkit.org/show_bug.cgi?id=162617
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        Update test. This portion of the commit was actually unreviewed.
     9
     10        * TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:
     11        (TestWebKitAPI::TEST):
     12
    1132016-09-28  Michael Catanzaro  <mcatanzaro@igalia.com>
    214
  • trunk/Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp

    r206515 r206519  
    4444    EXPECT_TRUE(uaString.contains("Mac OS X"));
    4545    EXPECT_FALSE(uaString.contains("Linux"));
     46    EXPECT_FALSE(uaString.contains("Chrome"));
     47
     48    // google domains require Chrome in the UA
     49    uaString = standardUserAgentForURL(URL(ParsedURLString, "http://www.google.es/"));
     50    EXPECT_FALSE(uaString.contains("Macintosh"));
     51    EXPECT_FALSE(uaString.contains("Mac OS X"));
     52    EXPECT_TRUE(uaString.contains("Linux"));
     53    EXPECT_TRUE(uaString.contains("Chrome"));
     54
     55    uaString = standardUserAgentForURL(URL(ParsedURLString, "http://maps.google.com/"));
     56    EXPECT_FALSE(uaString.contains("Macintosh"));
     57    EXPECT_FALSE(uaString.contains("Mac OS X"));
     58    EXPECT_TRUE(uaString.contains("Linux"));
     59    EXPECT_TRUE(uaString.contains("Chrome"));
     60
     61    // Slack requires Chrome in the UA
     62    uaString = standardUserAgentForURL(URL(ParsedURLString, "http://www.slack.com/"));
     63    EXPECT_FALSE(uaString.contains("Macintosh"));
     64    EXPECT_FALSE(uaString.contains("Mac OS X"));
     65    EXPECT_TRUE(uaString.contains("Linux"));
     66    EXPECT_TRUE(uaString.contains("Chrome"));
    4667}
    4768
Note: See TracChangeset for help on using the changeset viewer.