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

Reply via email to