⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 286785 in webkit


Ignore:
Timestamp:
Dec 9, 2021, 9:53:22 AM (5 years ago)
Author:
J Pascoe
Message:

[WebAuthn] Remove user gesture requirement for using platform authenticator on the web
https://bugs.webkit.org/show_bug.cgi?id=230893
<rdar://problem/79781342>

Reviewed by Brent Fulgham.

Source/WebCore:

Remove web authentication user gesture bypass quirk as it's no longer used.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldBypassUserGestureRequirementForWebAuthn const): Deleted.

  • page/Quirks.h:

Source/WebKit:

This patch loosens the user gesture requirement around using WebAuthn with respect to user gestures by
removing the Quirks.h allowlist of sites that get a freebie. Instead the new behavior is
all sites get one freebie, then on subsequent attempts they show a non-modal consent dialog.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::requestWebAuthenticationNoGesture):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::requestWebAuthenticationNoGesture):

  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:

(WebKit::WebAuthenticatorCoordinatorProxy::handleRequest):

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:

(WebKit::WebAuthenticatorCoordinator::processingUserGesture):

Tools:

This patch removes the Quirks allowlist of the freebie web authentication use without a gesture and replaces it with one freebie, then a consent sheet.

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelUIDelegate _webView:requestWebAuthenticationNoGestureForOrigin:completionHandler:]):
Test delegate

LayoutTests:

Modify layout tests to reflect new WebAuthn user gesture console message.

  • http/wpt/credential-management/credentialscontainer-store-basics.https-expected.txt:
  • http/wpt/webauthn/ctap-hid-failure.https-expected.txt:
  • http/wpt/webauthn/ctap-hid-success.https-expected.txt:
  • http/wpt/webauthn/ctap-nfc-failure.https-expected.txt:
  • http/wpt/webauthn/idl.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-local-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-u2f.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-local.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-nfc.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt:
Location:
trunk
Files:
44 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r286776 r286785  
     12021-12-09  J Pascoe  <j_pascoe@apple.com>
     2
     3        [WebAuthn] Remove user gesture requirement for using platform authenticator on the web
     4        https://bugs.webkit.org/show_bug.cgi?id=230893
     5        <rdar://problem/79781342>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        Modify layout tests to reflect new WebAuthn user gesture console message.
     10
     11        * http/wpt/credential-management/credentialscontainer-store-basics.https-expected.txt:
     12        * http/wpt/webauthn/ctap-hid-failure.https-expected.txt:
     13        * http/wpt/webauthn/ctap-hid-success.https-expected.txt:
     14        * http/wpt/webauthn/ctap-nfc-failure.https-expected.txt:
     15        * http/wpt/webauthn/idl.https-expected.txt:
     16        * http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https-expected.txt:
     17        * http/wpt/webauthn/public-key-credential-create-failure-hid.https-expected.txt:
     18        * http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt:
     19        * http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt:
     20        * http/wpt/webauthn/public-key-credential-create-failure-nfc.https-expected.txt:
     21        * http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https-expected.txt:
     22        * http/wpt/webauthn/public-key-credential-create-failure-u2f.https-expected.txt:
     23        * http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt:
     24        * http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt:
     25        * http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt:
     26        * http/wpt/webauthn/public-key-credential-create-success-nfc.https-expected.txt:
     27        * http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt:
     28        * http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https-expected.txt:
     29        * http/wpt/webauthn/public-key-credential-get-failure-hid.https-expected.txt:
     30        * http/wpt/webauthn/public-key-credential-get-failure-local-silent.https-expected.txt:
     31        * http/wpt/webauthn/public-key-credential-get-failure-local.https-expected.txt:
     32        * http/wpt/webauthn/public-key-credential-get-failure-nfc.https-expected.txt:
     33        * http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https-expected.txt:
     34        * http/wpt/webauthn/public-key-credential-get-failure-u2f.https-expected.txt:
     35        * http/wpt/webauthn/public-key-credential-get-failure.https-expected.txt:
     36        * http/wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt:
     37        * http/wpt/webauthn/public-key-credential-get-success-local.https-expected.txt:
     38        * http/wpt/webauthn/public-key-credential-get-success-nfc.https-expected.txt:
     39        * http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt:
     40
    1412021-12-09  Manuel Rego Casasnovas  <rego@igalia.com>
    242
  • trunk/LayoutTests/http/wpt/credential-management/credentialscontainer-store-basics.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    21
    32PASS navigator.credentials.store().
  • trunk/LayoutTests/http/wpt/webauthn/ctap-hid-failure.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     7CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    98
    109PASS CTAP HID with init sub stage data not sent error in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/ctap-hid-success.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    65
    76PASS CTAP HID with keep alive message in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/ctap-nfc-failure.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    32
    43PASS CTAP NFC with empty apdu response in a mock nfc authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/idl.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    32Description
    43
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    54
    65PASS PublicKeyCredential's [[create]] with malicious payload in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-hid.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    76
    87PASS PublicKeyCredential's [[create]] with timeout in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-local-silent.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    76
    87PASS PublicKeyCredential's [[create]] with unsupported public key credential parameters in a mock local authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-local.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    9 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     7CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     8CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    109
    1110PASS PublicKeyCredential's [[create]] with unsupported public key credential parameters in a mock local authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-nfc.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    87
    98PASS PublicKeyCredential's [[create]] with timeout in a mock nfc authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    87
    98PASS PublicKeyCredential's [[create]] with malformed APDU payload in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure-u2f.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    87
    98PASS PublicKeyCredential's [[create]] with malformed APDU payload in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-failure.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    9 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    107
    118PASS PublicKeyCredential's [[create]] with timeout
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-success-hid.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    9 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    10 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    11 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    12 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    13 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     7CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     8CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     9CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     10CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     11CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     12CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    1413
    1514PASS PublicKeyCredential's [[create]] with minimum options in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-success-local.https-expected.txt

    r276180 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    9 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     7CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     8CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    109
    1110PASS PublicKeyCredential's [[create]] with minimum options in a mock local authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-success-nfc.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    87
    98PASS PublicKeyCredential's [[create]] with minimum options in a mock nfc authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    87
    98PASS PublicKeyCredential's [[create]] with minimum options in a mock u2f authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    54
    65PASS PublicKeyCredential's [[get]] with malicious payload in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-hid.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    76
    87PASS PublicKeyCredential's [[get]] with timeout in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-local-silent.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    43
    54PASS PublicKeyCredential's [[get]] with no matched credentials in a mock local authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-local.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    54
    65PASS PublicKeyCredential's [[get]] with no matched credentials in a mock local authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-nfc.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    21
    32PASS PublicKeyCredential's [[get]] with timeout in a mock nfc authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    43
    54PASS PublicKeyCredential's [[get]] with malformed sign response in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure-u2f.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    65
    76PASS PublicKeyCredential's [[get]] with malformed sign response in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-failure.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    9 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    107
    118PASS PublicKeyCredential's [[get]] with timeout
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-success-hid.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    9 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     7CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     8CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    109
    1110PASS PublicKeyCredential's [[get]] with minimum options in a mock hid authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-success-local.https-expected.txt

    r276180 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    43
    54PASS PublicKeyCredential's [[get]] with minimum options in a mock local authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-success-nfc.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    32
    43PASS PublicKeyCredential's [[get]] with minimum options in a mock nfc authenticator.
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt

    r272345 r286785  
    1 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    2 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    3 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    4 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    5 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    6 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    7 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    8 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    9 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    10 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
    11 CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events.
     1CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     2CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     3CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     4CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     5CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     6CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     7CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     8CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     9CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
     10CONSOLE MESSAGE: User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events.
    1211
    1312PASS PublicKeyCredential's [[get]] with minimum options in a mock hid authenticator.
  • trunk/Source/WebCore/ChangeLog

    r286784 r286785  
     12021-12-09  J Pascoe  <j_pascoe@apple.com>
     2
     3        [WebAuthn] Remove user gesture requirement for using platform authenticator on the web
     4        https://bugs.webkit.org/show_bug.cgi?id=230893
     5        <rdar://problem/79781342>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        Remove web authentication user gesture bypass quirk as it's no longer used.
     10
     11        * page/Quirks.cpp:
     12        (WebCore::Quirks::shouldBypassUserGestureRequirementForWebAuthn const): Deleted.
     13        * page/Quirks.h:
     14
    1152021-12-09  Alan Bujtas  <zalan@apple.com>
    216
  • trunk/Source/WebCore/page/Quirks.cpp

    r286366 r286785  
    14211421}
    14221422
    1423 #if ENABLE(WEB_AUTHN)
    1424 bool Quirks::shouldBypassUserGestureRequirementForWebAuthn() const
    1425 {
    1426     if (!needsQuirks())
    1427         return false;
    1428 
    1429     auto host = m_document->topDocument().url().host();
    1430     if (equalLettersIgnoringASCIICase(host, "dropbox.com") || host.endsWithIgnoringASCIICase(".dropbox.com"))
    1431         return true;
    1432 
    1433     if (equalLettersIgnoringASCIICase(host, "microsoft.com") || host.endsWithIgnoringASCIICase(".microsoft.com"))
    1434         return true;
    1435 
    1436     if (equalLettersIgnoringASCIICase(host, "google.com") || host.endsWithIgnoringASCIICase(".google.com"))
    1437         return true;
    1438 
    1439     if (equalLettersIgnoringASCIICase(host, "twitter.com") || host.endsWithIgnoringASCIICase(".twitter.com"))
    1440         return true;
    1441 
    1442     if (equalLettersIgnoringASCIICase(host, "facebook.com") || host.endsWithIgnoringASCIICase(".facebook.com"))
    1443         return true;
    1444 
    1445     return false;
    1446 }
    1447 #endif
    1448 
    14491423#if ENABLE(IMAGE_ANALYSIS)
    14501424
  • trunk/Source/WebCore/page/Quirks.h

    r286366 r286785  
    148148#endif
    149149
    150 #if ENABLE(WEB_AUTHN)
    151     WEBCORE_EXPORT bool shouldBypassUserGestureRequirementForWebAuthn() const;
    152 #endif
    153 
    154150    static bool shouldOmitHTMLDocumentSupportedPropertyNames();
    155151
  • trunk/Source/WebKit/ChangeLog

    r286781 r286785  
     12021-12-09  J Pascoe  <j_pascoe@apple.com>
     2
     3        [WebAuthn] Remove user gesture requirement for using platform authenticator on the web
     4        https://bugs.webkit.org/show_bug.cgi?id=230893
     5        <rdar://problem/79781342>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        This patch loosens the user gesture requirement around using WebAuthn with respect to user gestures by
     10        removing the Quirks.h allowlist of sites that get a freebie. Instead the new behavior is
     11        all sites get one freebie, then on subsequent attempts they show a non-modal consent dialog.
     12
     13        * UIProcess/API/APIUIClient.h:
     14        (API::UIClient::requestWebAuthenticationNoGesture):
     15        * UIProcess/API/C/WKPage.cpp:
     16        (WKPageSetPageUIClient):
     17        * UIProcess/API/C/WKPageUIClient.h:
     18        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
     19        * UIProcess/Cocoa/UIDelegate.h:
     20        * UIProcess/Cocoa/UIDelegate.mm:
     21        (WebKit::UIDelegate::setDelegate):
     22        (WebKit::UIDelegate::UIClient::requestWebAuthenticationNoGesture):
     23        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
     24        (WebKit::WebAuthenticatorCoordinatorProxy::handleRequest):
     25        * WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:
     26        (WebKit::WebAuthenticatorCoordinator::processingUserGesture):
     27
    1282021-12-09  Chris Dumez  <cdumez@apple.com>
    229
  • trunk/Source/WebKit/UIProcess/API/APIUIClient.h

    r286640 r286785  
    201201#if ENABLE(WEB_AUTHN)
    202202    virtual void runWebAuthenticationPanel(WebKit::WebPageProxy&, WebAuthenticationPanel&, WebKit::WebFrameProxy&, WebKit::FrameInfoData&&, CompletionHandler<void(WebKit::WebAuthenticationPanelResult)>&& completionHandler) { completionHandler(WebKit::WebAuthenticationPanelResult::Unavailable); }
     203
     204    virtual void requestWebAuthenticationNoGesture(API::SecurityOrigin& origin, CompletionHandler<void(bool)>&& completionHandler)
     205    {
     206        completionHandler(true);
     207    }
    203208#endif
    204209
  • trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp

    r285980 r286785  
    119119
    120120template<> struct ClientTraits<WKPageUIClientBase> {
    121     typedef std::tuple<WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2, WKPageUIClientV3, WKPageUIClientV4, WKPageUIClientV5, WKPageUIClientV6, WKPageUIClientV7, WKPageUIClientV8, WKPageUIClientV9, WKPageUIClientV10, WKPageUIClientV11, WKPageUIClientV12, WKPageUIClientV13, WKPageUIClientV14, WKPageUIClientV15, WKPageUIClientV16> Versions;
     121    typedef std::tuple<WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2, WKPageUIClientV3, WKPageUIClientV4, WKPageUIClientV5, WKPageUIClientV6, WKPageUIClientV7, WKPageUIClientV8, WKPageUIClientV9, WKPageUIClientV10, WKPageUIClientV11, WKPageUIClientV12, WKPageUIClientV13, WKPageUIClientV14, WKPageUIClientV15, WKPageUIClientV16, WKPageUIClientV17> Versions;
    122122};
    123123
     
    21632163            completionHandler(WebKit::WebAuthenticationPanelResult::Presented);
    21642164        }
     2165
     2166        void requestWebAuthenticationNoGesture(API::SecurityOrigin&, CompletionHandler<void(bool)>&& completionHandler) final
     2167        {
     2168            if (!m_client.requestWebAuthenticationNoGesture) {
     2169                completionHandler(true);
     2170                return;
     2171            }
     2172
     2173            completionHandler(true);
     2174        }
    21652175#endif
    21662176        void decidePolicyForSpeechRecognitionPermissionRequest(WebPageProxy& page, API::SecurityOrigin& origin, CompletionHandler<void(bool)>&& completionHandler) final
  • trunk/Source/WebKit/UIProcess/API/C/WKPageUIClient.h

    r274558 r286785  
    137137
    138138typedef void (*WKPageRunWebAuthenticationPanelCallback)();
     139typedef void (*WKPageRequestWebAuthenticationNoGestureCallback)();
    139140typedef void (*WKPageDecidePolicyForSpeechRecognitionPermissionRequestCallback)(WKPageRef page, WKSecurityOriginRef topOrigin, WKSpeechRecognitionPermissionCallbackRef callback);
    140141
     
    15821583} WKPageUIClientV16;
    15831584
     1585typedef struct WKPageUIClientV17 {
     1586    WKPageUIClientBase                                                  base;
     1587
     1588    // Version 0.
     1589    WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
     1590    WKPageUIClientCallback                                              showPage;
     1591    WKPageUIClientCallback                                              close;
     1592    WKPageTakeFocusCallback                                             takeFocus;
     1593    WKPageFocusCallback                                                 focus;
     1594    WKPageUnfocusCallback                                               unfocus;
     1595    WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
     1596    WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
     1597    WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
     1598    WKPageSetStatusTextCallback                                         setStatusText;
     1599    WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
     1600    WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
     1601    WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
     1602    WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
     1603    WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
     1604    WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
     1605    WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
     1606    WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
     1607    WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
     1608    WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
     1609    WKPageGetIsResizableCallback                                        isResizable;
     1610    WKPageSetIsResizableCallback                                        setIsResizable;
     1611    WKPageGetWindowFrameCallback                                        getWindowFrame;
     1612    WKPageSetWindowFrameCallback                                        setWindowFrame;
     1613    WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
     1614    WKPageUIClientCallback                                              didDraw;
     1615    WKPageUIClientCallback                                              pageDidScroll;
     1616    WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
     1617    WKPageRunOpenPanelCallback                                          runOpenPanel;
     1618    WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
     1619    WKPageHeaderHeightCallback                                          headerHeight;
     1620    WKPageFooterHeightCallback                                          footerHeight;
     1621    WKPageDrawHeaderCallback                                            drawHeader;
     1622    WKPageDrawFooterCallback                                            drawFooter;
     1623    WKPagePrintFrameCallback                                            printFrame;
     1624    WKPageUIClientCallback                                              runModal;
     1625    void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
     1626    WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
     1627    void*                                                               shouldInterruptJavaScript_unavailable;
     1628
     1629    // Version 1.
     1630    WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
     1631    WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
     1632    WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
     1633    WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
     1634
     1635    // Version 2.
     1636    WKPageShowColorPickerCallback                                       showColorPicker;
     1637    WKPageHideColorPickerCallback                                       hideColorPicker;
     1638    WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
     1639
     1640    // Version 3.
     1641    WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
     1642
     1643    // Version 4.
     1644    void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
     1645    void*                                                               unused3; // Used to be didRecognizeLongMousePress.
     1646    void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
     1647    WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
     1648
     1649    // Version 5.
     1650    WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
     1651    WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
     1652    WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
     1653    WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
     1654    WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
     1655    void*                                                               unused5; // Used to be mediaSessionMetadataDidChange.
     1656
     1657    // Version 6.
     1658    WKPageCreateNewPageCallback                                         createNewPage;
     1659    WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
     1660    WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
     1661    WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
     1662    WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
     1663
     1664    // Version 7.
     1665    WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
     1666    WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
     1667
     1668    // Version 8.
     1669    WKRequestPointerLockCallback                                        requestPointerLock;
     1670    WKDidLosePointerLockCallback                                        didLosePointerLock;
     1671
     1672    // Version 9.
     1673    WKHandleAutoplayEventCallback                                       handleAutoplayEvent;
     1674
     1675    // Version 10.
     1676    WKHasVideoInPictureInPictureDidChangeCallback                       hasVideoInPictureInPictureDidChange;
     1677    WKDidExceedBackgroundResourceLimitWhileInForegroundCallback         didExceedBackgroundResourceLimitWhileInForeground;
     1678
     1679    // Version 11.
     1680    WKPageDidResignInputElementStrongPasswordAppearanceCallback         didResignInputElementStrongPasswordAppearance;
     1681
     1682    // Version 12.
     1683    WKPageRequestStorageAccessConfirmCallback                           requestStorageAccessConfirm;
     1684
     1685    // Version 13.
     1686    WKPageShouldAllowDeviceOrientationAndMotionAccessCallback           shouldAllowDeviceOrientationAndMotionAccess;
     1687
     1688    // Version 14.
     1689    WKPageRunWebAuthenticationPanelCallback                             runWebAuthenticationPanel;
     1690
     1691    // Version 15.
     1692    WKPageDecidePolicyForSpeechRecognitionPermissionRequestCallback     decidePolicyForSpeechRecognitionPermissionRequest;
     1693
     1694    // Version 16.
     1695    WKPageDecidePolicyForMediaKeySystemPermissionRequestCallback        decidePolicyForMediaKeySystemPermissionRequest;
     1696
     1697    // Version 17.
     1698    WKPageRequestWebAuthenticationNoGestureCallback                     requestWebAuthenticationNoGesture;
     1699
     1700} WKPageUIClientV17;
    15841701
    15851702#ifdef __cplusplus
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

    r286640 r286785  
    162162
    163163- (void)_webView:(WKWebView *)webView takeFocus:(_WKFocusDirection)direction WK_API_AVAILABLE(macos(10.13.4), ios(12.2));
     164
     165- (void)_webView:(WKWebView *)webView requestWebAuthenticationNoGestureForOrigin:(WKSecurityOrigin *)orgin completionHandler:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(10.15.4), ios(13.4));
    164166
    165167- (void)_webView:(WKWebView *)webView runWebAuthenticationPanel:(_WKWebAuthenticationPanel *)panel initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(_WKWebAuthenticationPanelResult))completionHandler WK_API_AVAILABLE(macos(10.15.4), ios(13.4));
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h

    r286640 r286785  
    169169#if ENABLE(WEB_AUTHN)
    170170        void runWebAuthenticationPanel(WebPageProxy&, API::WebAuthenticationPanel&, WebFrameProxy&, FrameInfoData&&, CompletionHandler<void(WebAuthenticationPanelResult)>&&) final;
     171        void requestWebAuthenticationNoGesture(API::SecurityOrigin&, CompletionHandler<void(bool)>&&) final;
    171172#endif
    172173        void decidePolicyForSpeechRecognitionPermissionRequest(WebPageProxy&, API::SecurityOrigin&, CompletionHandler<void(bool)>&&) final;
     
    264265#if ENABLE(WEB_AUTHN)
    265266        bool webViewRunWebAuthenticationPanelInitiatedByFrameCompletionHandler : 1;
     267        bool webViewRequestWebAuthenticationNoGestureForOriginCompletionHandler : 1;
    266268#endif
    267269        bool webViewDidEnableInspectorBrowserDomain : 1;
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm

    r286658 r286785  
    188188#if ENABLE(WEB_AUTHN)
    189189    m_delegateMethods.webViewRunWebAuthenticationPanelInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(_webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:)];
     190    m_delegateMethods.webViewRequestWebAuthenticationNoGestureForOriginCompletionHandler = [delegate respondsToSelector:@selector(_webView:requestWebAuthenticationNoGestureForOrigin:completionHandler:)];
    190191#endif
    191192   
     
    15751576}
    15761577
     1578void UIDelegate::UIClient::requestWebAuthenticationNoGesture(API::SecurityOrigin& origin, CompletionHandler<void(bool)>&& completionHandler)
     1579{
     1580    if (!m_uiDelegate)
     1581        return completionHandler(false);
     1582
     1583    if (!m_uiDelegate->m_delegateMethods.webViewRequestWebAuthenticationNoGestureForOriginCompletionHandler)
     1584        return completionHandler(false);
     1585
     1586    auto delegate = m_uiDelegate->m_delegate.get();
     1587    if (!delegate)
     1588        return completionHandler(false);
     1589
     1590    auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:requestWebAuthenticationNoGestureForOrigin:completionHandler:));
     1591    [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate->m_webView.get().get() requestWebAuthenticationNoGestureForOrigin: wrapper(origin) completionHandler:makeBlockPtr([completionHandler = WTFMove(completionHandler), checker = WTFMove(checker)] (BOOL result) mutable {
     1592        if (checker->completionHandlerHasBeenCalled())
     1593            return;
     1594        checker->didCallCompletionHandler();
     1595        completionHandler(result);
     1596    }).get()];
     1597}
     1598
    15771599#endif // ENABLE(WEB_AUTHN)
    15781600
  • trunk/Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp

    r285864 r286785  
    2929#if ENABLE(WEB_AUTHN)
    3030
     31#include "APIUIClient.h"
    3132#include "AuthenticatorManager.h"
    3233#include "LocalService.h"
     
    6869void WebAuthenticatorCoordinatorProxy::handleRequest(WebAuthenticationRequestData&& data, RequestCompletionHandler&& handler)
    6970{
    70     auto& authenticatorManager = m_webPageProxy.websiteDataStore().authenticatorManager();
     71    auto origin = API::SecurityOrigin::create(data.frameInfo.securityOrigin.protocol, data.frameInfo.securityOrigin.host, data.frameInfo.securityOrigin.port);
    7172
     73    CompletionHandler<void(bool)> afterConsent = [this, data = WTFMove(data), handler = WTFMove(handler)] (bool result) mutable {
     74        auto& authenticatorManager = m_webPageProxy.websiteDataStore().authenticatorManager();
     75        if (result) {
    7276#if HAVE(UNIFIED_ASC_AUTH_UI)
    73     if (!authenticatorManager.isMock() && !authenticatorManager.isVirtual()) {
    74         auto context = contextForRequest(WTFMove(data));
    75         // performRequest calls out to ASCAgent which will then call [_WKWebAuthenticationPanel makeCredential/getAssertionWithChallenge]
    76         // which calls authenticatorManager.handleRequest(..)
    77         performRequest(context, WTFMove(handler));
    78         return;
    79     }
     77                if (!authenticatorManager.isMock() && !authenticatorManager.isVirtual()) {
     78                    auto context = contextForRequest(WTFMove(data));
     79                    // performRequest calls out to ASCAgent which will then call [_WKWebAuthenticationPanel makeCredential/getAssertionWithChallenge]
     80                    // which calls authenticatorManager.handleRequest(..)
     81                    performRequest(context, WTFMove(handler));
     82                    return;
     83                }
    8084#endif // HAVE(UNIFIED_ASC_AUTH_UI)
    8185
    82     auto callback = [handler = WTFMove(handler)] (std::variant<Ref<AuthenticatorResponse>, ExceptionData>&& result) mutable {
    83         ASSERT(RunLoop::isMain());
    84         WTF::switchOn(result, [&](const Ref<AuthenticatorResponse>& response) {
    85             handler(response->data(), response->attachment(), { });
    86         }, [&](const ExceptionData& exception) {
    87             handler({ }, (AuthenticatorAttachment)0, exception);
    88         });
     86            authenticatorManager.handleRequest(WTFMove(data), [handler = WTFMove(handler)] (std::variant<Ref<AuthenticatorResponse>, ExceptionData>&& result) mutable {
     87                ASSERT(RunLoop::isMain());
     88                WTF::switchOn(result, [&](const Ref<AuthenticatorResponse>& response) {
     89                    handler(response->data(), response->attachment(), { });
     90                }, [&](const ExceptionData& exception) {
     91                    handler({ }, (AuthenticatorAttachment)0, exception);
     92                });
     93            });
     94        } else
     95            handler({ }, (AuthenticatorAttachment)0, ExceptionData { NotAllowedError, "This request has been cancelled by the user." });
    8996    };
    90     authenticatorManager.handleRequest(WTFMove(data), WTFMove(callback));
     97   
     98    if (!data.processingUserGesture)
     99        m_webPageProxy.uiClient().requestWebAuthenticationNoGesture(origin, WTFMove(afterConsent));
     100    else
     101        afterConsent(true);
    91102}
    92103
  • trunk/Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp

    r284071 r286785  
    126126bool WebAuthenticatorCoordinator::processingUserGesture(const Frame& frame, const FrameIdentifier& frameID)
    127127{
    128     bool needsQuirk = frame.document() && frame.document()->quirks().shouldBypassUserGestureRequirementForWebAuthn();
    129     auto processingUserGesture = UserGestureIndicator::processingUserGestureForMedia() || (!m_requireUserGesture && needsQuirk);
    130     if (!processingUserGesture)
    131         m_webPage.addConsoleMessage(frameID, MessageSource::Other, MessageLevel::Warning, "User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' within user activated events."_s);
    132 
    133     m_requireUserGesture = true;
    134     return processingUserGesture;
     128    auto processingUserGesture = UserGestureIndicator::processingUserGestureForMedia();
     129    if (!processingUserGesture && m_requireUserGesture)
     130        m_webPage.addConsoleMessage(frameID, MessageSource::Other, MessageLevel::Warning, "User gesture is not detected. To use the WebAuthn API, call 'navigator.credentials.create' or 'navigator.credentials.get' within user activated events."_s);
     131    if (processingUserGesture && m_requireUserGesture)
     132        m_requireUserGesture = false;
     133    else
     134        m_requireUserGesture = true;
     135    return processingUserGesture || !m_requireUserGesture;
    135136}
    136137
  • trunk/Tools/ChangeLog

    r286777 r286785  
     12021-12-09  J Pascoe  <j_pascoe@apple.com>
     2
     3        [WebAuthn] Remove user gesture requirement for using platform authenticator on the web
     4        https://bugs.webkit.org/show_bug.cgi?id=230893
     5        <rdar://problem/79781342>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        This patch removes the Quirks allowlist of the freebie web authentication use without a gesture and replaces it with one freebie, then a consent sheet.
     10
     11        * TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:
     12        (-[TestWebAuthenticationPanelUIDelegate _webView:requestWebAuthenticationNoGestureForOrigin:completionHandler:]):
     13        Test delegate
     14
    1152021-12-09  Commit Queue  <commit-queue@webkit.org>
    216
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm

    r286746 r286785  
    232232}
    233233
     234- (void)_webView:(WKWebView *)webView requestWebAuthenticationNoGestureForOrigin:(WKSecurityOrigin *)orgin completionHandler:(void (^)(BOOL))completionHandler
     235{
     236    completionHandler(true);
     237}
     238
    234239- (void)_webView:(WKWebView *)webView runWebAuthenticationPanel:(_WKWebAuthenticationPanel *)panel initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(_WKWebAuthenticationPanelResult))completionHandler
    235240{
Note: See TracChangeset for help on using the changeset viewer.