Changeset 270616 in webkit


Ignore:
Timestamp:
Dec 10, 2020 12:41:43 AM (3 years ago)
Author:
jiewen_tan@apple.com
Message:

[WebAuthn] Adopt new UI for the Security Key makeCredential flow
https://bugs.webkit.org/show_bug.cgi?id=219708
<rdar://problem/72154735>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch adopts the new AuthenticationServices' UI. The idea is to use AuthenticatorPresenterCoordinator
as the middle layer to connect to the new UI while keeping the existing interfaces the same in the AuthenticatorManager
to handle the interactions between UI and authenticators.

Covered by manual tests.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h: Added.

SPI for the new UI.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
  • Scripts/process-entitlements.sh:

Added new sandbox rules for Remote SpringBoard services which are used by the new UI.

  • SourcesCocoa.txt:

Paperwork.

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::handleRequest):
(WebKit::AuthenticatorManager::cancel):
(WebKit::AuthenticatorManager::enableModernWebAuthentication):
(WebKit::AuthenticatorManager::clearState):
(WebKit::AuthenticatorManager::serviceStatusUpdated):
(WebKit::AuthenticatorManager::authenticatorStatusUpdated):
(WebKit::AuthenticatorManager::requestPin):
(WebKit::AuthenticatorManager::selectAssertionResponse):
(WebKit::AuthenticatorManager::startDiscovery):
(WebKit::AuthenticatorManager::runPanel):
(WebKit::AuthenticatorManager::runPresenter):
(WebKit::AuthenticatorManager::invokePendingCompletionHandler):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:

Teached AuthenticatorManager to use the new UI's presenter when it is available. Otherwise, it falls back to the old UI.

  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h: Added.
  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm: Added.
  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h: Added.
  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm: Added.

(WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::updatePresenter):
(WebKit::AuthenticatorPresenterCoordinator::requestPin):
(WebKit::AuthenticatorPresenterCoordinator::selectAssertionResponse):
(WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):

  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.h: Added.
  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm: Added.

(-[WKASCAuthorizationPresenterDelegate initWithCoordinator:]):
(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):
(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:validateUserEnteredPIN:completionHandler:]):
Introduced the AuthenticatorPresenterCoordinator to handle the new UI.

  • WebAuthnProcess/WebAuthnProcess.cpp:

(WebKit::WebAuthnProcess::WebAuthnProcess):
(WebKit::WebAuthnProcess::setMockWebAuthenticationConfiguration):
Teached WebAuthnProcess to inform AuthenticatorManager about its existence.

  • WebKit.xcodeproj/project.pbxproj:

Paperwork.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(TestWebKitAPI::TEST):
Adjusted to the new behavior.

Location:
trunk
Files:
7 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r270614 r270616  
     12020-12-10  Jiewen Tan  <jiewen_tan@apple.com>
     2
     3        [WebAuthn] Adopt new UI for the Security Key makeCredential flow
     4        https://bugs.webkit.org/show_bug.cgi?id=219708
     5        <rdar://problem/72154735>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        This patch adopts the new AuthenticationServices' UI. The idea is to use AuthenticatorPresenterCoordinator
     10        as the middle layer to connect to the new UI while keeping the existing interfaces the same in the AuthenticatorManager
     11        to handle the interactions between UI and authenticators.
     12
     13        Covered by manual tests.
     14
     15        * Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h: Added.
     16        SPI for the new UI.
     17
     18        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
     19        * Scripts/process-entitlements.sh:
     20        Added new sandbox rules for Remote SpringBoard services which are used by the new UI.
     21
     22        * SourcesCocoa.txt:
     23        Paperwork.
     24
     25        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
     26        (WebKit::AuthenticatorManager::handleRequest):
     27        (WebKit::AuthenticatorManager::cancel):
     28        (WebKit::AuthenticatorManager::enableModernWebAuthentication):
     29        (WebKit::AuthenticatorManager::clearState):
     30        (WebKit::AuthenticatorManager::serviceStatusUpdated):
     31        (WebKit::AuthenticatorManager::authenticatorStatusUpdated):
     32        (WebKit::AuthenticatorManager::requestPin):
     33        (WebKit::AuthenticatorManager::selectAssertionResponse):
     34        (WebKit::AuthenticatorManager::startDiscovery):
     35        (WebKit::AuthenticatorManager::runPanel):
     36        (WebKit::AuthenticatorManager::runPresenter):
     37        (WebKit::AuthenticatorManager::invokePendingCompletionHandler):
     38        * UIProcess/WebAuthentication/AuthenticatorManager.h:
     39        Teached AuthenticatorManager to use the new UI's presenter when it is available. Otherwise, it falls back to the old UI.
     40
     41        * UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h: Added.
     42        * UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm: Added.
     43        * UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h: Added.
     44        * UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm: Added.
     45        (WebKit::AuthenticatorPresenterCoordinator::AuthenticatorPresenterCoordinator):
     46        (WebKit::AuthenticatorPresenterCoordinator::updatePresenter):
     47        (WebKit::AuthenticatorPresenterCoordinator::requestPin):
     48        (WebKit::AuthenticatorPresenterCoordinator::selectAssertionResponse):
     49        (WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):
     50        * UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.h: Added.
     51        * UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm: Added.
     52        (-[WKASCAuthorizationPresenterDelegate initWithCoordinator:]):
     53        (-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):
     54        (-[WKASCAuthorizationPresenterDelegate authorizationPresenter:validateUserEnteredPIN:completionHandler:]):
     55        Introduced the AuthenticatorPresenterCoordinator to handle the new UI.
     56
     57        * WebAuthnProcess/WebAuthnProcess.cpp:
     58        (WebKit::WebAuthnProcess::WebAuthnProcess):
     59        (WebKit::WebAuthnProcess::setMockWebAuthenticationConfiguration):
     60        Teached WebAuthnProcess to inform AuthenticatorManager about its existence.
     61
     62        * WebKit.xcodeproj/project.pbxproj:
     63        Paperwork.
     64
    1652020-12-09  Per Arne Vollan  <pvollan@apple.com>
    266
  • trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb

    r269554 r270616  
    642642(allow mach-lookup
    643643    (global-name "com.apple.nfcd.hwmanager"))
     644
     645;; Allow accesses to the Springboard view services.
     646(allow mach-lookup
     647    (global-name "com.apple.frontboard.systemappservices"))
  • trunk/Source/WebKit/Scripts/process-entitlements.sh

    r270463 r270616  
    261261    plistbuddy Add :com.apple.mobileactivationd.spi bool YES
    262262
     263    plistbuddy Add :com.apple.springboard.remote-alert bool YES
     264    plistbuddy Add :com.apple.frontboard.launchapplications bool YES
     265
    263266    plistbuddy Add :seatbelt-profiles array
    264267    plistbuddy Add :seatbelt-profiles:0 string com.apple.WebKit.WebAuthn
  • trunk/Source/WebKit/SourcesCocoa.txt

    r270587 r270616  
    540540
    541541UIProcess/WebAuthentication/Cocoa/AppAttestInternalSoftLink.mm @no-unify
     542UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm @no-unify
     543UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm
    542544UIProcess/WebAuthentication/Cocoa/HidConnection.mm
    543545UIProcess/WebAuthentication/Cocoa/HidService.mm
     
    549551UIProcess/WebAuthentication/Cocoa/NfcConnection.mm
    550552UIProcess/WebAuthentication/Cocoa/NfcService.mm
     553UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm
    551554UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.mm
    552555UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm
  • trunk/Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp

    r269168 r270616  
    3232#include "APIWebAuthenticationPanel.h"
    3333#include "APIWebAuthenticationPanelClient.h"
     34#include "AuthenticatorPresenterCoordinator.h"
    3435#include "LocalService.h"
    3536#include "NfcService.h"
     
    165166    initTimeOutTimer();
    166167
    167     // FIXME<rdar://problem/70822834>: The WebPageProxy is used to determine whether or not we are in the UIProcess.
     168    // FIXME<rdar://problem/70822834>: The m_isWebAuthenticationModernEnabled is used to determine
     169    // whether or not we are in the UIProcess.
    168170    // If so, continue to the old route. Otherwise, use the modern WebAuthn process way.
    169     if (m_pendingRequestData.page) {
     171    if (!m_isWebAuthenticationModernEnabled) {
    170172        runPanel();
    171173        return;
    172174    }
    173     startDiscovery(getTransports());
     175    runPresenter();
    174176}
    175177
     
    198200}
    199201
     202void AuthenticatorManager::cancel()
     203{
     204    RELEASE_ASSERT(RunLoop::isMain());
     205    if (!m_pendingCompletionHandler)
     206        return;
     207    cancelRequest();
     208}
     209
     210void AuthenticatorManager::enableModernWebAuthentication()
     211{
     212    m_isWebAuthenticationModernEnabled = true;
     213}
     214
    200215void AuthenticatorManager::clearStateAsync()
    201216{
     
    214229    m_services.clear();
    215230    m_pendingRequestData = { };
     231    m_presenter = nullptr;
    216232}
    217233
     
    227243void AuthenticatorManager::serviceStatusUpdated(WebAuthenticationStatus status)
    228244{
     245    // This is for the new UI.
     246    if (m_presenter) {
     247        m_presenter->updatePresenter(status);
     248        return;
     249    }
     250
    229251    dispatchPanelClientCall([status] (const API::WebAuthenticationPanel& panel) {
    230252        panel.client().updatePanel(status);
     
    269291    m_pendingRequestData.cachedPin = String();
    270292
     293    // This is for the new UI.
     294    if (m_presenter) {
     295        m_presenter->updatePresenter(status);
     296        return;
     297    }
     298
    271299    dispatchPanelClientCall([status] (const API::WebAuthenticationPanel& panel) {
    272300        panel.client().updatePanel(status);
     
    293321    };
    294322
     323    // This is for the new UI.
     324    if (m_presenter) {
     325        m_presenter->requestPin(retries, WTFMove(callback));
     326        return;
     327    }
     328
    295329    dispatchPanelClientCall([retries, callback = WTFMove(callback)] (const API::WebAuthenticationPanel& panel) mutable {
    296330        panel.client().requestPin(retries, WTFMove(callback));
     
    300334void AuthenticatorManager::selectAssertionResponse(Vector<Ref<WebCore::AuthenticatorAssertionResponse>>&& responses, WebAuthenticationSource source, CompletionHandler<void(AuthenticatorAssertionResponse*)>&& completionHandler)
    301335{
     336    // This is for the new UI.
     337    if (m_presenter) {
     338        m_presenter->selectAssertionResponse(WTFMove(responses), source, WTFMove(completionHandler));
     339        return;
     340    }
     341
    302342    dispatchPanelClientCall([responses = WTFMove(responses), source, completionHandler = WTFMove(completionHandler)] (const API::WebAuthenticationPanel& panel) mutable {
    303343        panel.client().selectAssertionResponse(WTFMove(responses), source, WTFMove(completionHandler));
     
    341381    ASSERT(m_services.isEmpty() && transports.size() <= maxTransportNumber);
    342382    for (auto& transport : transports) {
    343         // Only allow USB authenticators when clients don't have dedicated UI.
    344         if (transport != AuthenticatorTransport::Usb && (m_pendingRequestData.panelResult == WebAuthenticationPanelResult::Unavailable))
    345             continue;
    346383        auto service = createService(transport, *this);
    347384        service->startDiscovery();
     
    390427            || (weakPanel.get() != m_pendingRequestData.panel.get()))
    391428            return;
    392         m_pendingRequestData.panelResult = result;
    393429        startDiscovery(transports);
    394430    });
    395431}
    396432
     433void AuthenticatorManager::runPresenter()
     434{
     435    // Get available transports and start discovering authenticators on them.
     436    auto& options = m_pendingRequestData.options;
     437    auto transports = getTransports();
     438    startDiscovery(transports);
     439
     440    m_presenter = makeUnique<AuthenticatorPresenterCoordinator>(*this, getRpId(options), transports, getClientDataType(options));
     441}
     442
    397443void AuthenticatorManager::invokePendingCompletionHandler(Respond&& respond)
    398444{
    399     dispatchPanelClientCall([result = WTF::holds_alternative<Ref<AuthenticatorResponse>>(respond) ? WebAuthenticationResult::Succeeded : WebAuthenticationResult::Failed] (const API::WebAuthenticationPanel& panel) {
    400         panel.client().dismissPanel(result);
    401     });
     445    // This is for the new UI.
     446    if (m_presenter)
     447        m_presenter->dimissPresenter();
     448    else {
     449        dispatchPanelClientCall([result = WTF::holds_alternative<Ref<AuthenticatorResponse>>(respond) ? WebAuthenticationResult::Succeeded : WebAuthenticationResult::Failed] (const API::WebAuthenticationPanel& panel) {
     450            panel.client().dismissPanel(result);
     451        });
     452    }
     453
    402454    m_pendingCompletionHandler(WTFMove(respond));
    403455}
  • trunk/Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.h

    r260970 r270616  
    2929
    3030#include "Authenticator.h"
     31#include "AuthenticatorPresenterCoordinator.h"
    3132#include "AuthenticatorTransportService.h"
    3233#include "WebAuthenticationRequestData.h"
     
    6465    void cancelRequest(const WebCore::PageIdentifier&, const Optional<WebCore::FrameIdentifier>&); // Called from WebPageProxy/WebProcessProxy.
    6566    void cancelRequest(const API::WebAuthenticationPanel&); // Called from panel clients.
     67    void cancel(); // Called from the presenter.
    6668
    6769    virtual bool isMock() const { return false; }
     70
     71    void enableModernWebAuthentication();
    6872
    6973protected:
     
    97101    void timeOutTimerFired();
    98102    void runPanel();
     103    void runPresenter();
    99104    void restartDiscovery();
    100105    TransportSet getTransports() const;
     
    105110    Callback m_pendingCompletionHandler; // Should not be invoked directly, use invokePendingCompletionHandler.
    106111    RunLoop::Timer<AuthenticatorManager> m_requestTimeOutTimer;
     112    std::unique_ptr<AuthenticatorPresenterCoordinator> m_presenter;
    107113
    108114    Vector<UniqueRef<AuthenticatorTransportService>> m_services;
    109115    HashSet<Ref<Authenticator>> m_authenticators;
     116
     117    bool m_isWebAuthenticationModernEnabled { false };
    110118};
    111119
  • trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.cpp

    r269168 r270616  
    4343{
    4444    initialize(WTFMove(parameters));
     45    m_authenticatorManager->enableModernWebAuthentication();
    4546}
    4647
     
    130131    if (!m_authenticatorManager->isMock()) {
    131132        m_authenticatorManager = makeUniqueRef<MockAuthenticatorManager>(WTFMove(configuration));
     133        m_authenticatorManager->enableModernWebAuthentication();
    132134        return;
    133135    }
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r270606 r270616  
    11451145                576CA9D722B862180030143C /* SOAuthorizationNSURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 57FD317322B35148008D0E8B /* SOAuthorizationNSURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
    11461146                5772F206217DBD6A0056BF2C /* HidService.h in Headers */ = {isa = PBXBuildFile; fileRef = 5772F204217DBD6A0056BF2C /* HidService.h */; };
     1147                57773991258037430059348B /* AuthenticatorPresenterCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 5777398F258037430059348B /* AuthenticatorPresenterCoordinator.h */; };
     1148                577739952580388F0059348B /* WKASCAuthorizationPresenterDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 577739932580388F0059348B /* WKASCAuthorizationPresenterDelegate.h */; };
    11471149                577FF7822346E81C004EDFB9 /* APIWebAuthenticationPanelClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 577FF7812346E81C004EDFB9 /* APIWebAuthenticationPanelClient.h */; };
    11481150                577FF7852346ECAA004EDFB9 /* WebAuthenticationPanelClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 577FF7832346ECAA004EDFB9 /* WebAuthenticationPanelClient.h */; };
     
    12081210                57EBE26A234676C5008D8AF9 /* APIWebAuthenticationPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 57EBE268234676C5008D8AF9 /* APIWebAuthenticationPanel.h */; };
    12091211                57EFC77E2550EB8600F9477D /* com.apple.WebKit.WebAuthn.sb in CopyFiles */ = {isa = PBXBuildFile; fileRef = 57EFC77D2550EB8500F9477D /* com.apple.WebKit.WebAuthn.sb */; };
     1212                57FABB0F25817CF00059DC95 /* AuthenticationServicesCoreSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 57FABB0E25817CF00059DC95 /* AuthenticationServicesCoreSPI.h */; };
     1213                57FABB122581827C0059DC95 /* AuthenticationServicesCoreSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 57FABB102581827C0059DC95 /* AuthenticationServicesCoreSoftLink.h */; };
     1214                57FABB132581827C0059DC95 /* AuthenticationServicesCoreSoftLink.mm in Sources */ = {isa = PBXBuildFile; fileRef = 57FABB112581827C0059DC95 /* AuthenticationServicesCoreSoftLink.mm */; };
     1215                57FABB14258188230059DC95 /* SourcesCocoa.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2D7DEBE121269D5F00B9F73C /* SourcesCocoa.txt */; };
    12101216                57FD318022B35158008D0E8B /* NavigationSOAuthorizationSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 57FD317822B35149008D0E8B /* NavigationSOAuthorizationSession.h */; };
    12111217                57FD318122B3515B008D0E8B /* PopUpSOAuthorizationSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 57FD317022B35148008D0E8B /* PopUpSOAuthorizationSession.h */; };
     
    40834089                5772F204217DBD6A0056BF2C /* HidService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HidService.h; sourceTree = "<group>"; };
    40844090                5772F205217DBD6A0056BF2C /* HidService.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = HidService.mm; sourceTree = "<group>"; };
     4091                5777398F258037430059348B /* AuthenticatorPresenterCoordinator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AuthenticatorPresenterCoordinator.h; sourceTree = "<group>"; };
     4092                57773990258037430059348B /* AuthenticatorPresenterCoordinator.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AuthenticatorPresenterCoordinator.mm; sourceTree = "<group>"; };
     4093                577739932580388F0059348B /* WKASCAuthorizationPresenterDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKASCAuthorizationPresenterDelegate.h; sourceTree = "<group>"; };
     4094                577739942580388F0059348B /* WKASCAuthorizationPresenterDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKASCAuthorizationPresenterDelegate.mm; sourceTree = "<group>"; };
    40854095                577FF7812346E81C004EDFB9 /* APIWebAuthenticationPanelClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = APIWebAuthenticationPanelClient.h; sourceTree = "<group>"; };
    40864096                577FF7832346ECAA004EDFB9 /* WebAuthenticationPanelClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebAuthenticationPanelClient.h; sourceTree = "<group>"; };
     
    41684178                57EBE269234676C5008D8AF9 /* APIWebAuthenticationPanel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = APIWebAuthenticationPanel.cpp; sourceTree = "<group>"; };
    41694179                57EFC77D2550EB8500F9477D /* com.apple.WebKit.WebAuthn.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.apple.WebKit.WebAuthn.sb; sourceTree = "<group>"; };
     4180                57FABB0E25817CF00059DC95 /* AuthenticationServicesCoreSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AuthenticationServicesCoreSPI.h; sourceTree = "<group>"; };
     4181                57FABB102581827C0059DC95 /* AuthenticationServicesCoreSoftLink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AuthenticationServicesCoreSoftLink.h; sourceTree = "<group>"; };
     4182                57FABB112581827C0059DC95 /* AuthenticationServicesCoreSoftLink.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AuthenticationServicesCoreSoftLink.mm; sourceTree = "<group>"; };
    41704183                57FD317022B35148008D0E8B /* PopUpSOAuthorizationSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopUpSOAuthorizationSession.h; sourceTree = "<group>"; };
    41714184                57FD317122B35148008D0E8B /* WKSOAuthorizationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSOAuthorizationDelegate.h; sourceTree = "<group>"; };
     
    75067519                                E3CAAA432413278A00CED2E2 /* AccessibilitySupportSPI.h */,
    75077520                                572EBBDC25392181000552B3 /* AppAttestSPI.h */,
     7521                                57FABB0E25817CF00059DC95 /* AuthenticationServicesCoreSPI.h */,
    75087522                                1A5705101BE410E500874AF1 /* BlockSPI.h */,
    75097523                                E50620912542102000C43091 /* ContactsUISPI.h */,
     
    86328646                                572EBBD92538F6A1000552B3 /* AppAttestInternalSoftLink.h */,
    86338647                                572EBBD82538F6A1000552B3 /* AppAttestInternalSoftLink.mm */,
     8648                                57FABB102581827C0059DC95 /* AuthenticationServicesCoreSoftLink.h */,
     8649                                57FABB112581827C0059DC95 /* AuthenticationServicesCoreSoftLink.mm */,
     8650                                5777398F258037430059348B /* AuthenticatorPresenterCoordinator.h */,
     8651                                57773990258037430059348B /* AuthenticatorPresenterCoordinator.mm */,
    86348652                                57AC8F4E217FEED90055438C /* HidConnection.h */,
    86358653                                57AC8F4F217FEED90055438C /* HidConnection.mm */,
     
    86528670                                577FF7832346ECAA004EDFB9 /* WebAuthenticationPanelClient.h */,
    86538671                                577FF7842346ECAA004EDFB9 /* WebAuthenticationPanelClient.mm */,
     8672                                577739932580388F0059348B /* WKASCAuthorizationPresenterDelegate.h */,
     8673                                577739942580388F0059348B /* WKASCAuthorizationPresenterDelegate.mm */,
    86548674                                570DAAC423037F7E00E8FC04 /* WKNFReaderSessionDelegate.h */,
    86558675                                570DAAC523037F7E00E8FC04 /* WKNFReaderSessionDelegate.mm */,
     
    1131111331                                518E8EF916B2091C00E91429 /* AuthenticationManager.h in Headers */,
    1131211332                                512F58A312A883AD00629530 /* AuthenticationManagerMessages.h in Headers */,
     11333                                57FABB122581827C0059DC95 /* AuthenticationServicesCoreSoftLink.h in Headers */,
     11334                                57FABB0F25817CF00059DC95 /* AuthenticationServicesCoreSPI.h in Headers */,
    1131311335                                57DCEDB1214C60480016B847 /* Authenticator.h in Headers */,
    1131411336                                57DCEDAF214C603B0016B847 /* AuthenticatorManager.h in Headers */,
     11337                                57773991258037430059348B /* AuthenticatorPresenterCoordinator.h in Headers */,
    1131511338                                57DCEDB0214C60420016B847 /* AuthenticatorTransportService.h in Headers */,
    1131611339                                9955A6EF1C79810800EB6A93 /* Automation.json in Headers */,
     
    1203512058                                A13DC682207AA6B20066EF72 /* WKApplicationStateTrackingView.h in Headers */,
    1203612059                                BC4075F4124FF0270068F20A /* WKArray.h in Headers */,
     12060                                577739952580388F0059348B /* WKASCAuthorizationPresenterDelegate.h in Headers */,
    1203712061                                512F58F612A88A5400629530 /* WKAuthenticationChallenge.h in Headers */,
    1203812062                                512F58F812A88A5400629530 /* WKAuthenticationDecisionListener.h in Headers */,
     
    1274412768                        buildActionMask = 2147483647;
    1274512769                        files = (
     12770                                57FABB14258188230059DC95 /* SourcesCocoa.txt in Resources */,
    1274612771                                E1D26A53175964D90095BFD1 /* WebContentProcess.xib in Resources */,
    1274712772                        );
     
    1339213417                                CD4570D3244113B500A3DCEB /* AudioSessionRoutingArbitratorProxyMessageReceiver.cpp in Sources */,
    1339313418                                512F58A212A883AD00629530 /* AuthenticationManagerMessageReceiver.cpp in Sources */,
     13419                                57FABB132581827C0059DC95 /* AuthenticationServicesCoreSoftLink.mm in Sources */,
    1339413420                                9955A6F41C7986DC00EB6A93 /* AutomationBackendDispatchers.cpp in Sources */,
    1339513421                                99249AD51F1F1E5600B62FBB /* AutomationFrontendDispatchers.cpp in Sources */,
  • trunk/Tools/ChangeLog

    r270613 r270616  
     12020-12-10  Jiewen Tan  <jiewen_tan@apple.com>
     2
     3        [WebAuthn] Adopt new UI for the Security Key makeCredential flow
     4        https://bugs.webkit.org/show_bug.cgi?id=219708
     5        <rdar://problem/72154735>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        * TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:
     10        (TestWebKitAPI::TEST):
     11        Adjusted to the new behavior.
     12
    1132020-12-09  Cathie Chen  <cathiechen@igalia.com>
    214
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm

    r270142 r270616  
    391391} // namesapce;
    392392
    393 TEST(WebAuthenticationPanel, NoPanelTimeout)
     393#if HAVE(NEAR_FIELD)
     394TEST(WebAuthenticationPanel, NoPanelNfcSucceed)
    394395{
    395396    RetainPtr<NSURL> testURL = [[NSBundle mainBundle] URLForResource:@"web-authentication-get-assertion-nfc" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"];
     
    401402
    402403    [webView loadRequest:[NSURLRequest requestWithURL:testURL.get()]];
    403     [webView waitForMessage:@"Operation timed out."];
    404 }
     404    [webView waitForMessage:@"Succeeded!"];
     405}
     406#endif
    405407
    406408TEST(WebAuthenticationPanel, NoPanelHidSuccess)
Note: See TracChangeset for help on using the changeset viewer.