Changeset 286614 in webkit
- Timestamp:
- Dec 7, 2021, 1:19:42 PM (5 years ago)
- Location:
- branches/safari-613.1.10-branch
- Files:
-
- 22 edited
- 1 copied
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkSession.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (modified) (3 diffs)
-
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp (modified) (4 diffs)
-
Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (modified) (1 diff)
-
Source/WebKit/Shared/WebPushDaemonConnectionConfiguration.h (copied) (copied from branches/safari-613.1.10-branch/Source/WebKit/Shared/WebPushDaemonConstants.h ) (1 diff)
-
Source/WebKit/Shared/WebPushDaemonConstants.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp (modified) (3 diffs)
-
Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h (modified) (3 diffs)
-
Source/WebKit/WebKit.xcodeproj/project.pbxproj (modified) (5 diffs)
-
Source/WebKit/webpushd/AppBundleRequest.mm (modified) (2 diffs)
-
Source/WebKit/webpushd/PushClientConnection.h (modified) (5 diffs)
-
Source/WebKit/webpushd/PushClientConnection.mm (modified) (3 diffs)
-
Source/WebKit/webpushd/WebPushDaemon.h (modified) (3 diffs)
-
Source/WebKit/webpushd/WebPushDaemon.mm (modified) (5 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-613.1.10-branch/Source/WebKit/ChangeLog
r286613 r286614 1 2021-12-06 Russell Epstein <repstein@apple.com> 2 3 Cherry-pick r286355. rdar://problem/86052131 4 5 Add WKWebsiteDataStore configuration option to enable Mock app bundle testing. 6 https://bugs.webkit.org/show_bug.cgi?id=233679 7 8 Reviewed by Tim Horton. 9 10 Source/WebKit: 11 12 Covered by API tests. 13 14 We're about to land actual implementations of app permissions bundles. 15 But the mock bundles still have a place for testing. 16 We need a way to switch between Mock and Native. 17 18 This patch takes the opportunity to plumb out a WebPushDaemonConnectionConfiguration object 19 that can easily be augmented in future patches to add new options without messing with messaging directly. 20 21 * NetworkProcess/NetworkSession.h: 22 (WebKit::NetworkSession::webpushdUsesMockBundlesForTesting const): 23 24 * NetworkProcess/NetworkSessionCreationParameters.cpp: 25 (WebKit::NetworkSessionCreationParameters::encode const): 26 (WebKit::NetworkSessionCreationParameters::decode): 27 * NetworkProcess/NetworkSessionCreationParameters.h: 28 29 * NetworkProcess/Notifications/NetworkNotificationManager.cpp: 30 (WebKit::NetworkNotificationManager::maybeSendConnectionConfiguration const): 31 (WebKit::NetworkNotificationManager::sendMessage const): 32 (WebKit::NetworkNotificationManager::sendMessageWithReply const): 33 (WebKit::NetworkNotificationManager::maybeSendHostAppAuditToken const): Deleted. 34 * NetworkProcess/Notifications/NetworkNotificationManager.h: 35 36 * NetworkProcess/cocoa/NetworkSessionCocoa.h: 37 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: 38 (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): 39 40 * Shared/WebPushDaemonConnectionConfiguration.h: Copied from Source/WebKit/Shared/WebPushDaemonConstants.h. 41 (WebKit::WebPushD::WebPushDaemonConnectionConfiguration::encode const): 42 (WebKit::WebPushD::WebPushDaemonConnectionConfiguration::decode): 43 44 * Shared/WebPushDaemonConstants.h: 45 (WebKit::WebPushD::messageTypeSendsReply): 46 47 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: 48 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: 49 (-[_WKWebsiteDataStoreConfiguration webpushdUsesMockBundlesForTesting]): 50 (-[_WKWebsiteDataStoreConfiguration setWebpushdUsesMockBundlesForTesting:]): 51 52 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 53 (WebKit::WebsiteDataStore::parameters): 54 55 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: 56 (WebKit::WebsiteDataStoreConfiguration::copy const): 57 (WebKit::WebsiteDataStoreConfiguration::webPushDaemonConnectionConfiguration const): 58 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: 59 (WebKit::WebsiteDataStoreConfiguration::webpushdUsesMockBundlesForTesting const): 60 (WebKit::WebsiteDataStoreConfiguration::setWebpushdUsesMockBundlesForTesting): 61 62 * WebKit.xcodeproj/project.pbxproj: 63 64 * webpushd/AppBundleRequest.mm: 65 (WebPushD::AppBundleRequest::AppBundleRequest): 66 (WebPushD::AppBundleRequest::start): 67 68 * webpushd/PushClientConnection.h: 69 (WebPushD::ClientConnection::hasHostAppAuditToken const): 70 (WebPushD::ClientConnection::useMockBundlesForTesting const): 71 * webpushd/PushClientConnection.mm: 72 (WebPushD::ClientConnection::updateConnectionConfiguration): 73 (WebPushD::ClientConnection::setHostAppAuditTokenData): 74 75 * webpushd/WebPushDaemon.h: 76 * webpushd/WebPushDaemon.mm: 77 (WebPushD::Daemon::decodeAndHandleMessage): 78 (WebPushD::Daemon::getOriginsWithPushAndNotificationPermissions): 79 (WebPushD::Daemon::setDebugModeIsEnabled): 80 (WebPushD::Daemon::updateConnectionConfiguration): 81 (WebPushD::Daemon::setHostAppAuditToken): Deleted. 82 83 Tools: 84 85 * TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm: 86 87 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286355 268f45cc-cd09-0410-ab3c-d52691b4dbfc 88 89 2021-12-01 Brady Eidson <beidson@apple.com> 90 91 Add WKWebsiteDataStore configuration option to enable Mock app bundle testing. 92 https://bugs.webkit.org/show_bug.cgi?id=233679 93 94 Reviewed by Tim Horton. 95 96 Covered by API tests. 97 98 We're about to land actual implementations of app permissions bundles. 99 But the mock bundles still have a place for testing. 100 We need a way to switch between Mock and Native. 101 102 This patch takes the opportunity to plumb out a WebPushDaemonConnectionConfiguration object 103 that can easily be augmented in future patches to add new options without messing with messaging directly. 104 105 * NetworkProcess/NetworkSession.h: 106 (WebKit::NetworkSession::webpushdUsesMockBundlesForTesting const): 107 108 * NetworkProcess/NetworkSessionCreationParameters.cpp: 109 (WebKit::NetworkSessionCreationParameters::encode const): 110 (WebKit::NetworkSessionCreationParameters::decode): 111 * NetworkProcess/NetworkSessionCreationParameters.h: 112 113 * NetworkProcess/Notifications/NetworkNotificationManager.cpp: 114 (WebKit::NetworkNotificationManager::maybeSendConnectionConfiguration const): 115 (WebKit::NetworkNotificationManager::sendMessage const): 116 (WebKit::NetworkNotificationManager::sendMessageWithReply const): 117 (WebKit::NetworkNotificationManager::maybeSendHostAppAuditToken const): Deleted. 118 * NetworkProcess/Notifications/NetworkNotificationManager.h: 119 120 * NetworkProcess/cocoa/NetworkSessionCocoa.h: 121 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: 122 (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): 123 124 * Shared/WebPushDaemonConnectionConfiguration.h: Copied from Source/WebKit/Shared/WebPushDaemonConstants.h. 125 (WebKit::WebPushD::WebPushDaemonConnectionConfiguration::encode const): 126 (WebKit::WebPushD::WebPushDaemonConnectionConfiguration::decode): 127 128 * Shared/WebPushDaemonConstants.h: 129 (WebKit::WebPushD::messageTypeSendsReply): 130 131 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: 132 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: 133 (-[_WKWebsiteDataStoreConfiguration webpushdUsesMockBundlesForTesting]): 134 (-[_WKWebsiteDataStoreConfiguration setWebpushdUsesMockBundlesForTesting:]): 135 136 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 137 (WebKit::WebsiteDataStore::parameters): 138 139 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: 140 (WebKit::WebsiteDataStoreConfiguration::copy const): 141 (WebKit::WebsiteDataStoreConfiguration::webPushDaemonConnectionConfiguration const): 142 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: 143 (WebKit::WebsiteDataStoreConfiguration::webpushdUsesMockBundlesForTesting const): 144 (WebKit::WebsiteDataStoreConfiguration::setWebpushdUsesMockBundlesForTesting): 145 146 * WebKit.xcodeproj/project.pbxproj: 147 148 * webpushd/AppBundleRequest.mm: 149 (WebPushD::AppBundleRequest::AppBundleRequest): 150 (WebPushD::AppBundleRequest::start): 151 152 * webpushd/PushClientConnection.h: 153 (WebPushD::ClientConnection::hasHostAppAuditToken const): 154 (WebPushD::ClientConnection::useMockBundlesForTesting const): 155 * webpushd/PushClientConnection.mm: 156 (WebPushD::ClientConnection::updateConnectionConfiguration): 157 (WebPushD::ClientConnection::setHostAppAuditTokenData): 158 159 * webpushd/WebPushDaemon.h: 160 * webpushd/WebPushDaemon.mm: 161 (WebPushD::Daemon::decodeAndHandleMessage): 162 (WebPushD::Daemon::getOriginsWithPushAndNotificationPermissions): 163 (WebPushD::Daemon::setDebugModeIsEnabled): 164 (WebPushD::Daemon::updateConnectionConfiguration): 165 (WebPushD::Daemon::setHostAppAuditToken): Deleted. 166 1 167 2021-12-06 Russell Epstein <repstein@apple.com> 2 168 -
branches/safari-613.1.10-branch/Source/WebKit/NetworkProcess/NetworkSession.h
r285121 r286614 128 128 virtual void clearAppBoundSession() { } 129 129 #endif 130 131 virtual bool webPushDaemonUsesMockBundlesForTesting() const { return false; } 132 130 133 void storePrivateClickMeasurement(WebCore::PrivateClickMeasurement&&); 131 134 void handlePrivateClickMeasurementConversion(WebCore::PrivateClickMeasurement::AttributionTriggerData&&, const URL& requestURL, const WebCore::ResourceRequest& redirectRequest, String&& attributedBundleIdentifier); -
branches/safari-613.1.10-branch/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
r284591 r286614 75 75 encoder << deviceManagementRestrictionsEnabled; 76 76 encoder << allLoadsBlockedByDeviceManagementRestrictionsForTesting; 77 encoder << webPushDaemonConnectionConfiguration; 77 78 encoder << dataConnectionServiceType; 78 79 encoder << fastServerTrustEvaluationEnabled; … … 234 235 return std::nullopt; 235 236 237 std::optional<WebPushD::WebPushDaemonConnectionConfiguration> webPushDaemonConnectionConfiguration; 238 decoder >> webPushDaemonConnectionConfiguration; 239 if (!webPushDaemonConnectionConfiguration) 240 return std::nullopt; 241 236 242 std::optional<String> dataConnectionServiceType; 237 243 decoder >> dataConnectionServiceType; … … 357 363 , WTFMove(*deviceManagementRestrictionsEnabled) 358 364 , WTFMove(*allLoadsBlockedByDeviceManagementRestrictionsForTesting) 365 , WTFMove(*webPushDaemonConnectionConfiguration) 359 366 , WTFMove(*networkCacheDirectory) 360 367 , WTFMove(*networkCacheDirectoryExtensionHandle) -
branches/safari-613.1.10-branch/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
r284591 r286614 27 27 28 28 #include "ResourceLoadStatisticsParameters.h" 29 #include "WebPushDaemonConnectionConfiguration.h" 29 30 #include <WebCore/NetworkStorageSession.h> 30 31 #include <pal/SessionID.h> … … 87 88 bool deviceManagementRestrictionsEnabled { false }; 88 89 bool allLoadsBlockedByDeviceManagementRestrictionsForTesting { false }; 90 WebPushD::WebPushDaemonConnectionConfiguration webPushDaemonConnectionConfiguration; 89 91 90 92 String networkCacheDirectory; -
branches/safari-613.1.10-branch/Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp
r286075 r286614 32 32 #include "DaemonEncoder.h" 33 33 #include "NetworkSession.h" 34 #include "WebPushDaemonConnectionConfiguration.h" 34 35 #include <WebCore/SecurityOriginData.h> 35 36 … … 44 45 } 45 46 46 void NetworkNotificationManager::maybeSendHostAppAuditToken() const 47 { 48 if (m_sentHostAppAuditToken) 49 return; 50 m_sentHostAppAuditToken = true; 47 void NetworkNotificationManager::maybeSendConnectionConfiguration() const 48 { 49 if (m_sentConnectionConfiguration) 50 return; 51 m_sentConnectionConfiguration = true; 52 53 WebPushD::WebPushDaemonConnectionConfiguration configuration; 54 configuration.useMockBundlesForTesting = m_networkSession.webPushDaemonUsesMockBundlesForTesting(); 51 55 52 56 #if PLATFORM(COCOA) 53 auto token = m_networkSession.networkProcess().parentProcessConnection()->getAuditToken(); 54 if (!token) 55 return; 56 57 auto token = m_networkSession.networkProcess().parentProcessConnection()->getAuditToken(); 58 if (token) { 57 59 Vector<uint8_t> auditTokenData; 58 60 auditTokenData.resize(sizeof(*token)); 59 61 memcpy(auditTokenData.data(), &(*token), sizeof(*token)); 60 61 sendMessage<WebPushD::MessageType::SetHostAppAuditToken>(auditTokenData);62 configuration.hostAppAuditTokenData = WTFMove(auditTokenData); 63 } 62 64 #endif 65 66 sendMessage<WebPushD::MessageType::UpdateConnectionConfiguration>(configuration); 63 67 } 64 68 … … 124 128 RELEASE_ASSERT(m_connection); 125 129 126 maybeSend HostAppAuditToken();130 maybeSendConnectionConfiguration(); 127 131 128 132 Daemon::Encoder encoder; … … 188 192 RELEASE_ASSERT(m_connection); 189 193 190 maybeSend HostAppAuditToken();194 maybeSendConnectionConfiguration(); 191 195 192 196 Daemon::Encoder encoder; -
branches/safari-613.1.10-branch/Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h
r286075 r286614 63 63 void didDestroyNotification(uint64_t notificationID) final; 64 64 65 void maybeSend HostAppAuditToken() const;65 void maybeSendConnectionConfiguration() const; 66 66 67 67 NetworkSession& m_networkSession; 68 68 std::unique_ptr<WebPushD::Connection> m_connection; 69 mutable bool m_sent HostAppAuditToken { false };69 mutable bool m_sentConnectionConfiguration { false }; 70 70 71 71 template<WebPushD::MessageType messageType, typename... Args> -
branches/safari-613.1.10-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h
r285726 r286614 122 122 bool deviceManagementRestrictionsEnabled() const { return m_deviceManagementRestrictionsEnabled; } 123 123 bool allLoadsBlockedByDeviceManagementRestrictionsForTesting() const { return m_allLoadsBlockedByDeviceManagementRestrictionsForTesting; } 124 bool webPushDaemonUsesMockBundlesForTesting() const final { return m_webPushDaemonUsesMockBundlesForTesting; } 125 124 126 DMFWebsitePolicyMonitor *deviceManagementPolicyMonitor(); 125 127 … … 181 183 bool m_deviceManagementRestrictionsEnabled { false }; 182 184 bool m_allLoadsBlockedByDeviceManagementRestrictionsForTesting { false }; 185 bool m_webPushDaemonUsesMockBundlesForTesting { false }; 183 186 bool m_shouldLogCookieInformation { false }; 184 187 bool m_fastServerTrustEvaluationEnabled { false }; -
branches/safari-613.1.10-branch/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
r285726 r286614 1348 1348 m_deviceManagementRestrictionsEnabled = parameters.deviceManagementRestrictionsEnabled; 1349 1349 m_allLoadsBlockedByDeviceManagementRestrictionsForTesting = parameters.allLoadsBlockedByDeviceManagementRestrictionsForTesting; 1350 m_webPushDaemonUsesMockBundlesForTesting = parameters.webPushDaemonConnectionConfiguration.useMockBundlesForTesting; 1350 1351 1351 1352 #if ENABLE(APP_BOUND_DOMAINS) -
branches/safari-613.1.10-branch/Source/WebKit/Shared/WebPushDaemonConnectionConfiguration.h
r286613 r286614 26 26 #pragma once 27 27 28 #include <optional> 29 #include <wtf/Vector.h> 30 28 31 namespace WebKit::WebPushD { 29 32 30 constexpr const char* protocolVersionKey = "protocol version"; 31 constexpr uint64_t protocolVersionValue = 1;32 constexpr const char* protocolEncodedMessageKey = "encoded message";33 struct WebPushDaemonConnectionConfiguration { 34 template<class Encoder> void encode(Encoder&) const; 35 template<class Decoder> static std::optional<WebPushDaemonConnectionConfiguration> decode(Decoder&); 33 36 34 constexpr const char* protocolDebugMessageKey { "debug message" }; 35 constexpr const char* protocolDebugMessageLevelKey { "debug message level" }; 36 37 constexpr const char* protocolMessageTypeKey { "message type" }; 38 enum class MessageType : uint8_t { 39 EchoTwice = 1, 40 RequestSystemNotificationPermission, 41 DeletePushAndNotificationRegistration, 42 GetOriginsWithPushAndNotificationPermissions, 43 SetHostAppAuditToken, 44 SetDebugModeIsEnabled, 37 bool useMockBundlesForTesting { false }; 38 std::optional<Vector<uint8_t>> hostAppAuditTokenData; 45 39 }; 46 40 47 inline bool messageTypeSendsReply(MessageType messageType) 41 template<class Encoder> 42 void WebPushDaemonConnectionConfiguration::encode(Encoder& encoder) const 48 43 { 49 switch (messageType) { 50 case MessageType::EchoTwice: 51 case MessageType::GetOriginsWithPushAndNotificationPermissions: 52 case MessageType::DeletePushAndNotificationRegistration: 53 case MessageType::RequestSystemNotificationPermission: 54 return true; 55 case MessageType::SetHostAppAuditToken: 56 case MessageType::SetDebugModeIsEnabled: 57 return false; 58 } 59 ASSERT_NOT_REACHED(); 60 return false; 44 encoder << useMockBundlesForTesting << hostAppAuditTokenData; 45 } 46 47 template<class Decoder> 48 std::optional<WebPushDaemonConnectionConfiguration> WebPushDaemonConnectionConfiguration::decode(Decoder& decoder) 49 { 50 std::optional<bool> useMockBundlesForTesting; 51 decoder >> useMockBundlesForTesting; 52 if (!useMockBundlesForTesting) 53 return std::nullopt; 54 55 std::optional<std::optional<Vector<uint8_t>>> hostAppAuditTokenData; 56 decoder >> hostAppAuditTokenData; 57 if (!hostAppAuditTokenData) 58 return std::nullopt; 59 60 return { { 61 WTFMove(*useMockBundlesForTesting), 62 WTFMove(*hostAppAuditTokenData) 63 } }; 61 64 } 62 65 -
branches/safari-613.1.10-branch/Source/WebKit/Shared/WebPushDaemonConstants.h
r286075 r286614 41 41 DeletePushAndNotificationRegistration, 42 42 GetOriginsWithPushAndNotificationPermissions, 43 SetHostAppAuditToken,44 43 SetDebugModeIsEnabled, 44 UpdateConnectionConfiguration, 45 45 }; 46 46 … … 53 53 case MessageType::RequestSystemNotificationPermission: 54 54 return true; 55 case MessageType::SetHostAppAuditToken:56 55 case MessageType::SetDebugModeIsEnabled: 56 case MessageType::UpdateConnectionConfiguration: 57 57 return false; 58 58 } -
branches/safari-613.1.10-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
r285746 r286614 87 87 // Testing only. 88 88 @property (nonatomic) BOOL allLoadsBlockedByDeviceManagementRestrictionsForTesting WK_API_AVAILABLE(macos(10.15), ios(13.0)); 89 @property (nonatomic) BOOL webPushDaemonUsesMockBundlesForTesting WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 89 90 90 91 @end -
branches/safari-613.1.10-branch/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
r284591 r286614 562 562 } 563 563 564 - (BOOL)webPushDaemonUsesMockBundlesForTesting 565 { 566 return _configuration->webPushDaemonUsesMockBundlesForTesting(); 567 } 568 569 - (void)setWebPushDaemonUsesMockBundlesForTesting:(BOOL)usesMockBundles 570 { 571 _configuration->setWebPushDaemonUsesMockBundlesForTesting(usesMockBundles); 572 } 573 564 574 - (API::Object&)_apiObject 565 575 { -
branches/safari-613.1.10-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
r285267 r286614 1859 1859 networkSessionParameters.deviceManagementRestrictionsEnabled = m_configuration->deviceManagementRestrictionsEnabled(); 1860 1860 networkSessionParameters.allLoadsBlockedByDeviceManagementRestrictionsForTesting = m_configuration->allLoadsBlockedByDeviceManagementRestrictionsForTesting(); 1861 networkSessionParameters.webPushDaemonConnectionConfiguration = m_configuration->webPushDaemonConnectionConfiguration(); 1861 1862 networkSessionParameters.networkCacheDirectory = WTFMove(networkCacheDirectory); 1862 1863 networkSessionParameters.networkCacheDirectoryExtensionHandle = WTFMove(networkCacheDirectoryExtensionHandle); -
branches/safari-613.1.10-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
r284887 r286614 27 27 #include "WebsiteDataStoreConfiguration.h" 28 28 29 #include "WebPushDaemonConnectionConfiguration.h" 29 30 #include "WebsiteDataStore.h" 30 31 … … 91 92 copy->m_deviceManagementRestrictionsEnabled = this->m_deviceManagementRestrictionsEnabled; 92 93 copy->m_allLoadsBlockedByDeviceManagementRestrictionsForTesting = this->m_allLoadsBlockedByDeviceManagementRestrictionsForTesting; 94 copy->m_webPushDaemonUsesMockBundlesForTesting = this->m_webPushDaemonUsesMockBundlesForTesting; 93 95 copy->m_boundInterfaceIdentifier = this->m_boundInterfaceIdentifier; 94 96 copy->m_allowsCellularAccess = this->m_allowsCellularAccess; … … 118 120 } 119 121 122 WebPushD::WebPushDaemonConnectionConfiguration WebsiteDataStoreConfiguration::webPushDaemonConnectionConfiguration() const 123 { 124 return { m_webPushDaemonUsesMockBundlesForTesting, { } }; 125 } 126 120 127 } // namespace WebKit -
branches/safari-613.1.10-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
r284591 r286614 33 33 namespace WebKit { 34 34 35 namespace WebPushD { 36 struct WebPushDaemonConnectionConfiguration; 37 } 38 35 39 enum class IsPersistent : bool { No, Yes }; 36 40 enum class WillCopyPathsFromExistingConfiguration : bool { No, Yes }; … … 156 160 bool allLoadsBlockedByDeviceManagementRestrictionsForTesting() const { return m_allLoadsBlockedByDeviceManagementRestrictionsForTesting; } 157 161 void setAllLoadsBlockedByDeviceManagementRestrictionsForTesting(bool blocked) { m_allLoadsBlockedByDeviceManagementRestrictionsForTesting = blocked; } 162 163 bool webPushDaemonUsesMockBundlesForTesting() const { return m_webPushDaemonUsesMockBundlesForTesting; } 164 void setWebPushDaemonUsesMockBundlesForTesting(bool usesMockBundles) { m_webPushDaemonUsesMockBundlesForTesting = usesMockBundles; } 165 WebPushD::WebPushDaemonConnectionConfiguration webPushDaemonConnectionConfiguration() const; 158 166 159 167 const String& dataConnectionServiceType() const { return m_dataConnectionServiceType; } … … 229 237 bool m_deviceManagementRestrictionsEnabled { false }; 230 238 bool m_allLoadsBlockedByDeviceManagementRestrictionsForTesting { false }; 239 bool m_webPushDaemonUsesMockBundlesForTesting { false }; 231 240 bool m_allowsCellularAccess { true }; 232 241 bool m_legacyTLSEnabled { true }; -
branches/safari-613.1.10-branch/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r286613 r286614 1020 1020 517A530F1F47A86200DCDC0A /* WebSWClientConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */; }; 1021 1021 517A53101F47A86200DCDC0A /* WebSWClientConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */; }; 1022 517B5F2E2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 517B5F2D2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h */; }; 1023 517B5F2F2757382B002DC22D /* WebPushDaemonConnectionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 517B5F2D2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h */; }; 1022 1024 517CF0E3163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */; }; 1023 1025 517CF0E3163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp */; }; … … 4318 4320 517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSWClientConnectionMessages.h; path = DerivedSources/WebKit2/WebSWClientConnectionMessages.h; sourceTree = BUILT_PRODUCTS_DIR; }; 4319 4321 517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSWClientConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/WebSWClientConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 4322 517B5F2D2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPushDaemonConnectionConfiguration.h; sourceTree = "<group>"; }; 4320 4323 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcessConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/NetworkProcessConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 4321 4324 517CF0E1163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CacheStorageEngineConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/CacheStorageEngineConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; … … 7114 7117 BC306822125A6B9400E71278 /* WebProcessCreationParameters.h */, 7115 7118 467E43E72243FF6D00B13924 /* WebProcessDataStoreParameters.h */, 7119 517B5F2D2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h */, 7116 7120 512CD6992721F04900F7F8EC /* WebPushDaemonConstants.h */, 7117 7121 5C8DD37F1FE4519200F2A556 /* WebsiteAutoplayPolicy.h */, … … 12368 12372 5C1579FC2717AF5000ED5280 /* DaemonUtilities.h in Headers */, 12369 12373 5160E956274B887200567388 /* AppBundleRequest.h in Headers */, 12374 517B5F2F2757382B002DC22D /* WebPushDaemonConnectionConfiguration.h in Headers */, 12370 12375 512CD69F2723393A00F7F8EC /* WebPushDaemon.h in Headers */, 12371 12376 51F7BB77274498BB00C45A72 /* MockAppBundleForTesting.h in Headers */, … … 13467 13472 5C795D71229F3757003FF1C4 /* WKContextMenuElementInfoPrivate.h in Headers */, 13468 13473 51A555F6128C6C47009ABCEC /* WKContextMenuItem.h in Headers */, 13474 517B5F2E2757382A002DC22D /* WebPushDaemonConnectionConfiguration.h in Headers */, 13469 13475 51A55601128C6D92009ABCEC /* WKContextMenuItemTypes.h in Headers */, 13470 13476 A1EA02381DABFF7E0096021F /* WKContextMenuListener.h in Headers */, -
branches/safari-613.1.10-branch/Source/WebKit/webpushd/AppBundleRequest.mm
r286613 r286614 34 34 35 35 AppBundleRequest::AppBundleRequest(ClientConnection& connection, const String& originString) 36 : m_connection( &connection)36 : m_connection(connection) 37 37 , m_originString(originString) 38 38 { … … 50 50 m_transaction = adoptOSObject(os_transaction_create(transactionDescription())); 51 51 52 m_appBundle = MockAppBundleForTesting::create(m_originString, m_connection->hostAppCodeSigningIdentifier(), *this); 52 if (m_connection->useMockBundlesForTesting()) 53 m_appBundle = MockAppBundleForTesting::create(m_originString, m_connection->hostAppCodeSigningIdentifier(), *this); 54 else 55 RELEASE_ASSERT_NOT_REACHED(); 56 53 57 startInternal(); 54 58 } -
branches/safari-613.1.10-branch/Source/WebKit/webpushd/PushClientConnection.h
r286613 r286614 35 35 #include <wtf/text/WTFString.h> 36 36 37 namespace WebKit { 38 namespace WebPushD { 39 struct WebPushDaemonConnectionConfiguration; 40 } 41 } 42 using WebKit::WebPushD::WebPushDaemonConnectionConfiguration; 43 37 44 namespace WebPushD { 38 45 … … 44 51 static Ref<ClientConnection> create(xpc_connection_t); 45 52 53 void updateConnectionConfiguration(const WebPushDaemonConnectionConfiguration&); 54 46 55 bool hasHostAppAuditToken() const { return !!m_hostAppAuditToken; } 47 void setHostAppAuditTokenData(const Vector<uint8_t>&);48 56 49 57 const String& hostAppCodeSigningIdentifier(); … … 52 60 bool debugModeIsEnabled() const { return m_debugModeEnabled; } 53 61 void setDebugModeIsEnabled(bool); 62 63 bool useMockBundlesForTesting() const { return m_useMockBundlesForTesting; } 54 64 55 65 void enqueueAppBundleRequest(std::unique_ptr<AppBundleRequest>&&); … … 62 72 63 73 void maybeStartNextAppBundleRequest(); 64 74 void setHostAppAuditTokenData(const Vector<uint8_t>&); 75 65 76 OSObjectPtr<xpc_connection_t> m_xpcConnection; 66 77 … … 73 84 74 85 bool m_debugModeEnabled { false }; 86 bool m_useMockBundlesForTesting { false }; 75 87 }; 76 88 -
branches/safari-613.1.10-branch/Source/WebKit/webpushd/PushClientConnection.mm
r286613 r286614 30 30 #import "CodeSigning.h" 31 31 #import "WebPushDaemon.h" 32 #import "WebPushDaemonConnectionConfiguration.h" 32 33 #import <JavaScriptCore/ConsoleTypes.h> 33 34 #import <wtf/Vector.h> … … 46 47 } 47 48 49 void ClientConnection::updateConnectionConfiguration(const WebPushDaemonConnectionConfiguration& configuration) 50 { 51 if (configuration.hostAppAuditTokenData) 52 setHostAppAuditTokenData(*configuration.hostAppAuditTokenData); 53 54 m_useMockBundlesForTesting = configuration.useMockBundlesForTesting; 55 } 56 48 57 void ClientConnection::setHostAppAuditTokenData(const Vector<uint8_t>& tokenData) 49 58 { 50 RELEASE_ASSERT(!hasHostAppAuditToken());51 52 59 audit_token_t token; 53 60 if (tokenData.size() != sizeof(token)) { … … 57 64 58 65 memcpy(&token, tokenData.data(), tokenData.size()); 66 67 if (hasHostAppAuditToken()) { 68 // Verify the token being set is equivalent to the last one set 69 audit_token_t& existingAuditToken = *m_hostAppAuditToken; 70 RELEASE_ASSERT(!memcmp(&existingAuditToken, &token, sizeof(token))); 71 return; 72 } 73 59 74 m_hostAppAuditToken = WTFMove(token); 60 75 } -
branches/safari-613.1.10-branch/Source/WebKit/webpushd/WebPushDaemon.h
r286613 r286614 27 27 28 28 #include "PushClientConnection.h" 29 #include "WebPushDaemonConnectionConfiguration.h" 29 30 #include "WebPushDaemonConstants.h" 30 31 #include <wtf/Forward.h> … … 39 40 enum class MessageLevel : uint8_t; 40 41 } 42 43 using WebKit::WebPushD::WebPushDaemonConnectionConfiguration; 41 44 42 45 namespace WebPushD { … … 58 61 void getOriginsWithPushAndNotificationPermissions(ClientConnection*, CompletionHandler<void(const Vector<String>&)>&& replySender); 59 62 void deletePushAndNotificationRegistration(ClientConnection*, const String& originString, CompletionHandler<void(const String&)>&& replySender); 60 void setHostAppAuditToken(ClientConnection*, const Vector<uint8_t>&);61 63 void setDebugModeIsEnabled(ClientConnection*, bool); 64 void updateConnectionConfiguration(ClientConnection*, const WebPushDaemonConnectionConfiguration&); 62 65 63 66 void broadcastDebugMessage(JSC::MessageLevel, const String&); -
branches/safari-613.1.10-branch/Source/WebKit/webpushd/WebPushDaemon.mm
r286613 r286614 33 33 #import "HandleMessage.h" 34 34 #import "MockAppBundleRegistry.h" 35 #import "WebPushDaemonConstants.h"36 35 37 36 #import <wtf/CompletionHandler.h> … … 71 70 END 72 71 73 FUNCTION(setHostAppAuditToken)74 ARGUMENTS(Vector<uint8_t>)75 END76 77 72 FUNCTION(setDebugModeIsEnabled) 78 73 ARGUMENTS(bool) 74 END 75 76 FUNCTION(updateConnectionConfiguration) 77 ARGUMENTS(WebPushDaemonConnectionConfiguration) 79 78 END 80 79 … … 226 225 handleWebPushDMessageWithReply<MessageInfo::requestSystemNotificationPermission>(clientConnection, encodedMessage, WTFMove(replySender)); 227 226 break; 228 case MessageType::SetHostAppAuditToken:229 handleWebPushDMessage<MessageInfo::setHostAppAuditToken>(clientConnection, encodedMessage);230 break;231 227 case MessageType::SetDebugModeIsEnabled: 232 228 handleWebPushDMessage<MessageInfo::setDebugModeIsEnabled>(clientConnection, encodedMessage); 229 break; 230 case MessageType::UpdateConnectionConfiguration: 231 handleWebPushDMessage<MessageInfo::updateConnectionConfiguration>(clientConnection, encodedMessage); 233 232 break; 234 233 } … … 267 266 } 268 267 268 if (connection->useMockBundlesForTesting()) { 269 replySender(MockAppBundleRegistry::singleton().getOriginsWithRegistrations(connection->hostAppCodeSigningIdentifier())); 270 return; 271 } 272 269 273 // FIXME: This will need platform-specific implementations for real world bundles once implemented. 270 replySender( MockAppBundleRegistry::singleton().getOriginsWithRegistrations(connection->hostAppCodeSigningIdentifier()));274 replySender({ }); 271 275 } 272 276 … … 281 285 } 282 286 283 void Daemon::setHostAppAuditToken(ClientConnection* clientConnection, const Vector<uint8_t>& tokenData)284 {285 clientConnection->setHostAppAuditTokenData(tokenData);286 }287 288 287 void Daemon::setDebugModeIsEnabled(ClientConnection* clientConnection, bool enabled) 289 288 { 290 289 clientConnection->setDebugModeIsEnabled(enabled); 290 } 291 292 void Daemon::updateConnectionConfiguration(ClientConnection* clientConnection, const WebPushDaemonConnectionConfiguration& configuration) 293 { 294 clientConnection->updateConnectionConfiguration(configuration); 291 295 } 292 296 -
branches/safari-613.1.10-branch/Tools/ChangeLog
r286204 r286614 1 2021-12-06 Russell Epstein <repstein@apple.com> 2 3 Cherry-pick r286355. rdar://problem/86052131 4 5 Add WKWebsiteDataStore configuration option to enable Mock app bundle testing. 6 https://bugs.webkit.org/show_bug.cgi?id=233679 7 8 Reviewed by Tim Horton. 9 10 Source/WebKit: 11 12 Covered by API tests. 13 14 We're about to land actual implementations of app permissions bundles. 15 But the mock bundles still have a place for testing. 16 We need a way to switch between Mock and Native. 17 18 This patch takes the opportunity to plumb out a WebPushDaemonConnectionConfiguration object 19 that can easily be augmented in future patches to add new options without messing with messaging directly. 20 21 * NetworkProcess/NetworkSession.h: 22 (WebKit::NetworkSession::webpushdUsesMockBundlesForTesting const): 23 24 * NetworkProcess/NetworkSessionCreationParameters.cpp: 25 (WebKit::NetworkSessionCreationParameters::encode const): 26 (WebKit::NetworkSessionCreationParameters::decode): 27 * NetworkProcess/NetworkSessionCreationParameters.h: 28 29 * NetworkProcess/Notifications/NetworkNotificationManager.cpp: 30 (WebKit::NetworkNotificationManager::maybeSendConnectionConfiguration const): 31 (WebKit::NetworkNotificationManager::sendMessage const): 32 (WebKit::NetworkNotificationManager::sendMessageWithReply const): 33 (WebKit::NetworkNotificationManager::maybeSendHostAppAuditToken const): Deleted. 34 * NetworkProcess/Notifications/NetworkNotificationManager.h: 35 36 * NetworkProcess/cocoa/NetworkSessionCocoa.h: 37 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: 38 (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): 39 40 * Shared/WebPushDaemonConnectionConfiguration.h: Copied from Source/WebKit/Shared/WebPushDaemonConstants.h. 41 (WebKit::WebPushD::WebPushDaemonConnectionConfiguration::encode const): 42 (WebKit::WebPushD::WebPushDaemonConnectionConfiguration::decode): 43 44 * Shared/WebPushDaemonConstants.h: 45 (WebKit::WebPushD::messageTypeSendsReply): 46 47 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: 48 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: 49 (-[_WKWebsiteDataStoreConfiguration webpushdUsesMockBundlesForTesting]): 50 (-[_WKWebsiteDataStoreConfiguration setWebpushdUsesMockBundlesForTesting:]): 51 52 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 53 (WebKit::WebsiteDataStore::parameters): 54 55 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: 56 (WebKit::WebsiteDataStoreConfiguration::copy const): 57 (WebKit::WebsiteDataStoreConfiguration::webPushDaemonConnectionConfiguration const): 58 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: 59 (WebKit::WebsiteDataStoreConfiguration::webpushdUsesMockBundlesForTesting const): 60 (WebKit::WebsiteDataStoreConfiguration::setWebpushdUsesMockBundlesForTesting): 61 62 * WebKit.xcodeproj/project.pbxproj: 63 64 * webpushd/AppBundleRequest.mm: 65 (WebPushD::AppBundleRequest::AppBundleRequest): 66 (WebPushD::AppBundleRequest::start): 67 68 * webpushd/PushClientConnection.h: 69 (WebPushD::ClientConnection::hasHostAppAuditToken const): 70 (WebPushD::ClientConnection::useMockBundlesForTesting const): 71 * webpushd/PushClientConnection.mm: 72 (WebPushD::ClientConnection::updateConnectionConfiguration): 73 (WebPushD::ClientConnection::setHostAppAuditTokenData): 74 75 * webpushd/WebPushDaemon.h: 76 * webpushd/WebPushDaemon.mm: 77 (WebPushD::Daemon::decodeAndHandleMessage): 78 (WebPushD::Daemon::getOriginsWithPushAndNotificationPermissions): 79 (WebPushD::Daemon::setDebugModeIsEnabled): 80 (WebPushD::Daemon::updateConnectionConfiguration): 81 (WebPushD::Daemon::setHostAppAuditToken): Deleted. 82 83 Tools: 84 85 * TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm: 86 87 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@286355 268f45cc-cd09-0410-ab3c-d52691b4dbfc 88 89 2021-12-01 Brady Eidson <beidson@apple.com> 90 91 Add WKWebsiteDataStore configuration option to enable Mock app bundle testing. 92 https://bugs.webkit.org/show_bug.cgi?id=233679 93 94 Reviewed by Tim Horton. 95 96 * TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm: 97 1 98 2021-11-29 Nikolas Zimmermann <nzimmermann@igalia.com> 2 99 -
branches/safari-613.1.10-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm
r286613 r286614 266 266 auto dataStoreConfiguration = adoptNS([_WKWebsiteDataStoreConfiguration new]); 267 267 dataStoreConfiguration.get().webPushMachServiceName = @"org.webkit.webpushtestdaemon.service"; 268 dataStoreConfiguration.get().webPushDaemonUsesMockBundlesForTesting = YES; 268 269 auto dataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration.get()]); 269 270
Note:
See TracChangeset
for help on using the changeset viewer.