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

Reply via email to