Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: fc22dff35d852f9e43f4d3f40924fd368b7a29e3
https://github.com/WebKit/WebKit/commit/fc22dff35d852f9e43f4d3f40924fd368b7a29e3
Author: Marcos Caceres <[email protected]>
Date: 2026-07-02 (Thu, 02 Jul 2026)
Changed paths:
M Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp
M Source/WebCore/Modules/identity/CredentialRequestCoordinatorClient.h
M
Source/WebCore/Modules/identity/dummy/DummyCredentialRequestCoordinatorClient.cpp
M
Source/WebCore/Modules/identity/dummy/DummyCredentialRequestCoordinatorClient.h
M Source/WebCore/loader/EmptyClients.cpp
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/Sources.txt
A Source/WebKit/UIProcess/Automation/BidiDigitalCredentialsAgent.cpp
A Source/WebKit/UIProcess/Automation/BidiDigitalCredentialsAgent.h
M Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.cpp
M Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.h
A Source/WebKit/UIProcess/Automation/protocol/BidiDigitalCredentials.json
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.messages.in
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M
Source/WebKit/WebProcess/DigitalCredentials/DigitalCredentialsCoordinator.cpp
M
Source/WebKit/WebProcess/DigitalCredentials/DigitalCredentialsCoordinator.h
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M WebDriverTests/imported/w3c/tools/webdriver/webdriver/bidi/client.py
M
WebDriverTests/imported/w3c/tools/webdriver/webdriver/bidi/modules/__init__.py
A
WebDriverTests/imported/w3c/tools/webdriver/webdriver/bidi/modules/digital_credentials.py
A
WebDriverTests/imported/w3c/webdriver/tests/bidi/external/digital_credentials/__init__.py
A
WebDriverTests/imported/w3c/webdriver/tests/bidi/external/digital_credentials/set_virtual_wallet_behavior/__init__.py
A
WebDriverTests/imported/w3c/webdriver/tests/bidi/external/digital_credentials/set_virtual_wallet_behavior/set_virtual_wallet_behavior.py
Log Message:
-----------
[Digital Credentials] Add WebDriver BiDi digitalCredentials module for
automated testing
rdar://168941907
https://bugs.webkit.org/show_bug.cgi?id=306292
Reviewed by BJ Burg.
Add a WebDriver BiDi digitalCredentials module that allows automated testing
of the Digital Credentials API by simulating wallet behavior (respond, decline,
wait) without requiring a real credential provider.
The simulated wallet behavior is looked up for the requesting frame's browsing
context, falling back to the session's default behavior, matching the Digital
Credentials specification's "handle virtual wallet behavior" algorithm. To do
this, the requesting frame's identifier is threaded from the credential request
coordinator down to the UIProcess chooser entry point.
A "wait" behavior parks the chooser completion handler so the request stays
pending. The handler is now released when the request is dismissed on abort or
document teardown, not only when the session ends, so a waiting request cannot
leak past the document that made it. The completion callback also tolerates a
reply that arrives after the request was already aborted.
* Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp:
(WebCore::CredentialRequestCoordinator::initiateTheCredentialRequest):
(WebCore::CredentialRequestCoordinator::processCredentialChooserResponse):
* Source/WebCore/Modules/identity/CredentialRequestCoordinatorClient.h:
*
Source/WebCore/Modules/identity/dummy/DummyCredentialRequestCoordinatorClient.cpp:
(WebCore::DummyCredentialRequestCoordinatorClient::showDigitalCredentialsChooser):
*
Source/WebCore/Modules/identity/dummy/DummyCredentialRequestCoordinatorClient.h:
* Source/WebCore/loader/EmptyClients.cpp:
* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/Automation/BidiDigitalCredentialsAgent.cpp: Added.
(WebKit::toPresentationProtocol):
(WebKit::BidiDigitalCredentialsAgent::BidiDigitalCredentialsAgent):
(WebKit::BidiDigitalCredentialsAgent::~BidiDigitalCredentialsAgent):
(WebKit::BidiDigitalCredentialsAgent::setVirtualWalletBehavior):
(WebKit::BidiDigitalCredentialsAgent::behaviorForContext const):
(WebKit::BidiDigitalCredentialsAgent::abortPendingHandler):
(WebKit::BidiDigitalCredentialsAgent::holdPendingHandler):
(WebKit::BidiDigitalCredentialsAgent::releasePendingHandler):
(WebKit::BidiDigitalCredentialsAgent::cancelAllPendingRequests):
* Source/WebKit/UIProcess/Automation/BidiDigitalCredentialsAgent.h: Added.
* Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.cpp:
(WebKit::WebDriverBidiProcessor::WebDriverBidiProcessor):
* Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.h:
* Source/WebKit/UIProcess/Automation/protocol/BidiDigitalCredentials.json:
Added.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showDigitalCredentialsChooser):
(WebKit::WebPageProxy::dismissDigitalCredentialsChooser):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/DigitalCredentials/DigitalCredentialsCoordinator.cpp:
(WebKit::DigitalCredentialsCoordinator::showDigitalCredentialsChooser):
* Source/WebKit/WebProcess/DigitalCredentials/DigitalCredentialsCoordinator.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::showDigitalCredentialsChooser):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::showDigitalCredentialsChooser):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* WebDriverTests/imported/w3c/tools/webdriver/webdriver/bidi/client.py:
(BidiSession.__init__):
*
WebDriverTests/imported/w3c/tools/webdriver/webdriver/bidi/modules/__init__.py:
*
WebDriverTests/imported/w3c/tools/webdriver/webdriver/bidi/modules/digital_credentials.py:
Added.
(DigitalCredentials):
(DigitalCredentials.set_virtual_wallet_behavior):
*
WebDriverTests/imported/w3c/webdriver/tests/bidi/external/digital_credentials/__init__.py:
Added.
*
WebDriverTests/imported/w3c/webdriver/tests/bidi/external/digital_credentials/set_virtual_wallet_behavior/__init__.py:
Added.
*
WebDriverTests/imported/w3c/webdriver/tests/bidi/external/digital_credentials/set_virtual_wallet_behavior/set_virtual_wallet_behavior.py:
Added.
(test_set_virtual_wallet_behavior_respond):
(test_set_virtual_wallet_behavior_decline):
(test_set_virtual_wallet_behavior_wait):
(test_set_virtual_wallet_behavior_clear):
(test_set_virtual_wallet_behavior_invalid_respond_no_protocol):
(test_set_virtual_wallet_behavior_invalid_decline_with_response):
(test_set_virtual_wallet_behavior_respond_end_to_end):
(test_set_virtual_wallet_behavior_wait_is_aborted):
Canonical link: https://commits.webkit.org/316435@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications