Title: [282006] trunk/Source/WebKit
Revision
282006
Author
commit-qu...@webkit.org
Date
2021-09-03 10:10:42 -0700 (Fri, 03 Sep 2021)

Log Message

Clean up PrivateClickMeasurementManager interface
https://bugs.webkit.org/show_bug.cgi?id=229840

Patch by Alex Christensen <achristen...@webkit.org> on 2021-09-03
Reviewed by Kate Cheney.

Notably, PrivateClickMeasurementManager::store is now private, which makes it possible to use
the interface and have the store in a different process.

* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToPCMDatabaseIfNecessary):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::simulateResourceLoadStatisticsSessionRestart):
(WebKit::NetworkProcess::firePrivateClickMeasurementTimerImmediately): Deleted.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::~NetworkSession):
(WebKit::NetworkSession::firePrivateClickMeasurementTimerImmediatelyForTesting):
(WebKit::NetworkSession::firePrivateClickMeasurementTimerImmediately): Deleted.
* NetworkProcess/NetworkSession.h:
* NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:
(WebKit::PrivateClickMeasurementManager::~PrivateClickMeasurementManager):
(WebKit::PrivateClickMeasurementManager::migratePrivateClickMeasurementFromLegacyStorage):
(WebKit::PrivateClickMeasurementManager::startTimerImmediatelyForTesting):
* NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (282005 => 282006)


--- trunk/Source/WebKit/ChangeLog	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/ChangeLog	2021-09-03 17:10:42 UTC (rev 282006)
@@ -1,3 +1,30 @@
+2021-09-03  Alex Christensen  <achristen...@webkit.org>
+
+        Clean up PrivateClickMeasurementManager interface
+        https://bugs.webkit.org/show_bug.cgi?id=229840
+
+        Reviewed by Kate Cheney.
+
+        Notably, PrivateClickMeasurementManager::store is now private, which makes it possible to use
+        the interface and have the store in a different process.
+
+        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
+        (WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToPCMDatabaseIfNecessary):
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::NetworkProcess::simulateResourceLoadStatisticsSessionRestart):
+        (WebKit::NetworkProcess::firePrivateClickMeasurementTimerImmediately): Deleted.
+        * NetworkProcess/NetworkProcess.h:
+        * NetworkProcess/NetworkSession.cpp:
+        (WebKit::NetworkSession::~NetworkSession):
+        (WebKit::NetworkSession::firePrivateClickMeasurementTimerImmediatelyForTesting):
+        (WebKit::NetworkSession::firePrivateClickMeasurementTimerImmediately): Deleted.
+        * NetworkProcess/NetworkSession.h:
+        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:
+        (WebKit::PrivateClickMeasurementManager::~PrivateClickMeasurementManager):
+        (WebKit::PrivateClickMeasurementManager::migratePrivateClickMeasurementFromLegacyStorage):
+        (WebKit::PrivateClickMeasurementManager::startTimerImmediatelyForTesting):
+        * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:
+
 2021-09-03  Jer Noble  <jer.no...@apple.com>
 
         Buffer large media XHRs in the NetworkProcess to reduce IPC overhead

Modified: trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp (282005 => 282006)


--- trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp	2021-09-03 17:10:42 UTC (rev 282006)
@@ -556,11 +556,11 @@
             if (!networkSession)
                 return;
 
-            auto& pcmStore = networkSession->privateClickMeasurement().store();
+            auto& manager = networkSession->privateClickMeasurement();
             for (auto& pcm : WTFMove(attributed))
-                pcmStore.insertPrivateClickMeasurement(WTFMove(pcm), PrivateClickMeasurementAttributionType::Attributed);
+                manager.migratePrivateClickMeasurementFromLegacyStorage(WTFMove(pcm), PrivateClickMeasurementAttributionType::Attributed);
             for (auto& pcm : WTFMove(unattributed))
-                pcmStore.insertPrivateClickMeasurement(WTFMove(pcm), PrivateClickMeasurementAttributionType::Unattributed);
+                manager.migratePrivateClickMeasurementFromLegacyStorage(WTFMove(pcm), PrivateClickMeasurementAttributionType::Unattributed);
         });
 
     }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (282005 => 282006)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-09-03 17:10:42 UTC (rev 282006)
@@ -2572,18 +2572,13 @@
     completionHandler();
 }
 
-void NetworkProcess::firePrivateClickMeasurementTimerImmediately(PAL::SessionID sessionID)
-{
-    if (auto* session = networkSession(sessionID))
-        session->firePrivateClickMeasurementTimerImmediately();
-}
-
 void NetworkProcess::simulateResourceLoadStatisticsSessionRestart(PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
 {
     // FIXME: Rename this to simulatePrivateClickMeasurementSessionRestart.
     if (auto* session = networkSession(sessionID)) {
-        session->recreatePrivateClickMeasurementStore([this, sessionID, completionHandler = WTFMove(completionHandler)] () mutable {
-            firePrivateClickMeasurementTimerImmediately(sessionID);
+        session->recreatePrivateClickMeasurementStore([session = makeWeakPtr(*session), completionHandler = WTFMove(completionHandler)] () mutable {
+            if (session)
+                session->firePrivateClickMeasurementTimerImmediatelyForTesting();
             completionHandler();
         });
         return;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (282005 => 282006)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-09-03 17:10:42 UTC (rev 282006)
@@ -501,8 +501,6 @@
     void setIsHoldingLockedFiles(bool);
 #endif
 
-    void firePrivateClickMeasurementTimerImmediately(PAL::SessionID);
-
     class SessionStorageQuotaManager {
         WTF_MAKE_FAST_ALLOCATED;
     public:

Modified: trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp (282005 => 282006)


--- trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp	2021-09-03 17:10:42 UTC (rev 282006)
@@ -149,7 +149,6 @@
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
     destroyResourceLoadStatistics([] { });
 #endif
-    privateClickMeasurement().store().close([] { });
     for (auto& loader : std::exchange(m_keptAliveLoads, { }))
         loader->abort();
 }
@@ -376,9 +375,9 @@
     privateClickMeasurement().setPCMFraudPreventionValuesForTesting(WTFMove(unlinkableToken), WTFMove(secretToken), WTFMove(signature), WTFMove(keyID));
 }
 
-void NetworkSession::firePrivateClickMeasurementTimerImmediately()
+void NetworkSession::firePrivateClickMeasurementTimerImmediatelyForTesting()
 {
-    privateClickMeasurement().startTimer(0_s);
+    privateClickMeasurement().startTimerImmediatelyForTesting();
 }
 
 void NetworkSession::addKeptAliveLoad(Ref<NetworkResourceLoader>&& loader)

Modified: trunk/Source/WebKit/NetworkProcess/NetworkSession.h (282005 => 282006)


--- trunk/Source/WebKit/NetworkProcess/NetworkSession.h	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSession.h	2021-09-03 17:10:42 UTC (rev 282006)
@@ -137,7 +137,7 @@
     void markPrivateClickMeasurementsAsExpiredForTesting();
     void setPrivateClickMeasurementEphemeralMeasurementForTesting(bool);
     void setPCMFraudPreventionValuesForTesting(String&& unlinkableToken, String&& secretToken, String&& signature, String&& keyID);
-    void firePrivateClickMeasurementTimerImmediately();
+    void firePrivateClickMeasurementTimerImmediatelyForTesting();
 
     void addKeptAliveLoad(Ref<NetworkResourceLoader>&&);
     void removeKeptAliveLoad(NetworkResourceLoader&);

Modified: trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp (282005 => 282006)


--- trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp	2021-09-03 17:10:42 UTC (rev 282006)
@@ -64,6 +64,12 @@
     startTimer(5_s);
 }
 
+PrivateClickMeasurementManager::~PrivateClickMeasurementManager()
+{
+    if (m_store)
+        m_store->close([] { });
+}
+
 void PrivateClickMeasurementManager::storeUnattributed(PrivateClickMeasurement&& measurement)
 {
     if (!featureEnabled())
@@ -248,6 +254,11 @@
     store().insertPrivateClickMeasurement(WTFMove(measurement), type);
 }
 
+void PrivateClickMeasurementManager::migratePrivateClickMeasurementFromLegacyStorage(PrivateClickMeasurement&& measurement, PrivateClickMeasurementAttributionType type)
+{
+    store().insertPrivateClickMeasurement(WTFMove(measurement), type);
+}
+
 void PrivateClickMeasurementManager::handleAttribution(AttributionTriggerData&& attributionTriggerData, const URL& requestURL, const WebCore::ResourceRequest& redirectRequest)
 {
     if (!featureEnabled())
@@ -271,6 +282,11 @@
     attribute(SourceSite { WTFMove(redirectDomain) }, AttributionDestinationSite { firstPartyURL }, WTFMove(attributionTriggerData));
 }
 
+void PrivateClickMeasurementManager::startTimerImmediatelyForTesting()
+{
+    startTimer(0_s);
+}
+
 void PrivateClickMeasurementManager::startTimer(Seconds seconds)
 {
     m_firePendingAttributionRequestsTimer.startOneShot(m_isRunningTest ? 0_s : seconds);

Modified: trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h (282005 => 282006)


--- trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h	2021-09-03 16:47:43 UTC (rev 282005)
+++ trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h	2021-09-03 17:10:42 UTC (rev 282006)
@@ -53,12 +53,16 @@
     using PrivateClickMeasurement = WebCore::PrivateClickMeasurement;
     using RegistrableDomain = WebCore::RegistrableDomain;
     using SourceSite = WebCore::PrivateClickMeasurement::SourceSite;
+
     explicit PrivateClickMeasurementManager(UniqueRef<PCM::Client>&&, const String& storageDirectory);
+    ~PrivateClickMeasurementManager();
 
     void storeUnattributed(PrivateClickMeasurement&&);
     void handleAttribution(AttributionTriggerData&&, const URL& requestURL, const WebCore::ResourceRequest& redirectRequest);
     void clear(CompletionHandler<void()>&&);
     void clearForRegistrableDomain(const RegistrableDomain&, CompletionHandler<void()>&&);
+    void migratePrivateClickMeasurementFromLegacyStorage(PrivateClickMeasurement&&, PrivateClickMeasurementAttributionType);
+
     void toStringForTesting(CompletionHandler<void(String)>&&) const;
     void setOverrideTimerForTesting(bool value) { m_isRunningTest = value; }
     void setTokenPublicKeyURLForTesting(URL&&);
@@ -68,14 +72,13 @@
     void markAttributedPrivateClickMeasurementsAsExpiredForTesting(CompletionHandler<void()>&&);
     void setEphemeralMeasurementForTesting(bool value) { m_isRunningEphemeralMeasurementTest = value; }
     void setPCMFraudPreventionValuesForTesting(String&& unlinkableToken, String&& secretToken, String&& signature, String&& keyID);
-    void startTimer(Seconds);
-
+    void startTimerImmediatelyForTesting();
     void destroyStoreForTesting(CompletionHandler<void()>&&);
 
+private:
     PCM::Store& store();
     const PCM::Store& store() const;
-
-private:
+    void startTimer(Seconds);
     void getTokenPublicKey(PrivateClickMeasurement&&, PrivateClickMeasurement::AttributionReportEndpoint, PrivateClickMeasurement::PcmDataCarried, Function<void(PrivateClickMeasurement&& attribution, const String& publicKeyBase64URL)>&&);
     void getSignedUnlinkableToken(PrivateClickMeasurement&&);
     void insertPrivateClickMeasurement(PrivateClickMeasurement&&, PrivateClickMeasurementAttributionType);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to