NEW318408
Digital Credentials: concurrent "wait" requests from separate processes can clobber WebPageProxy's single pending-handler slot under site isolation
https://bugs.webkit.org/show_bug.cgi?id=318408
Summary Digital Credentials: concurrent "wait" requests from separate processes can c...
Marcos Caceres
Reported 2026-07-01 22:24:19 PDT
Under site isolation, a cross-origin subframe runs in its own WebProcess with its own WebCore::Page and CredentialRequestCoordinator. The concurrent-request guard in CredentialRequestCoordinator::prepareCredentialRequests only serializes requests within a single process (it checks that coordinator's InteractionState). Two cross-origin iframes in different processes therefore each pass their own guard and both dispatch ShowDigitalCredentialsChooser to the same WebPageProxy. WebPageProxy tracks a pending "wait"-parked request with a single slot (m_pendingDigitalCredentialsWaitContextID for the BiDi automation agent; internals().testingPendingDigitalCredentialHandler for WebKitTestRunner). When a second concurrent request arrives while one is parked, the slot is overwritten and the first request's parked completion handler is orphaned (never settled until session teardown). In debug builds this trips ASSERT(!m_pendingDigitalCredentialsWaitContextID) in WebPageProxy::showDigitalCredentialsChooser. This affects only automated testing of the Digital Credentials "wait"/virtual-wallet path across site-isolated cross-origin iframes; same-process requests are correctly serialized.
Attachments
Radar WebKit Bug Importer
Comment 1 2026-07-01 22:24:24 PDT
Note You need to log in before you can comment on or make changes to this bug.