Title: [258978] trunk
Revision
258978
Author
commit-qu...@webkit.org
Date
2020-03-25 06:54:14 -0700 (Wed, 25 Mar 2020)

Log Message

[GTK] Add user agent quirk for auth.mayohr.com
https://bugs.webkit.org/show_bug.cgi?id=209378

Patch by Ting-Wei Lan <lant...@gmail.com> on 2020-03-25
Reviewed by Michael Catanzaro.

Source/WebCore:

This site blocks the login page completely and asks the user to download
Google Chrome when using our standard user agent. It only blocks the
login page. After logging in, it works fine without user agent quirks.

Note that it is required to hide Version/X from the user agent string
for the site to recognize it as a valid Chrome user agent. Since Chrome
itself does not use Version/X, it should be safe to modify the existing
quirk instead of adding a new one to handle it.

* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresChromeBrowser):
(WebCore::urlRequiresNoSafariVersion):
(WebCore::UserAgentQuirks::quirksForURL):
(WebCore::UserAgentQuirks::stringForQuirk):
* platform/UserAgentQuirks.h:
* platform/glib/UserAgentGLib.cpp:
(WebCore::buildUserAgentString):

Tools:

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

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (258977 => 258978)


--- trunk/Source/WebCore/ChangeLog	2020-03-25 13:44:17 UTC (rev 258977)
+++ trunk/Source/WebCore/ChangeLog	2020-03-25 13:54:14 UTC (rev 258978)
@@ -1,3 +1,28 @@
+2020-03-25  Ting-Wei Lan  <lant...@gmail.com>
+
+        [GTK] Add user agent quirk for auth.mayohr.com
+        https://bugs.webkit.org/show_bug.cgi?id=209378
+
+        Reviewed by Michael Catanzaro.
+
+        This site blocks the login page completely and asks the user to download
+        Google Chrome when using our standard user agent. It only blocks the
+        login page. After logging in, it works fine without user agent quirks.
+
+        Note that it is required to hide Version/X from the user agent string
+        for the site to recognize it as a valid Chrome user agent. Since Chrome
+        itself does not use Version/X, it should be safe to modify the existing
+        quirk instead of adding a new one to handle it.
+
+        * platform/UserAgentQuirks.cpp:
+        (WebCore::urlRequiresChromeBrowser):
+        (WebCore::urlRequiresNoSafariVersion):
+        (WebCore::UserAgentQuirks::quirksForURL):
+        (WebCore::UserAgentQuirks::stringForQuirk):
+        * platform/UserAgentQuirks.h:
+        * platform/glib/UserAgentGLib.cpp:
+        (WebCore::buildUserAgentString):
+
 2020-03-25  Youenn Fablet  <you...@apple.com>
 
         Audio fails to capture stream in WebRTC if AudioSession gets interrupted

Modified: trunk/Source/WebCore/platform/UserAgentQuirks.cpp (258977 => 258978)


--- trunk/Source/WebCore/platform/UserAgentQuirks.cpp	2020-03-25 13:44:17 UTC (rev 258977)
+++ trunk/Source/WebCore/platform/UserAgentQuirks.cpp	2020-03-25 13:54:14 UTC (rev 258978)
@@ -62,7 +62,8 @@
 // that works in Chrome that WebKit cannot handle. Prefer other quirks instead.
 static bool urlRequiresChromeBrowser(const URL& url)
 {
-    String baseDomain = topPrivatelyControlledDomain(url.host().toString());
+    String domain = url.host().toString();
+    String baseDomain = topPrivatelyControlledDomain(domain);
 
     // Needed for fonts on many sites to work with WebKit.
     // https://bugs.webkit.org/show_bug.cgi?id=147296
@@ -69,6 +70,11 @@
     if (baseDomain == "typekit.net" || baseDomain == "typekit.com")
         return true;
 
+    // This site completely blocks the login page with WebKitGTK's standard user
+    // agent and ask users to use Google Chrome or Microsoft Internet Explorer.
+    if (domain == "auth.mayohr.com")
+        return true;
+
     return false;
 }
 

Modified: trunk/Source/WebCore/platform/glib/UserAgentGLib.cpp (258977 => 258978)


--- trunk/Source/WebCore/platform/glib/UserAgentGLib.cpp	2020-03-25 13:44:17 UTC (rev 258977)
+++ trunk/Source/WebCore/platform/glib/UserAgentGLib.cpp	2020-03-25 13:54:14 UTC (rev 258978)
@@ -104,15 +104,16 @@
     uaString.append(versionForUAString());
     uaString.appendLiteral(" (KHTML, like Gecko) ");
 
-    // Note that Chrome UAs advertise *both* Chrome and Safari.
+    // Note that Chrome UAs advertise *both* Chrome/X and Safari/X, but it does
+    // not advertise Version/X.
     if (quirks.contains(UserAgentQuirks::NeedsChromeBrowser)) {
         uaString.append(UserAgentQuirks::stringForQuirk(UserAgentQuirks::NeedsChromeBrowser));
         uaString.appendLiteral(" ");
-    }
-
     // 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("Version/13.0 Safari/");
+    } else
+        uaString.appendLiteral("Version/13.0 ");
+    uaString.appendLiteral("Safari/");
     uaString.append(versionForUAString());
 
     return uaString.toString();

Modified: trunk/Tools/ChangeLog (258977 => 258978)


--- trunk/Tools/ChangeLog	2020-03-25 13:44:17 UTC (rev 258977)
+++ trunk/Tools/ChangeLog	2020-03-25 13:54:14 UTC (rev 258978)
@@ -1,3 +1,14 @@
+2020-03-25  Ting-Wei Lan  <lant...@gmail.com>
+
+        [GTK] Add user agent quirk for auth.mayohr.com
+        https://bugs.webkit.org/show_bug.cgi?id=209378
+
+        Reviewed by Michael Catanzaro.
+
+        * TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
+        (TestWebKitAPI::assertUserAgentForURLHasNoSafariVersionQuirk):
+        (TestWebKitAPI::TEST):
+
 2020-03-24  Daniel Bates  <daba...@apple.com>
 
         Unreviewed, reverting r258945.

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp (258977 => 258978)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp	2020-03-25 13:44:17 UTC (rev 258977)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp	2020-03-25 13:54:14 UTC (rev 258978)
@@ -40,6 +40,7 @@
     EXPECT_TRUE(uaString.contains("Safari"));
     EXPECT_FALSE(uaString.contains("Chromium"));
     EXPECT_FALSE(uaString.contains("Firefox"));
+    EXPECT_FALSE(uaString.contains("Version"));
 }
 
 static void assertUserAgentForURLHasFirefoxBrowserQuirk(const char* url)
@@ -50,6 +51,7 @@
     EXPECT_FALSE(uaString.contains("Safari"));
     EXPECT_FALSE(uaString.contains("Chromium"));
     EXPECT_TRUE(uaString.contains("Firefox"));
+    EXPECT_FALSE(uaString.contains("Version"));
 }
 
 static void assertUserAgentForURLHasLinuxPlatformQuirk(const char* url)
@@ -90,6 +92,7 @@
 
     assertUserAgentForURLHasChromeBrowserQuirk("http://typekit.com/");
     assertUserAgentForURLHasChromeBrowserQuirk("http://typekit.net/");
+    assertUserAgentForURLHasChromeBrowserQuirk("http://auth.mayohr.com/");
 
     assertUserAgentForURLHasFirefoxBrowserQuirk("http://accounts.youtube.com/");
     assertUserAgentForURLHasFirefoxBrowserQuirk("http://docs.google.com/");
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to