Changeset 283383 in webkit
- Timestamp:
- Oct 1, 2021, 11:13:51 AM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 11 edited
-
ChangeLog (modified) (1 diff)
-
NetworkProcess/NetworkSession.cpp (modified) (4 diffs)
-
NetworkProcess/NetworkSession.h (modified) (1 diff)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp (modified) (5 diffs)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h (modified) (4 diffs)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.cpp (modified) (8 diffs)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h (modified) (4 diffs)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.cpp (modified) (2 diffs)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.h (modified) (2 diffs)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp (modified) (2 diffs)
-
NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r283378 r283383 1 2021-10-01 Alex Christensen <achristensen@webkit.org> 2 3 Move ephemeral PCM storage from PCM manager to NetworkSession 4 https://bugs.webkit.org/show_bug.cgi?id=231025 5 6 Reviewed by Kate Cheney. 7 8 With the daemon, we want the network process to hang on to an ephemeral PCM instead of the daemon, 9 which is responsible for many network processes. When attribution happens we insert the PCM then 10 attribute it like we did before, but from the NetworkSession instead of from the PCM manager. 11 12 Functionality covered by existing tests. 13 This just reduces state in the daemon. All the other state in the PCM manager is only used for tests. 14 15 * NetworkProcess/NetworkSession.cpp: 16 (WebKit::NetworkSession::storePrivateClickMeasurement): 17 (WebKit::NetworkSession::handlePrivateClickMeasurementConversion): 18 (WebKit::NetworkSession::clearPrivateClickMeasurement): 19 (WebKit::NetworkSession::setPrivateClickMeasurementEphemeralMeasurementForTesting): 20 * NetworkProcess/NetworkSession.h: 21 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp: 22 (WebKit::PrivateClickMeasurementManager::storeUnattributed): 23 (WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken): 24 (WebKit::PrivateClickMeasurementManager::insertPrivateClickMeasurement): 25 (WebKit::PrivateClickMeasurementManager::migratePrivateClickMeasurementFromLegacyStorage): 26 (WebKit::PrivateClickMeasurementManager::attribute): 27 (WebKit::PrivateClickMeasurementManager::clear): 28 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h: 29 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.cpp: 30 (WebKit::PCM::messageTypeSendsReply): 31 (WebKit::PCM::decodeMessageAndSendToManager): 32 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h: 33 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.cpp: 34 (WebKit::PCM::ManagerProxy::storeUnattributed): 35 (WebKit::PCM::ManagerProxy::setEphemeralMeasurementForTesting): Deleted. 36 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.h: 37 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp: 38 (WebKit::PCM::Store::insertPrivateClickMeasurement): 39 (WebKit::PCM::Store::attributePrivateClickMeasurement): 40 * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.h: 41 1 42 2021-10-01 Per Arne Vollan <pvollan@apple.com> 2 43 -
trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp
r283316 r283383 322 322 void NetworkSession::storePrivateClickMeasurement(WebCore::PrivateClickMeasurement&& unattributedPrivateClickMeasurement) 323 323 { 324 privateClickMeasurement().storeUnattributed(WTFMove(unattributedPrivateClickMeasurement)); 324 if (m_isRunningEphemeralMeasurementTest) 325 unattributedPrivateClickMeasurement.setEphemeral(PrivateClickMeasurement::AttributionEphemeral::Yes); 326 if (unattributedPrivateClickMeasurement.isEphemeral()) { 327 m_ephemeralMeasurement = WTFMove(unattributedPrivateClickMeasurement); 328 return; 329 } 330 privateClickMeasurement().storeUnattributed(WTFMove(unattributedPrivateClickMeasurement), [] { }); 325 331 } 326 332 … … 332 338 auto appBundleID = String(); 333 339 #endif 340 341 if (m_ephemeralMeasurement) { 342 auto ephemeralMeasurement = *std::exchange(m_ephemeralMeasurement, std::nullopt); 343 344 auto redirectDomain = RegistrableDomain(redirectRequest.url()); 345 auto firstPartyForCookies = redirectRequest.firstPartyForCookies(); 346 347 // Ephemeral measurement can only have one pending click. 348 if (ephemeralMeasurement.sourceSite().registrableDomain != redirectDomain) 349 return; 350 if (ephemeralMeasurement.destinationSite().registrableDomain != RegistrableDomain(firstPartyForCookies)) 351 return; 352 353 // Insert ephemeral measurement right before attribution. 354 privateClickMeasurement().storeUnattributed(WTFMove(ephemeralMeasurement), [this, weakThis = makeWeakPtr(*this), attributionTriggerData = WTFMove(attributionTriggerData), requestURL, redirectDomain = WTFMove(redirectDomain), firstPartyForCookies = WTFMove(firstPartyForCookies), appBundleID = WTFMove(appBundleID)] () mutable { 355 if (!weakThis) 356 return; 357 privateClickMeasurement().handleAttribution(WTFMove(attributionTriggerData), requestURL, WTFMove(redirectDomain), firstPartyForCookies, appBundleID); 358 }); 359 return; 360 } 361 334 362 privateClickMeasurement().handleAttribution(WTFMove(attributionTriggerData), requestURL, RegistrableDomain(redirectRequest.url()), redirectRequest.firstPartyForCookies(), appBundleID); 335 363 } … … 343 371 { 344 372 privateClickMeasurement().clear(WTFMove(completionHandler)); 373 m_ephemeralMeasurement = std::nullopt; 374 m_isRunningEphemeralMeasurementTest = false; 345 375 } 346 376 … … 382 412 void NetworkSession::setPrivateClickMeasurementEphemeralMeasurementForTesting(bool value) 383 413 { 384 privateClickMeasurement().setEphemeralMeasurementForTesting(value);414 m_isRunningEphemeralMeasurementTest = value; 385 415 } 386 416 -
trunk/Source/WebKit/NetworkProcess/NetworkSession.h
r283316 r283383 216 216 bool m_isStaleWhileRevalidateEnabled { false }; 217 217 UniqueRef<PCM::ManagerInterface> m_privateClickMeasurement; 218 std::optional<WebCore::PrivateClickMeasurement> m_ephemeralMeasurement; 219 bool m_isRunningEphemeralMeasurementTest { false }; 218 220 219 221 HashSet<Ref<NetworkResourceLoader>> m_keptAliveLoads; -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp
r283316 r283383 71 71 } 72 72 73 void PrivateClickMeasurementManager::storeUnattributed(PrivateClickMeasurement&& measurement )74 { 75 if (!featureEnabled()) 76 return ;73 void PrivateClickMeasurementManager::storeUnattributed(PrivateClickMeasurement&& measurement, CompletionHandler<void()>&& completionHandler) 74 { 75 if (!featureEnabled()) 76 return completionHandler(); 77 77 78 78 clearExpired(); … … 110 110 m_client->broadcastConsoleMessage(MessageLevel::Log, "[Private Click Measurement] Storing a click."_s); 111 111 112 insertPrivateClickMeasurement(WTFMove(measurement), PrivateClickMeasurementAttributionType::Unattributed );112 insertPrivateClickMeasurement(WTFMove(measurement), PrivateClickMeasurementAttributionType::Unattributed, WTFMove(completionHandler)); 113 113 } 114 114 … … 213 213 m_client->broadcastConsoleMessage(MessageLevel::Log, "[Private Click Measurement] Storing a secret token."_s); 214 214 215 insertPrivateClickMeasurement(WTFMove(measurement), PrivateClickMeasurementAttributionType::Unattributed); 216 }); 217 218 } 219 220 void PrivateClickMeasurementManager::insertPrivateClickMeasurement(PrivateClickMeasurement&& measurement, PrivateClickMeasurementAttributionType type) 221 { 222 if (m_isRunningEphemeralMeasurementTest) 223 measurement.setEphemeral(PrivateClickMeasurement::AttributionEphemeral::Yes); 224 if (measurement.isEphemeral()) { 225 m_ephemeralMeasurement = WTFMove(measurement); 226 return; 227 } 228 store().insertPrivateClickMeasurement(WTFMove(measurement), type); 215 insertPrivateClickMeasurement(WTFMove(measurement), PrivateClickMeasurementAttributionType::Unattributed, [] { }); 216 }); 217 218 } 219 220 void PrivateClickMeasurementManager::insertPrivateClickMeasurement(PrivateClickMeasurement&& measurement, PrivateClickMeasurementAttributionType type, CompletionHandler<void()>&& completionHandler) 221 { 222 store().insertPrivateClickMeasurement(WTFMove(measurement), type, WTFMove(completionHandler)); 229 223 } 230 224 231 225 void PrivateClickMeasurementManager::migratePrivateClickMeasurementFromLegacyStorage(PrivateClickMeasurement&& measurement, PrivateClickMeasurementAttributionType type) 232 226 { 233 store().insertPrivateClickMeasurement(WTFMove(measurement), type );227 store().insertPrivateClickMeasurement(WTFMove(measurement), type, [] { }); 234 228 } 235 229 … … 277 271 return; 278 272 279 if (m_ephemeralMeasurement) { 280 // Ephemeral measurement can only have one pending click. 281 if (m_ephemeralMeasurement->sourceSite() != sourceSite) 282 return; 283 if (m_ephemeralMeasurement->destinationSite() != destinationSite) 284 return; 285 } 286 287 store().attributePrivateClickMeasurement(sourceSite, destinationSite, applicationBundleIdentifier, WTFMove(attributionTriggerData), std::exchange(m_ephemeralMeasurement, std::nullopt), [this, weakThis = makeWeakPtr(*this)] (auto attributionSecondsUntilSendData, auto debugInfo) { 273 store().attributePrivateClickMeasurement(sourceSite, destinationSite, applicationBundleIdentifier, WTFMove(attributionTriggerData), [this, weakThis = makeWeakPtr(*this)] (auto attributionSecondsUntilSendData, auto debugInfo) { 288 274 if (!weakThis) 289 275 return; … … 446 432 { 447 433 m_firePendingAttributionRequestsTimer.stop(); 448 m_ephemeralMeasurement = std::nullopt;449 m_isRunningEphemeralMeasurementTest = false;450 434 m_privateClickMeasurementAppBundleIDForTesting = std::nullopt; 451 435 -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h
r283316 r283383 48 48 using ApplicationBundleIdentifier = String; 49 49 50 void storeUnattributed(PrivateClickMeasurement&& ) final;50 void storeUnattributed(PrivateClickMeasurement&&, CompletionHandler<void()>&&) final; 51 51 void handleAttribution(AttributionTriggerData&&, const URL& requestURL, WebCore::RegistrableDomain&& redirectDomain, const URL& firstPartyURL, const ApplicationBundleIdentifier&) final; 52 52 void clear(CompletionHandler<void()>&&) final; … … 61 61 void markAllUnattributedAsExpiredForTesting() final; 62 62 void markAttributedPrivateClickMeasurementsAsExpiredForTesting(CompletionHandler<void()>&&) final; 63 void setEphemeralMeasurementForTesting(bool value) final { m_isRunningEphemeralMeasurementTest = value; }64 63 void setPCMFraudPreventionValuesForTesting(String&& unlinkableToken, String&& secretToken, String&& signature, String&& keyID) final; 65 64 void startTimerImmediatelyForTesting() final; … … 74 73 void getTokenPublicKey(PrivateClickMeasurement&&, PrivateClickMeasurement::AttributionReportEndpoint, PrivateClickMeasurement::PcmDataCarried, Function<void(PrivateClickMeasurement&& attribution, const String& publicKeyBase64URL)>&&); 75 74 void getSignedUnlinkableToken(PrivateClickMeasurement&&); 76 void insertPrivateClickMeasurement(PrivateClickMeasurement&&, PrivateClickMeasurementAttributionType );75 void insertPrivateClickMeasurement(PrivateClickMeasurement&&, PrivateClickMeasurementAttributionType, CompletionHandler<void()>&&); 77 76 void clearSentAttribution(PrivateClickMeasurement&&, PrivateClickMeasurement::AttributionReportEndpoint); 78 77 void attribute(const SourceSite&, const AttributionDestinationSite&, AttributionTriggerData&&, const ApplicationBundleIdentifier&); … … 84 83 bool debugModeEnabled() const; 85 84 86 std::optional<PrivateClickMeasurement> m_ephemeralMeasurement;87 85 WebCore::Timer m_firePendingAttributionRequestsTimer; 88 86 bool m_isRunningTest { false }; 89 bool m_isRunningEphemeralMeasurementTest { false };90 87 std::optional<URL> m_tokenPublicKeyURLForTesting; 91 88 std::optional<URL> m_tokenSignatureURLForTesting; -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.cpp
r283316 r283383 49 49 FUNCTION(storeUnattributed) 50 50 ARGUMENTS(WebCore::PrivateClickMeasurement) 51 REPLY() 51 52 END 52 53 … … 97 98 ARGUMENTS() 98 99 REPLY() 99 END100 101 FUNCTION(setEphemeralMeasurementForTesting)102 ARGUMENTS(bool)103 100 END 104 101 … … 134 131 EMPTY_REPLY(markAttributedPrivateClickMeasurementsAsExpiredForTesting); 135 132 EMPTY_REPLY(destroyStoreForTesting); 133 EMPTY_REPLY(storeUnattributed); 136 134 #undef EMPTY_REPLY 137 135 … … 148 146 { 149 147 switch (messageType) { 150 case MessageType::StoreUnattributed:151 148 case MessageType::HandleAttribution: 152 149 case MessageType::MigratePrivateClickMeasurementFromLegacyStorage: … … 156 153 case MessageType::SetAttributionReportURLsForTesting: 157 154 case MessageType::MarkAllUnattributedAsExpiredForTesting: 158 case MessageType::SetEphemeralMeasurementForTesting:159 155 case MessageType::SetPCMFraudPreventionValuesForTesting: 160 156 case MessageType::StartTimerImmediatelyForTesting: … … 162 158 case MessageType::AllowTLSCertificateChainForLocalPCMTesting: 163 159 return false; 160 case MessageType::StoreUnattributed: 164 161 case MessageType::MarkAttributedPrivateClickMeasurementsAsExpiredForTesting: 165 162 case MessageType::DestroyStoreForTesting: … … 226 223 switch (messageType) { 227 224 case PCM::MessageType::StoreUnattributed: 228 handlePCMMessage <MessageInfo::storeUnattributed>(WTFMove(encodedMessage));225 handlePCMMessageWithReply<MessageInfo::storeUnattributed>(WTFMove(encodedMessage), WTFMove(replySender)); 229 226 break; 230 227 case PCM::MessageType::HandleAttribution: … … 261 258 handlePCMMessageWithReply<MessageInfo::markAttributedPrivateClickMeasurementsAsExpiredForTesting>(WTFMove(encodedMessage), WTFMove(replySender)); 262 259 break; 263 case PCM::MessageType::SetEphemeralMeasurementForTesting:264 handlePCMMessage<MessageInfo::setEphemeralMeasurementForTesting>(WTFMove(encodedMessage));265 break;266 260 case PCM::MessageType::SetPCMFraudPreventionValuesForTesting: 267 261 handlePCMMessage<MessageInfo::setPCMFraudPreventionValuesForTesting>(WTFMove(encodedMessage)); -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h
r283316 r283383 53 53 using ApplicationBundleIdentifier = String; 54 54 55 virtual void storeUnattributed(PrivateClickMeasurement&& ) = 0;55 virtual void storeUnattributed(PrivateClickMeasurement&&, CompletionHandler<void()>&&) = 0; 56 56 virtual void handleAttribution(AttributionTriggerData&&, const URL& requestURL, WebCore::RegistrableDomain&& redirectDomain, const URL& firstPartyURL, const ApplicationBundleIdentifier&) = 0; 57 57 virtual void clear(CompletionHandler<void()>&&) = 0; … … 66 66 virtual void markAllUnattributedAsExpiredForTesting() = 0; 67 67 virtual void markAttributedPrivateClickMeasurementsAsExpiredForTesting(CompletionHandler<void()>&&) = 0; 68 virtual void setEphemeralMeasurementForTesting(bool) = 0;69 68 virtual void setPCMFraudPreventionValuesForTesting(String&& unlinkableToken, String&& secretToken, String&& signature, String&& keyID) = 0; 70 69 virtual void startTimerImmediatelyForTesting() = 0; … … 91 90 MarkAllUnattributedAsExpiredForTesting, 92 91 MarkAttributedPrivateClickMeasurementsAsExpiredForTesting, 93 SetEphemeralMeasurementForTesting,94 92 SetPCMFraudPreventionValuesForTesting, 95 93 StartTimerImmediatelyForTesting, … … 128 126 WebKit::PCM::MessageType::MarkAllUnattributedAsExpiredForTesting, 129 127 WebKit::PCM::MessageType::MarkAttributedPrivateClickMeasurementsAsExpiredForTesting, 130 WebKit::PCM::MessageType::SetEphemeralMeasurementForTesting,131 128 WebKit::PCM::MessageType::SetPCMFraudPreventionValuesForTesting, 132 129 WebKit::PCM::MessageType::StartTimerImmediatelyForTesting, -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.cpp
r283316 r283383 76 76 : m_connection(machServiceName.utf8()) { } 77 77 78 void ManagerProxy::storeUnattributed(WebCore::PrivateClickMeasurement&& pcm )78 void ManagerProxy::storeUnattributed(WebCore::PrivateClickMeasurement&& pcm, CompletionHandler<void()>&& completionHandler) 79 79 { 80 sendMessage <MessageType::StoreUnattributed>(pcm);80 sendMessageWithReply<MessageType::StoreUnattributed>(WTFMove(completionHandler), pcm); 81 81 } 82 82 … … 136 136 } 137 137 138 void ManagerProxy::setEphemeralMeasurementForTesting(bool value)139 {140 sendMessage<MessageType::SetEphemeralMeasurementForTesting>(value);141 }142 143 138 void ManagerProxy::setPCMFraudPreventionValuesForTesting(String&& unlinkableToken, String&& secretToken, String&& signature, String&& keyID) 144 139 { -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerProxy.h
r283316 r283383 42 42 using ApplicationBundleIdentifier = String; 43 43 44 void storeUnattributed(WebCore::PrivateClickMeasurement&& ) final;44 void storeUnattributed(WebCore::PrivateClickMeasurement&&, CompletionHandler<void()>&&) final; 45 45 void handleAttribution(WebCore::PrivateClickMeasurement::AttributionTriggerData&&, const URL& requestURL, WebCore::RegistrableDomain&& redirectDomain, const URL& firstPartyURL, const ApplicationBundleIdentifier&) final; 46 46 void clear(CompletionHandler<void()>&&) final; … … 55 55 void markAllUnattributedAsExpiredForTesting() final; 56 56 void markAttributedPrivateClickMeasurementsAsExpiredForTesting(CompletionHandler<void()>&&) final; 57 void setEphemeralMeasurementForTesting(bool) final;58 57 void setPCMFraudPreventionValuesForTesting(String&& unlinkableToken, String&& secretToken, String&& signature, String&& keyID) final; 59 58 void startTimerImmediatelyForTesting() final; -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.cpp
r283316 r283383 80 80 } 81 81 82 void Store::insertPrivateClickMeasurement(WebCore::PrivateClickMeasurement&& attribution, PrivateClickMeasurementAttributionType attributionType )82 void Store::insertPrivateClickMeasurement(WebCore::PrivateClickMeasurement&& attribution, PrivateClickMeasurementAttributionType attributionType, CompletionHandler<void()>&& completionHandler) 83 83 { 84 postTask([this, protectedThis = Ref { *this }, attribution = WTFMove(attribution), attributionType ] () mutable {84 postTask([this, protectedThis = Ref { *this }, attribution = WTFMove(attribution), attributionType, completionHandler = WTFMove(completionHandler)] () mutable { 85 85 if (m_database) 86 86 m_database->insertPrivateClickMeasurement(WTFMove(attribution), attributionType); 87 postTaskReply(WTFMove(completionHandler)); 87 88 }); 88 89 } … … 96 97 } 97 98 98 void Store::attributePrivateClickMeasurement(const WebCore::PrivateClickMeasurement::SourceSite& sourceSite, const WebCore::PrivateClickMeasurement::AttributionDestinationSite& destinationSite, const ApplicationBundleIdentifier& applicationBundleIdentifier, WebCore::PrivateClickMeasurement::AttributionTriggerData&& attributionTriggerData, std::optional<WebCore::PrivateClickMeasurement>&& ephemeralMeasurement,CompletionHandler<void(std::optional<WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData>&&, DebugInfo&&)>&& completionHandler)99 void Store::attributePrivateClickMeasurement(const WebCore::PrivateClickMeasurement::SourceSite& sourceSite, const WebCore::PrivateClickMeasurement::AttributionDestinationSite& destinationSite, const ApplicationBundleIdentifier& applicationBundleIdentifier, WebCore::PrivateClickMeasurement::AttributionTriggerData&& attributionTriggerData, CompletionHandler<void(std::optional<WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData>&&, DebugInfo&&)>&& completionHandler) 99 100 { 100 postTask([this, protectedThis = Ref { *this }, sourceSite = sourceSite.isolatedCopy(), destinationSite = destinationSite.isolatedCopy(), applicationBundleIdentifier = applicationBundleIdentifier.isolatedCopy(), attributionTriggerData = WTFMove(attributionTriggerData), ephemeralMeasurement = crossThreadCopy(ephemeralMeasurement),completionHandler = WTFMove(completionHandler)] () mutable {101 postTask([this, protectedThis = Ref { *this }, sourceSite = sourceSite.isolatedCopy(), destinationSite = destinationSite.isolatedCopy(), applicationBundleIdentifier = applicationBundleIdentifier.isolatedCopy(), attributionTriggerData = WTFMove(attributionTriggerData), completionHandler = WTFMove(completionHandler)] () mutable { 101 102 if (!m_database) { 102 103 return postTaskReply([completionHandler = WTFMove(completionHandler)] () mutable { 103 104 completionHandler(std::nullopt, { }); 104 105 }); 105 }106 107 // Insert ephemeral measurement right before attribution.108 if (ephemeralMeasurement) {109 RELEASE_ASSERT(ephemeralMeasurement->isEphemeral());110 m_database->insertPrivateClickMeasurement(WTFMove(*ephemeralMeasurement), PrivateClickMeasurementAttributionType::Unattributed);111 106 } 112 107 -
trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementStore.h
r283316 r283383 53 53 static void processDidResume(); 54 54 55 void insertPrivateClickMeasurement(WebCore::PrivateClickMeasurement&&, WebKit::PrivateClickMeasurementAttributionType );56 void attributePrivateClickMeasurement(const WebCore::PrivateClickMeasurement::SourceSite&, const WebCore::PrivateClickMeasurement::AttributionDestinationSite&, const ApplicationBundleIdentifier&, WebCore::PrivateClickMeasurement::AttributionTriggerData&&, std::optional<WebCore::PrivateClickMeasurement>&& ephemeralMeasurement,CompletionHandler<void(std::optional<WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData>&&, DebugInfo&&)>&&);55 void insertPrivateClickMeasurement(WebCore::PrivateClickMeasurement&&, WebKit::PrivateClickMeasurementAttributionType, CompletionHandler<void()>&&); 56 void attributePrivateClickMeasurement(const WebCore::PrivateClickMeasurement::SourceSite&, const WebCore::PrivateClickMeasurement::AttributionDestinationSite&, const ApplicationBundleIdentifier&, WebCore::PrivateClickMeasurement::AttributionTriggerData&&, CompletionHandler<void(std::optional<WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData>&&, DebugInfo&&)>&&); 57 57 58 58 void privateClickMeasurementToStringForTesting(CompletionHandler<void(String)>&&) const;
Note:
See TracChangeset
for help on using the changeset viewer.