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

  Changed paths:
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h

  Log Message:
  -----------
  [iOS] Digital Credentials get() rejects with "requires transient user 
activation" for a tap on a page with no touch event listeners

https://bugs.webkit.org/show_bug.cgi?id=319878
rdar://182780988

Reviewed by Pascoe and Abrar Rahman Protyasha.

WebPageProxy recorded the UI-process user-activation timestamp
(lastActivationTimestamp) only inside the send*Event functions. On iOS a
tap on a page with no touch event listeners takes the NotTracking early
return in handlePreventableTouchEvent and never reaches
sendPreventableTouchEvent, so the UI process never recorded the
activation. showDigitalCredentialsChooser, which independently verifies a
recent user activation, then rejected the request with NotAllowedError
even for a genuine tap.

Record the activation at the UI-process input receipt points
(handleMouseEvent, handleKeyboardEvent, handlePreventableTouchEvent,
handleUnpreventableTouchEvent) rather than in the send*Event functions.
Because the send*Event functions are re-entered when forwarding an event
to a site-isolated subframe, this also stops a single gesture from
re-stamping the timestamp and authorizing more than one chooser.

Speculative fix: WebKitTestRunner's synthesized taps do not exercise the
NotTracking gesture path that a real tap takes, so a deterministic layout
test was not possible. Verified manually in MobileSafari on iOS 27: get()
is rejected before the change and proceeds after.

* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::sendMouseEvent):
(WebKit::WebPageProxy::recordUIProcessUserActivation):
(WebKit::WebPageProxy::handleMouseEvent):
(WebKit::WebPageProxy::sendKeyEvent):
(WebKit::WebPageProxy::handleKeyboardEvent):
(WebKit::WebPageProxy::sendPreventableTouchEvent):
(WebKit::WebPageProxy::handlePreventableTouchEvent):
(WebKit::WebPageProxy::sendUnpreventableTouchEvent):
(WebKit::WebPageProxy::handleUnpreventableTouchEvent):
* Source/WebKit/UIProcess/WebPageProxy.h:

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



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

Reply via email to