- 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);