Changeset 285267 in webkit
- Timestamp:
- Nov 4, 2021 10:40:39 AM (9 months ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 8 added
- 8 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/Automation/Automation.json (modified) (2 diffs)
-
UIProcess/Automation/WebAutomationSession.cpp (modified) (2 diffs)
-
UIProcess/Automation/WebAutomationSession.h (modified) (1 diff)
-
UIProcess/WebAuthentication/AuthenticatorManager.h (modified) (1 diff)
-
UIProcess/WebAuthentication/Virtual (added)
-
UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorConfiguration.h (added)
-
UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp (added)
-
UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h (added)
-
UIProcess/WebAuthentication/Virtual/VirtualLocalConnection.h (added)
-
UIProcess/WebAuthentication/Virtual/VirtualLocalConnection.mm (added)
-
UIProcess/WebAuthentication/Virtual/VirtualService.h (added)
-
UIProcess/WebAuthentication/Virtual/VirtualService.mm (added)
-
UIProcess/WebsiteData/WebsiteDataStore.cpp (modified) (2 diffs)
-
UIProcess/WebsiteData/WebsiteDataStore.h (modified) (2 diffs)
-
WebKit.xcodeproj/project.pbxproj (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r285265 r285267 1 2021-11-04 John Pascoe <j_pascoe@apple.com> 2 3 [WebAuthn] Implement add/remove_virtual_authenticator for transport=internal 4 https://bugs.webkit.org/show_bug.cgi?id=232635 5 <rdar://problem/84942173> 6 7 Reviewed by Brent Fulgham. 8 9 This change implements much of the plumbing needed to call the virtual authenticator 10 commands from safaridriver. The idea is that virtual authenticators are added via 11 the add_virtual_authenticator call, which replaces the default AuthenticatorManager 12 with a VirtualAuthenticatorManager similar to how we do it for mocks. Then the 13 VirtualService will create the virtual connections for authenticators as nessesary 14 to make webauthn calls within WebDriver based tests. 15 16 Tested manually via safaridriver. 17 18 * UIProcess/Automation/Automation.json: 19 * UIProcess/Automation/WebAutomationSession.cpp: 20 (WebKit::toAuthenticatorTransport): 21 (WebKit::WebAutomationSession::removeVirtualAuthenticator): 22 (WebKit::WebAutomationSession::addVirtualAuthenticatorCredential): 23 (WebKit::WebAutomationSession::removeVirtualAuthenticatorCredential): 24 (WebKit::WebAutomationSession::removeAllVirtualAuthenticatorCredentials): 25 (WebKit::WebAutomationSession::setVirtualAuthenticatorUserVerified): 26 * UIProcess/Automation/WebAutomationSession.h: 27 Plumbing to call from safaridriver 28 * UIProcess/WebAuthentication/AuthenticatorManager.h: 29 (WebKit::AuthenticatorManager::isVirtual const): 30 * UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorConfiguration.h: Added. 31 * UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp: Added. 32 (WebKit::VirtualAuthenticatorManager::VirtualAuthenticatorManager): 33 (WebKit::VirtualAuthenticatorManager::createAuthenticator): 34 (WebKit::VirtualAuthenticatorManager::removeAuthenticator): 35 (WebKit::VirtualAuthenticatorManager::createService const): 36 Manages virtual authenticators, replaces the default manager when used similar to MockAuthenticatorManager. 37 * UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.h: Added. 38 * UIProcess/WebAuthentication/Virtual/VirtualLocalConnection.h: Added. 39 * UIProcess/WebAuthentication/Virtual/VirtualLocalConnection.mm: Added. 40 (WebKit::VirtualLocalConnection::VirtualLocalConnection): 41 (WebKit::VirtualLocalConnection::verifyUser): 42 (WebKit::VirtualLocalConnection::getAttestation const): 43 (WebKit::VirtualLocalConnection::filterResponses const): 44 * UIProcess/WebAuthentication/Virtual/VirtualService.h: Added. 45 * UIProcess/WebAuthentication/Virtual/VirtualService.mm: Added. 46 (WebKit::VirtualService::VirtualService): 47 (WebKit::VirtualService::createVirtual): 48 (WebKit::VirtualService::startDiscoveryInternal): 49 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 50 (WebKit::WebsiteDataStore::virtualAuthenticatorManager): 51 * UIProcess/WebsiteData/WebsiteDataStore.h: 52 * WebKit.xcodeproj/project.pbxproj: 53 1 54 2021-11-04 Lauro Moura <lmoura@igalia.com> 2 55 -
trunk/Source/WebKit/UIProcess/Automation/Automation.json
r275050 r285267 336 336 { "name": "duration", "type": "integer", "optional": true, "description": "The minimum number of milliseconds that must elapse while the relevant input source transitions to this state." } 337 337 ] 338 }, 339 { 340 "id": "AuthenticatorProtocol", 341 "type": "string", 342 "description": "This enum contains the different protocol types supported by virtual authenticators.", 343 "enum": [ 344 "ctap1_u2f", 345 "ctap2", 346 "ctap2_1" 347 ] 348 }, 349 { 350 "id": "AuthenticatorTransport", 351 "type": "string", 352 "description": "Authenticators may implement various transports for communicating with clients. This enumeration defines hints as to how clients might communicate with a particular authenticator in order to obtain an assertion for a specific credential.", 353 "enum": [ 354 "usb", 355 "nfc", 356 "ble", 357 "internal" 358 ] 359 }, 360 { 361 "id": "VirtualAuthenticatorCredential", 362 "type": "object", 363 "description": "A credential object used for virtual authenticators.", 364 "properties": [ 365 { "name": "credentialId", "type": "string", "description": "The Credential ID encoded using Base64url Encoding."}, 366 { "name": "isResidentCredential", "type": "boolean", "description": "If set to true, a client-side discoverable credential is created. If set to false, a server-side credential is created instead."}, 367 { "name": "rpId", "type": "string", "description": "The Relying Party ID the credential is scoped to."}, 368 { "name": "privateKey", "type": "string", "description": "An asymmetric key package containing a single private key per [RFC5958], encoded using Base64url Encoding." }, 369 { "name": "userHandle", "type": "string", "optional": true, "description": "The userHandle associated to the credential encoded using Base64url Encoding. This property may not be defined." }, 370 { "name": "signCount", "type": "integer", "description": "The initial value for a signature counter associated to the public key credential source." }, 371 { "name": "largeBlob", "type": "string", "optional": true, "description": "The large, per-credential blob associated to the public key credential source, encoded using Base64url Encoding. This property may not be defined." } 372 ] 373 }, 374 { 375 "id": "VirtualAuthenticatorConfiguration", 376 "type": "object", 377 "description": "Parameters used when creating a virtual authenticator", 378 "properties": [ 379 { "name": "protocol", "$ref": "AuthenticatorProtocol", "description": "The protocol of the authenticator" }, 380 { "name": "transport", "$ref": "AuthenticatorTransport", "description": "The transport of the protocol" }, 381 { "name": "hasResidentKey", "type": "boolean", "optional": true, "description": "If the authenticator has a resident key" }, 382 { "name": "hasUserVerification", "type": "boolean", "optional": true, "description": "If the authenticator supports user verification" }, 383 { "name": "isUserConsenting", "type": "boolean", "optional": true, "description": "If the virtual authenticator should consent to requests"}, 384 { "name": "isUserVerified", "type": "boolean", "optional": true, "description": "If user verification requests should succeeed"}, 385 { "name": "extensions", "type": "array", "items": {"type": "string"}, "optional": true, "description": "An array containing extension identifiers" }, 386 { "name": "uvm", "type": "array", "items": {"type": "integer"}, "optional": true, "description": "Up to 3 User Verification Method entries"} 387 ] 338 388 } 339 389 ], … … 714 764 { "name": "permissions", "type": "array", "items": { "$ref": "SessionPermissionData" }, "description": "Array of session permissions to set, if they are available." } 715 765 ] 766 }, 767 { 768 "name": "addVirtualAuthenticator", 769 "description": "Adds a virtual web authentication authenticator for the specified browsing context.", 770 "parameters": [ 771 { "name": "browsingContextHandle", "$ref": "BrowsingContextHandle", "description": "The handle for the browsing context." }, 772 { "name": "authenticator", "$ref": "VirtualAuthenticatorConfiguration", "description": "The configuration for the virtual authenticator to be created." } 773 ], 774 "returns": [ 775 { "name": "authenticatorId", "type": "string", "description": "The authenticatorId of the created authenticator" } 776 ] 777 }, 778 { 779 "name": "removeVirtualAuthenticator", 780 "description": "Removes a virtual web authentication authenticator for the specified browsing context.", 781 "parameters": [ 782 { "name": "browsingContextHandle", "$ref": "BrowsingContextHandle", "description": "The handle for the browsing context." }, 783 { "name": "authenticatorId", "type": "string", "description": "The virtual authenticator id to remove." } 784 ] 785 }, 786 { 787 "name": "addVirtualAuthenticatorCredential", 788 "description": "Add a credential to a specified virutal authenticator for the specified browsing context", 789 "parameters": [ 790 { "name": "browsingContextHandle", "$ref": "BrowsingContextHandle", "description": "The handle for the browsing context." }, 791 { "name": "authenticatorId", "type": "string", "description": "The virtual authenticator id to add the credential to." }, 792 { "name": "credential", "$ref": "VirtualAuthenticatorCredential", "description": "The parameters of the credential to add." } 793 ] 794 }, 795 { 796 "name": "getVirtualAuthenticatorCredentials", 797 "description": "Get all credentials for a given virtual authenticator for the specified browsing context", 798 "parameters": [ 799 { "name": "browsingContextHandle", "$ref": "BrowsingContextHandle", "description": "The handle for the browsing context." }, 800 { "name": "authenticatorId", "type": "string", "description": "The virtual authenticator id to fetch all credentials for." } 801 ], 802 "returns": [ 803 { "name": "credentials", "type": "array", "items": { "$ref": "VirtualAuthenticatorCredential" }, "description": "Array of credentials for given virtual authenticator" } 804 ] 805 }, 806 { 807 "name": "removeVirtualAuthenticatorCredential", 808 "description": "Remove a credential from a virtual authenticator for the specified browsing context", 809 "parameters": [ 810 { "name": "browsingContextHandle", "$ref": "BrowsingContextHandle", "description": "The handle for the browsing context." }, 811 { "name": "authenticatorId", "type": "string", "description": "The virtual authenticator id to fetch all credentials for." }, 812 { "name": "credentialId", "type": "string", "description": "The credentialId of the credential to remove from the virtual authenticator"} 813 ] 814 }, 815 { 816 "name": "removeAllVirtualAuthenticatorCredentials", 817 "description": "Remove all credentials from a given virtual authenticatior for the specified browsing context", 818 "parameters": [ 819 { "name": "browsingContextHandle", "$ref": "BrowsingContextHandle", "description": "The handle for the browsing context." }, 820 { "name": "authenticatorId", "type": "string", "description": "The virtual authenticator id to fetch all credentials for." } 821 ] 822 }, 823 { 824 "name": "setVirtualAuthenticatorUserVerified", 825 "description": "set isUserVerified property for a given virtual authenticator for the specified browsing context", 826 "parameters": [ 827 { "name": "browsingContextHandle", "$ref": "BrowsingContextHandle", "description": "The handle for the browsing context." }, 828 { "name": "authenticatorId", "type": "string", "description": "The virtual authenticator id to fetch all credentials for." }, 829 { "name": "isUserVerified", "type": "boolean", "description": "The isUserVerified value to set on the given virtual authenticator"} 830 ] 716 831 } 717 832 ], -
trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp
r284075 r285267 54 54 #include <wtf/text/StringConcatenate.h> 55 55 56 #if ENABLE(WEB_AUTHN) 57 #include "VirtualAuthenticatorManager.h" 58 #include <WebCore/AuthenticatorTransport.h> 59 #endif // ENABLE(WEB_AUTHN) 60 56 61 namespace WebKit { 57 62 … … 1529 1534 1530 1535 return { }; 1536 } 1537 1538 #if ENABLE(WEB_AUTHN) 1539 static WebCore::AuthenticatorTransport toAuthenticatorTransport(Inspector::Protocol::Automation::AuthenticatorTransport transport) 1540 { 1541 switch (transport) { 1542 case Inspector::Protocol::Automation::AuthenticatorTransport::Usb: 1543 return WebCore::AuthenticatorTransport::Usb; 1544 case Inspector::Protocol::Automation::AuthenticatorTransport::Nfc: 1545 return WebCore::AuthenticatorTransport::Nfc; 1546 case Inspector::Protocol::Automation::AuthenticatorTransport::Ble: 1547 return WebCore::AuthenticatorTransport::Ble; 1548 case Inspector::Protocol::Automation::AuthenticatorTransport::Internal: 1549 return WebCore::AuthenticatorTransport::Internal; 1550 default: 1551 ASSERT_NOT_REACHED(); 1552 return WebCore::AuthenticatorTransport::Internal; 1553 } 1554 } 1555 #endif // ENABLE(WEB_AUTHN) 1556 1557 Inspector::Protocol::ErrorStringOr<String /* authenticatorId */> WebAutomationSession::addVirtualAuthenticator(const String& browsingContextHandle, Ref<JSON::Object>&& authenticator) 1558 { 1559 #if ENABLE(WEB_AUTHN) 1560 auto protocol = authenticator->getString("protocol"_s); 1561 if (!protocol) 1562 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "The parameter 'protocol' is missing or invalid."); 1563 auto transport = authenticator->getString("transport"_s); 1564 if (!transport) 1565 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "The parameter 'transport' is missing or invalid."); 1566 auto parsedTransport = Inspector::Protocol::AutomationHelpers::parseEnumValueFromString<Inspector::Protocol::Automation::AuthenticatorTransport>(transport); 1567 if (!parsedTransport) 1568 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "The parameter 'transport' has an unknown value."); 1569 auto hasResidentKey = authenticator->getBoolean("hasResidentKey"_s); 1570 if (!hasResidentKey) 1571 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "The parameter 'hasResidentKey' is missing or invalid."); 1572 auto hasUserVerification = authenticator->getBoolean("hasUserVerification"_s); 1573 if (!hasUserVerification) 1574 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "The parameter 'hasUserVerification' is missing or invalid."); 1575 auto isUserConsenting = authenticator->getBoolean("isUserConsenting"_s); 1576 if (!isUserConsenting) 1577 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "The parameter 'isUserConsenting' is missing or invalid."); 1578 auto isUserVerified = authenticator->getBoolean("isUserVerified"_s); 1579 if (!isUserVerified) 1580 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "The parameter 'isUserVerified' is missing or invalid."); 1581 1582 auto page = webPageProxyForHandle(browsingContextHandle); 1583 if (!page) 1584 SYNC_FAIL_WITH_PREDEFINED_ERROR(WindowNotFound); 1585 return page->websiteDataStore().virtualAuthenticatorManager().createAuthenticator({ 1586 .protocol = protocol, 1587 .transport = toAuthenticatorTransport(parsedTransport.value()), 1588 .hasResidentKey = *hasResidentKey, 1589 .hasUserVerification = *hasUserVerification, 1590 .isUserConsenting = *isUserConsenting, 1591 .isUserVerified = *isUserVerified, 1592 }); 1593 #else 1594 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(NotImplemented, "This method is not yet implemented."); 1595 #endif // ENABLE(WEB_AUTHN) 1596 } 1597 1598 Inspector::Protocol::ErrorStringOr<void> WebAutomationSession::removeVirtualAuthenticator(const String& browsingContextHandle, const String& authenticatorId) 1599 { 1600 #if ENABLE(WEB_AUTHN) 1601 auto page = webPageProxyForHandle(browsingContextHandle); 1602 if (!page) 1603 SYNC_FAIL_WITH_PREDEFINED_ERROR(WindowNotFound); 1604 if (!page->websiteDataStore().virtualAuthenticatorManager().removeAuthenticator(authenticatorId)) 1605 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "No such authenticator exists."); 1606 return { }; 1607 #else 1608 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(NotImplemented, "This method is not yet implemented."); 1609 #endif // ENABLE(WEB_AUTHN) 1610 } 1611 1612 Inspector::Protocol::ErrorStringOr<void> WebAutomationSession::addVirtualAuthenticatorCredential(const String& browsingContextHandle, const String& authenticatorId, Ref<JSON::Object>&& credential) 1613 { 1614 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(NotImplemented, "This method is not yet implemented."); 1615 } 1616 1617 Inspector::Protocol::ErrorStringOr<Ref<JSON::ArrayOf<Inspector::Protocol::Automation::VirtualAuthenticatorCredential>> /* credentials */> WebAutomationSession::getVirtualAuthenticatorCredentials(const String& browsingContextHandle, const String& authenticatorId) 1618 { 1619 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(NotImplemented, "This method is not yet implemented."); 1620 } 1621 1622 Inspector::Protocol::ErrorStringOr<void> WebAutomationSession::removeVirtualAuthenticatorCredential(const String& browsingContextHandle, const String& authenticatorId, const String& credentialId) 1623 { 1624 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(NotImplemented, "This method is not yet implemented."); 1625 } 1626 1627 Inspector::Protocol::ErrorStringOr<void> WebAutomationSession::removeAllVirtualAuthenticatorCredentials(const String& browsingContextHandle, const String& authenticatorId) 1628 { 1629 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(NotImplemented, "This method is not yet implemented."); 1630 } 1631 1632 Inspector::Protocol::ErrorStringOr<void> WebAutomationSession::setVirtualAuthenticatorUserVerified(const String& browsingContextHandle, const String& authenticatorId, bool isUserVerified) 1633 { 1634 SYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(NotImplemented, "This method is not yet implemented."); 1531 1635 } 1532 1636 -
trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.h
r284075 r285267 205 205 Inspector::Protocol::ErrorStringOr<void> setSessionPermissions(Ref<JSON::Array>&&); 206 206 207 Inspector::Protocol::ErrorStringOr<String /* authenticatorId */> addVirtualAuthenticator(const String& browsingContextHandle, Ref<JSON::Object>&& authenticator); 208 Inspector::Protocol::ErrorStringOr<void> removeVirtualAuthenticator(const String& browsingContextHandle, const String& authenticatorId); 209 Inspector::Protocol::ErrorStringOr<void> addVirtualAuthenticatorCredential(const String& browsingContextHandle, const String& authenticatorId, Ref<JSON::Object>&& credential); 210 Inspector::Protocol::ErrorStringOr<Ref<JSON::ArrayOf<Inspector::Protocol::Automation::VirtualAuthenticatorCredential>> /* credentials */> getVirtualAuthenticatorCredentials(const String& browsingContextHandle, const String& authenticatorId); 211 Inspector::Protocol::ErrorStringOr<void> removeVirtualAuthenticatorCredential(const String& browsingContextHandle, const String& authenticatorId, const String& credentialId); 212 Inspector::Protocol::ErrorStringOr<void> removeAllVirtualAuthenticatorCredentials(const String& browsingContextHandle, const String& authenticatorId); 213 Inspector::Protocol::ErrorStringOr<void> setVirtualAuthenticatorUserVerified(const String& browsingContextHandle, const String& authenticatorId, bool isUserVerified); 214 207 215 #if PLATFORM(MAC) 208 216 void inspectBrowsingContext(const Inspector::Protocol::Automation::BrowsingContextHandle&, std::optional<bool>&& enableAutoCapturing, Ref<InspectBrowsingContextCallback>&&); -
trunk/Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.h
r284075 r285267 70 70 71 71 virtual bool isMock() const { return false; } 72 virtual bool isVirtual() const { return false; } 72 73 73 74 void enableModernWebAuthentication(); -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
r285115 r285267 83 83 #endif 84 84 85 #if ENABLE(WEB_AUTHN) 86 #include "VirtualAuthenticatorManager.h" 87 #endif // ENABLE(WEB_AUTHN) 88 85 89 namespace WebKit { 86 90 … … 1946 1950 static_cast<MockAuthenticatorManager*>(&m_authenticatorManager)->setTestConfiguration(WTFMove(configuration)); 1947 1951 } 1952 1953 VirtualAuthenticatorManager& WebsiteDataStore::virtualAuthenticatorManager() 1954 { 1955 if (!m_authenticatorManager->isVirtual()) 1956 m_authenticatorManager = makeUniqueRef<VirtualAuthenticatorManager>(); 1957 return static_cast<VirtualAuthenticatorManager&>(m_authenticatorManager.get()); 1958 } 1948 1959 #endif 1949 1960 -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
r285047 r285267 88 88 class NetworkProcessProxy; 89 89 class SOAuthorizationCoordinator; 90 class VirtualAuthenticatorManager; 90 91 class WebPageProxy; 91 92 class WebProcessPool; … … 308 309 AuthenticatorManager& authenticatorManager() { return m_authenticatorManager.get(); } 309 310 void setMockWebAuthenticationConfiguration(WebCore::MockWebAuthenticationConfiguration&&); 311 VirtualAuthenticatorManager& virtualAuthenticatorManager(); 310 312 #endif 311 313 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r285047 r285267 1050 1050 5272D4C91E735F0900EB4290 /* WKProtectionSpaceNS.h in Headers */ = {isa = PBXBuildFile; fileRef = 5272D4C71E735F0900EB4290 /* WKProtectionSpaceNS.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1051 1051 528C37C1195CBB1A00D8B9CC /* WKBackForwardListPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A9F28101958F478008CAC72 /* WKBackForwardListPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1052 52CDC5C42731DA0D00A3E3EB /* VirtualAuthenticatorConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CDC5BD2731DA0C00A3E3EB /* VirtualAuthenticatorConfiguration.h */; }; 1053 52CDC5C52731DA0D00A3E3EB /* VirtualService.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52CDC5BE2731DA0C00A3E3EB /* VirtualService.mm */; }; 1054 52CDC5C62731DA0D00A3E3EB /* VirtualAuthenticatorManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52CDC5BF2731DA0C00A3E3EB /* VirtualAuthenticatorManager.cpp */; }; 1055 52CDC5C72731DA0D00A3E3EB /* VirtualLocalConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CDC5C02731DA0C00A3E3EB /* VirtualLocalConnection.h */; }; 1056 52CDC5C82731DA0D00A3E3EB /* VirtualService.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CDC5C12731DA0C00A3E3EB /* VirtualService.h */; }; 1057 52CDC5C92731DA0D00A3E3EB /* VirtualLocalConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52CDC5C22731DA0C00A3E3EB /* VirtualLocalConnection.mm */; }; 1058 52CDC5CA2731DA0D00A3E3EB /* VirtualAuthenticatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CDC5C32731DA0C00A3E3EB /* VirtualAuthenticatorManager.h */; }; 1052 1059 52D5A1B01C57495A00DE34A3 /* VideoFullscreenManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 52D5A1AA1C57494E00DE34A3 /* VideoFullscreenManagerProxy.h */; }; 1053 1060 52F060E11654318500F3281B /* NetworkContentRuleListManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52F060DD1654317500F3281B /* NetworkContentRuleListManagerMessageReceiver.cpp */; }; … … 4070 4077 5272D4C71E735F0900EB4290 /* WKProtectionSpaceNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKProtectionSpaceNS.h; path = mac/WKProtectionSpaceNS.h; sourceTree = "<group>"; }; 4071 4078 5272D4C81E735F0900EB4290 /* WKProtectionSpaceNS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKProtectionSpaceNS.mm; path = mac/WKProtectionSpaceNS.mm; sourceTree = "<group>"; }; 4079 52CDC5BD2731DA0C00A3E3EB /* VirtualAuthenticatorConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualAuthenticatorConfiguration.h; sourceTree = "<group>"; }; 4080 52CDC5BE2731DA0C00A3E3EB /* VirtualService.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = VirtualService.mm; sourceTree = "<group>"; }; 4081 52CDC5BF2731DA0C00A3E3EB /* VirtualAuthenticatorManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VirtualAuthenticatorManager.cpp; sourceTree = "<group>"; }; 4082 52CDC5C02731DA0C00A3E3EB /* VirtualLocalConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualLocalConnection.h; sourceTree = "<group>"; }; 4083 52CDC5C12731DA0C00A3E3EB /* VirtualService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualService.h; sourceTree = "<group>"; }; 4084 52CDC5C22731DA0C00A3E3EB /* VirtualLocalConnection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = VirtualLocalConnection.mm; sourceTree = "<group>"; }; 4085 52CDC5C32731DA0C00A3E3EB /* VirtualAuthenticatorManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualAuthenticatorManager.h; sourceTree = "<group>"; }; 4072 4086 52D5A1AA1C57494E00DE34A3 /* VideoFullscreenManagerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoFullscreenManagerProxy.h; sourceTree = "<group>"; }; 4073 4087 52D5A1AB1C57494E00DE34A3 /* VideoFullscreenManagerProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VideoFullscreenManagerProxy.messages.in; sourceTree = "<group>"; }; … … 8741 8755 sourceTree = "<group>"; 8742 8756 }; 8757 52CDC5BC2731DA0C00A3E3EB /* Virtual */ = { 8758 isa = PBXGroup; 8759 children = ( 8760 52CDC5BD2731DA0C00A3E3EB /* VirtualAuthenticatorConfiguration.h */, 8761 52CDC5BF2731DA0C00A3E3EB /* VirtualAuthenticatorManager.cpp */, 8762 52CDC5C32731DA0C00A3E3EB /* VirtualAuthenticatorManager.h */, 8763 52CDC5C02731DA0C00A3E3EB /* VirtualLocalConnection.h */, 8764 52CDC5C22731DA0C00A3E3EB /* VirtualLocalConnection.mm */, 8765 52CDC5C12731DA0C00A3E3EB /* VirtualService.h */, 8766 52CDC5BE2731DA0C00A3E3EB /* VirtualService.mm */, 8767 ); 8768 path = Virtual; 8769 sourceTree = "<group>"; 8770 }; 8743 8771 5506409C240715AA00AAE045 /* graphics */ = { 8744 8772 isa = PBXGroup; … … 8940 8968 57597EBF218184B20037F924 /* fido */, 8941 8969 57DCEDBD214C9FA90016B847 /* Mock */, 8970 52CDC5BC2731DA0C00A3E3EB /* Virtual */, 8942 8971 57DCEDA42149E64A0016B847 /* Authenticator.cpp */, 8943 8972 57DCED8B21485BD70016B847 /* Authenticator.h */, … … 12336 12365 2D6CD119189058A500E5A4A0 /* ViewSnapshotStore.h in Headers */, 12337 12366 2684055318B86ED60022C38B /* ViewUpdateDispatcherMessages.h in Headers */, 12367 52CDC5C42731DA0D00A3E3EB /* VirtualAuthenticatorConfiguration.h in Headers */, 12368 52CDC5CA2731DA0D00A3E3EB /* VirtualAuthenticatorManager.h in Headers */, 12369 52CDC5C72731DA0D00A3E3EB /* VirtualLocalConnection.h in Headers */, 12370 52CDC5C82731DA0D00A3E3EB /* VirtualService.h in Headers */, 12338 12371 2684054418B85A630022C38B /* VisibleContentRectUpdateInfo.h in Headers */, 12339 12372 2DD5A7291EBF08D5009BA597 /* VisibleWebPageCounter.h in Headers */, … … 14391 14424 2D819BA11862800E001F03D1 /* ViewGestureGeometryCollectorMessageReceiver.cpp in Sources */, 14392 14425 2684055218B86ED60022C38B /* ViewUpdateDispatcherMessageReceiver.cpp in Sources */, 14426 52CDC5C62731DA0D00A3E3EB /* VirtualAuthenticatorManager.cpp in Sources */, 14427 52CDC5C92731DA0D00A3E3EB /* VirtualLocalConnection.mm in Sources */, 14428 52CDC5C52731DA0D00A3E3EB /* VirtualService.mm in Sources */, 14393 14429 1A60224C18C16B9F00C3E8C9 /* VisitedLinkStoreMessageReceiver.cpp in Sources */, 14394 14430 1A8E7D3C18C15149005A702A /* VisitedLinkTableControllerMessageReceiver.cpp in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.