Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3d80355d54c3a6d9990c3d0627ec3ab4473912f4
https://github.com/WebKit/WebKit/commit/3d80355d54c3a6d9990c3d0627ec3ab4473912f4
Author: Karl Dubost <[email protected]>
Date: 2026-09-13 (Sun, 13 Sep 2026)
Changed paths:
M LayoutTests/fast/quirks/active-quirks-by-domain-expected.txt
M LayoutTests/platform/glib/fast/quirks/active-quirks-by-domain-expected.txt
M LayoutTests/platform/ios/fast/quirks/active-quirks-by-domain-expected.txt
M LayoutTests/platform/ipad/fast/quirks/active-quirks-by-domain-expected.txt
M
LayoutTests/platform/mac-sequoia/fast/quirks/active-quirks-by-domain-expected.txt
M
LayoutTests/platform/mac-tahoe/fast/quirks/active-quirks-by-domain-expected.txt
M Source/WebCore/page/QuirkTable.cpp
Log Message:
-----------
[Quirk] x.com: "Continue with Google" is not clickable
https://bugs.webkit.org/show_bug.cgi?id=323931
rdar://183399060
Reviewed by Cole Carley.
accounts.google.com/gsi/client renders its sign-in button into a div
it appends to its own container.
On Chromium it leaves the button in that div, and the iframe that
follows keeps its inline width and height of 0. Everywhere else, WebKit
and Gecko alike, it renders the button in a cross-origin iframe appended
after the div and empties the div, so the button becomes the second
child instead of the first.
The branch is a browser sniff on navigator.userAgentData.brands,
falling back to the user agent string.
x.com overlays Google's container on a decorative button of its own
and stretches every descendant of the overlay with
".jf-gsi-hit * { height: 100% !important }".
That rule assumes the first child is the button, which holds only on
Chromium. On WebKit it inflates the emptied render target into a
full-height spacer and pushes the real click target one button height
down the page, leaving a 2 pixel strip of the visible button clickable.
This PR is fixing it by collapsing the render target while it is empty.
Using :empty means the rule stops applying the moment anything is
rendered into the div again, so it never fires on the Chromium shape and
turns itself off if Google moves WebKit to that branch.
The rule is anchored on .jf-gsi-hit, which x.com hand-wrote, rather than
on Google's generated container class, which might change with Google's
updates. :first-child and :not([role]) keep it off the overlay, which
is itself an empty div.
* LayoutTests/fast/quirks/active-quirks-by-domain-expected.txt:
* LayoutTests/platform/glib/fast/quirks/active-quirks-by-domain-expected.txt:
* LayoutTests/platform/ios/fast/quirks/active-quirks-by-domain-expected.txt:
* LayoutTests/platform/ipad/fast/quirks/active-quirks-by-domain-expected.txt:
*
LayoutTests/platform/mac-sequoia/fast/quirks/active-quirks-by-domain-expected.txt:
*
LayoutTests/platform/mac-tahoe/fast/quirks/active-quirks-by-domain-expected.txt:
* Source/WebCore/page/QuirkTable.cpp:
Canonical link: https://commits.webkit.org/321039@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications