Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ad6fed49234ba17515e45f0c8d283f52cd464a15
      
https://github.com/WebKit/WebKit/commit/ad6fed49234ba17515e45f0c8d283f52cd464a15
  Author: Marcos Caceres <[email protected]>
  Date:   2026-07-15 (Wed, 15 Jul 2026)

  Changed paths:
    A LayoutTests/http/wpt/user-activation/bless-edge-cases.sub-expected.txt
    A LayoutTests/http/wpt/user-activation/bless-edge-cases.sub.html
    A LayoutTests/http/wpt/user-activation/bless-expected.txt
    A LayoutTests/http/wpt/user-activation/bless-nested.sub-expected.txt
    A LayoutTests/http/wpt/user-activation/bless-nested.sub.html
    A LayoutTests/http/wpt/user-activation/bless.html
    A 
LayoutTests/http/wpt/user-activation/click-offset-subframe-scrolled-expected.txt
    A LayoutTests/http/wpt/user-activation/click-offset-subframe-scrolled.html
    A LayoutTests/http/wpt/user-activation/resources/bless-relay.sub.html
    A LayoutTests/http/wpt/user-activation/resources/click-target.html
    A LayoutTests/http/wpt/user-activation/resources/iframe.html
    M 
LayoutTests/imported/w3c/web-platform-tests/digital-credentials/create.disabled-by-permissions-policy.https.sub-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/digital-credentials/default-permissions-policy.https.sub-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get.disabled-by-permissions-policy.https.sub-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-user-click-during-pageshow-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-user-click-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-assign-user-click-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-setter-user-click-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-setter-user-mouseup-expected.txt
    M LayoutTests/platform/glib/TestExpectations
    A 
LayoutTests/platform/ios/imported/w3c/web-platform-tests/digital-credentials/default-permissions-policy.https.sub-expected.txt
    M LayoutTests/platform/ipad/TestExpectations
    M LayoutTests/platform/mac-site-isolation/TestExpectations
    M LayoutTests/platform/mac-wk2/TestExpectations
    M LayoutTests/resources/testdriver-vendor.js
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebCore/testing/Internals.idl

  Log Message:
  -----------
  testharness.js bless() method not working for cross-origin iframes

rdar://165737231
https://bugs.webkit.org/show_bug.cgi?id=303448

Reviewed by Wenson Hsieh.

test_driver.click() computes an element's click point in the element's own
frame-local coordinates, but WebKitTestRunner's synthetic click is hit-tested
from the top window. For a button in an offset or cross-origin iframe the two
spaces differ, so bless()'s click missed its target and the test timed out.

Resolve the click point into top-window (root-view) coordinates before
dispatching: add Internals.boundingBoxInRootViewCoordinates(element) and, in
testdriver-vendor.js, shift testdriver.js's frame-local point by the element's
frame-to-root-view offset. For a top-level element the offset is zero, so
top-level clicks are unchanged; only subframe clicks move. This replaces the
earlier interim shim that granted activation directly via internals.

Because test_driver.click() now lands in subframes, several replace-before-load
tests that relied on a click into a subframe navigating the frame now pass, and
their stale FAIL baselines are updated to PASS. On the iOS WPT bot the same
subframe clicks make three user-activation tests pass (their stale iPad
expectations are removed), and the Digital Credentials 
default-permissions-policy
test now runs to completion producing its DC-on output on iOS (which enables the
feature), so an iOS baseline is added for it.

Two follow-ups are tracked and their affected cases contained rather than fixed
here: one bless-nested subtest expects the spec-correct result but currently
fails because WebKit over-activates a same-origin frame nested below a clicked
cross-origin frame (webkit.org/b/318749); its committed baseline records that
failure. Under site isolation the coordinate resolution cannot cross a
RemoteFrame (cross-process) boundary, so the cross-origin bless tests are
skipped on mac-site-isolation (webkit.org/b/318763). The same-process mapping
also does not yet account for CSS transforms on an ancestor iframe
(webkit.org/b/318752).

* Source/WebCore/testing/Internals.idl:
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::boundingBoxInRootViewCoordinates): Return an element's
border-box in root-view (top window) coordinates, for the test-driver click 
path.
* LayoutTests/resources/testdriver-vendor.js:
(window.test_driver_internal.click): For an element in a subframe, shift 
testdriver's
frame-local click point to root-view coordinates via 
internals.boundingBoxInRootViewCoordinates();
top-level elements need no shift. Remove the interim internals-withUserGesture 
bless shim.
* LayoutTests/http/wpt/user-activation/bless.html: Added.
* LayoutTests/http/wpt/user-activation/bless-expected.txt: Added.
* LayoutTests/http/wpt/user-activation/bless-nested.sub.html: Added.
* LayoutTests/http/wpt/user-activation/bless-nested.sub-expected.txt: Added.
* LayoutTests/http/wpt/user-activation/bless-edge-cases.sub.html: Added.
* LayoutTests/http/wpt/user-activation/bless-edge-cases.sub-expected.txt: Added.
* LayoutTests/http/wpt/user-activation/resources/bless-relay.sub.html: Added.
* LayoutTests/http/wpt/user-activation/resources/click-target.html: Added.
* LayoutTests/http/wpt/user-activation/resources/iframe.html: Added.
* LayoutTests/http/wpt/user-activation/click-offset-subframe-scrolled.html: 
Added.
* 
LayoutTests/http/wpt/user-activation/click-offset-subframe-scrolled-expected.txt:
 Added.
Regression test: test_driver.click lands on a target inside an offset subframe 
while the top
document is scrolled, exercising the frame-to-root-view coordinate shift. Fails 
without the
shift and passes with it, on both macOS and iOS.
* 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-user-click-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-user-click-during-pageshow-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-assign-user-click-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-setter-user-click-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/location-setter-user-mouseup-expected.txt:
Rebaseline to PASS: the subframe click now lands, so the expected navigation 
occurs.
* LayoutTests/platform/mac-site-isolation/TestExpectations:
Skip the bless tests under site isolation pending the cross-process coordinate 
path (webkit.org/b/318763).
* 
LayoutTests/imported/w3c/web-platform-tests/digital-credentials/create.disabled-by-permissions-policy.https.sub-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/digital-credentials/default-permissions-policy.https.sub-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/digital-credentials/get.disabled-by-permissions-policy.https.sub-expected.txt:
Reset baselines now that these tests run to completion instead of timing out.
* 
LayoutTests/platform/ios/imported/w3c/web-platform-tests/digital-credentials/default-permissions-policy.https.sub-expected.txt:
 Added.
iOS enables Digital Credentials, so get() is available there; add an iOS 
baseline with
the DC-on output (get() passes) instead of falling back to the DC-off generic 
baseline.
* LayoutTests/platform/glib/TestExpectations:
Skip the screen-orientation subframe tests that now run to completion but
fail on features not supported there.
* LayoutTests/platform/mac-wk2/TestExpectations:
Skip the screen-orientation and storage-access-beyond-cookies subframe tests
that now run to completion but fail on features not supported there, and mark
the digital-credentials default-permissions-policy test [ Debug ] [ Failure ]:
DigitalCredentials is enabled in debug Cocoa builds but not release, so it
diverges from the DC-off baseline only on debug.
* LayoutTests/platform/ipad/TestExpectations:
Remove the stale [ Failure ] expectations for the user-activation
consumption-sameorigin, propagation-sameorigin, and propagation-crossorigin
tests, which now pass because test_driver.click() lands in the subframe.

Canonical link: https://commits.webkit.org/317287@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to