Changeset 291321 in webkit


Ignore:
Timestamp:
Mar 15, 2022 4:23:54 PM (4 months ago)
Author:
J Pascoe
Message:

[WebAuthn] Mock UI interactions whenever virtual authenticators are in use.
https://bugs.webkit.org/show_bug.cgi?id=237856
rdar://problem/90274854

Reviewed by Brent Fulgham.

Tested by wpt's webauthn tests.

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp:

(WebKit::VirtualAuthenticatorManager::runPanel):
(WebKit::VirtualAuthenticatorManager::selectAssertionResponse):
(WebKit::VirtualAuthenticatorManager::decidePolicyForLocalAuthenticator):

  • UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h:
Location:
trunk/Source/WebKit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r291320 r291321  
     12022-03-15  J Pascoe  <j_pascoe@apple.com>
     2
     3        [WebAuthn] Mock UI interactions whenever virtual authenticators are in use.
     4        https://bugs.webkit.org/show_bug.cgi?id=237856
     5        rdar://problem/90274854
     6
     7        Reviewed by Brent Fulgham.
     8
     9        Tested by wpt's webauthn tests.
     10
     11        * UIProcess/WebAuthentication/AuthenticatorManager.h:
     12        * UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp:
     13        (WebKit::VirtualAuthenticatorManager::runPanel):
     14        (WebKit::VirtualAuthenticatorManager::selectAssertionResponse):
     15        (WebKit::VirtualAuthenticatorManager::decidePolicyForLocalAuthenticator):
     16        * UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h:
     17
    1182022-03-15  Chris Dumez  <cdumez@apple.com>
    219
  • trunk/Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.h

    r285267 r291321  
    8181    void invokePendingCompletionHandler(Respond&&);
    8282
     83    void decidePolicyForLocalAuthenticator(CompletionHandler<void(LocalAuthenticatorPolicy)>&&);
     84    TransportSet getTransports() const;
     85    virtual void runPanel();
     86    void selectAssertionResponse(Vector<Ref<WebCore::AuthenticatorAssertionResponse>>&&, WebAuthenticationSource, CompletionHandler<void(WebCore::AuthenticatorAssertionResponse*)>&&);
     87    void startDiscovery(const TransportSet&);
     88
    8389private:
    8490    enum class Mode {
     
    97103    void authenticatorStatusUpdated(WebAuthenticationStatus) final;
    98104    void requestPin(uint64_t retries, CompletionHandler<void(const WTF::String&)>&&) final;
    99     void selectAssertionResponse(Vector<Ref<WebCore::AuthenticatorAssertionResponse>>&&, WebAuthenticationSource, CompletionHandler<void(WebCore::AuthenticatorAssertionResponse*)>&&) final;
    100     void decidePolicyForLocalAuthenticator(CompletionHandler<void(LocalAuthenticatorPolicy)>&&) final;
    101105    void requestLAContextForUserVerification(CompletionHandler<void(LAContext *)>&&) final;
    102106    void cancelRequest() final;
     
    109113    virtual void runPresenterInternal(const TransportSet&);
    110114
    111     void startDiscovery(const TransportSet&);
    112115    void initTimeOutTimer();
    113116    void timeOutTimerFired();
    114     void runPanel();
    115117    void runPresenter();
    116118    void restartDiscovery();
    117     TransportSet getTransports() const;
    118119    void dispatchPanelClientCall(Function<void(const API::WebAuthenticationPanel&)>&&) const;
    119120
  • trunk/Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp

    r288950 r291321  
    6464}
    6565
     66void VirtualAuthenticatorManager::runPanel()
     67{
     68    auto transports = getTransports();
     69    if (transports.isEmpty()) {
     70        cancel();
     71        return;
     72    }
     73
     74    startDiscovery(transports);
     75}
     76
     77void VirtualAuthenticatorManager::selectAssertionResponse(Vector<Ref<WebCore::AuthenticatorAssertionResponse>>&& responses, WebAuthenticationSource source, CompletionHandler<void(WebCore::AuthenticatorAssertionResponse*)>&& completionHandler)
     78{
     79    completionHandler(responses[0].ptr());
     80}
     81
     82void VirtualAuthenticatorManager::decidePolicyForLocalAuthenticator(CompletionHandler<void(LocalAuthenticatorPolicy)>&& completionHandler)
     83{
     84    completionHandler(LocalAuthenticatorPolicy::Allow);
     85}
     86
    6687} // namespace WebKit
    6788
  • trunk/Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h

    r285267 r291321  
    4141
    4242    bool isVirtual() const final { return true; }
     43    void runPanel();
     44    void selectAssertionResponse(Vector<Ref<WebCore::AuthenticatorAssertionResponse>>&&, WebAuthenticationSource, CompletionHandler<void(WebCore::AuthenticatorAssertionResponse*)>&&);
     45    void decidePolicyForLocalAuthenticator(CompletionHandler<void(LocalAuthenticatorPolicy)>&&);
    4346
    4447private:
Note: See TracChangeset for help on using the changeset viewer.