- Revision
- 236320
- Author
- [email protected]
- Date
- 2018-09-21 09:17:16 -0700 (Fri, 21 Sep 2018)
Log Message
Clear persistent storage between tests for resourceLoadStatistics
https://bugs.webkit.org/show_bug.cgi?id=189684
<rdar://problem/44540099>
Patch by Woodrow Wang <[email protected]> on 2018-09-21
Reviewed by Chris Dumez.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsResetToConsistentState):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didClose):
(WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
Remove function only called in testing for resetting statistics to consistent
state.
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory): Deleted.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor):
(WebKit::WebsiteDataStore::removeAllStorageAccessHandler):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (236319 => 236320)
--- trunk/Source/WebKit/ChangeLog 2018-09-21 15:57:04 UTC (rev 236319)
+++ trunk/Source/WebKit/ChangeLog 2018-09-21 16:17:16 UTC (rev 236320)
@@ -1,3 +1,28 @@
+2018-09-21 Woodrow Wang <[email protected]>
+
+ Clear persistent storage between tests for resourceLoadStatistics
+ https://bugs.webkit.org/show_bug.cgi?id=189684
+ <rdar://problem/44540099>
+
+ Reviewed by Chris Dumez.
+
+ * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
+ (WKWebsiteDataStoreStatisticsResetToConsistentState):
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::didClose):
+ (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
+ * UIProcess/WebResourceLoadStatisticsStore.cpp:
+ (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
+
+ Remove function only called in testing for resetting statistics to consistent
+ state.
+
+ (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory): Deleted.
+
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor):
+ (WebKit::WebsiteDataStore::removeAllStorageAccessHandler):
+
2018-09-20 Ryan Haddad <[email protected]>
Unreviewed, rolling out r236289.
Modified: trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp (236319 => 236320)
--- trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp 2018-09-21 15:57:04 UTC (rev 236319)
+++ trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp 2018-09-21 16:17:16 UTC (rev 236320)
@@ -484,7 +484,7 @@
return;
statisticsStore->resetParametersToDefaultValues([callbackAggregator = callbackAggregator.copyRef()] { });
- statisticsStore->scheduleClearInMemory([callbackAggregator = callbackAggregator.copyRef()] { });
+ statisticsStore->scheduleClearInMemoryAndPersistent(WebKit::WebResourceLoadStatisticsStore::ShouldGrandfather::No, [callbackAggregator = callbackAggregator.copyRef()] { });
}
void WKWebsiteDataStoreRemoveAllFetchCaches(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreRemoveFetchCacheRemovalFunction callback)
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (236319 => 236320)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2018-09-21 15:57:04 UTC (rev 236319)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2018-09-21 16:17:16 UTC (rev 236320)
@@ -265,6 +265,14 @@
callback(false);
m_writeBlobToFilePathCallbackMap.clear();
+ for (auto& callback : m_removeAllStorageAccessCallbackMap.values())
+ callback();
+ m_removeAllStorageAccessCallbackMap.clear();
+
+ for (auto& callback : m_updateBlockCookiesCallbackMap.values())
+ callback();
+ m_updateBlockCookiesCallbackMap.clear();
+
// This may cause us to be deleted.
networkProcessCrashed();
}
@@ -392,7 +400,7 @@
}
auto callbackId = generateCallbackID();
- auto addResult = m_updateBlockCookiesCallbackMap.add(callbackId, [protectedThis = makeRef(*this), token = throttler().backgroundActivityToken(), completionHandler = WTFMove(completionHandler)]() mutable {
+ auto addResult = m_updateBlockCookiesCallbackMap.add(callbackId, [protectedProcessPool = makeRef(m_processPool), token = throttler().backgroundActivityToken(), completionHandler = WTFMove(completionHandler)]() mutable {
completionHandler();
});
ASSERT_UNUSED(addResult, addResult.isNewEntry);
Modified: trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp (236319 => 236320)
--- trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp 2018-09-21 15:57:04 UTC (rev 236319)
+++ trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp 2018-09-21 16:17:16 UTC (rev 236320)
@@ -759,41 +759,30 @@
}
#endif
-void WebResourceLoadStatisticsStore::scheduleClearInMemory(CompletionHandler<void()>&& completionHandler)
-{
- ASSERT(RunLoop::isMain());
- postTask([this, completionHandler = WTFMove(completionHandler)]() mutable {
-
- CompletionHandler<void()> callCompletionHandlerOnMainThread = [completionHandler = WTFMove(completionHandler)]() mutable {
- postTaskReply(WTFMove(completionHandler));
- };
-
- if (!m_memoryStore) {
- callCompletionHandlerOnMainThread();
- return;
- }
-
- m_memoryStore->clear(WTFMove(callCompletionHandlerOnMainThread));
- });
-}
-
void WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent(ShouldGrandfather shouldGrandfather, CompletionHandler<void()>&& completionHandler)
{
ASSERT(RunLoop::isMain());
- postTask([this, shouldGrandfather, completionHandler = WTFMove(completionHandler)] () mutable {
- if (m_memoryStore)
- m_memoryStore->clear([] { });
+ postTask([this, protectedThis = makeRef(*this), shouldGrandfather, completionHandler = WTFMove(completionHandler)] () mutable {
if (m_persistentStorage)
m_persistentStorage->clear();
-
- CompletionHandler<void()> callCompletionHandlerOnMainThread = [completionHandler = WTFMove(completionHandler)]() mutable {
+
+ CompletionHandlerCallingScope completionHandlerCaller([completionHandler = WTFMove(completionHandler)]() mutable {
postTaskReply(WTFMove(completionHandler));
- };
+ });
- if (shouldGrandfather == ShouldGrandfather::Yes && m_memoryStore)
- m_memoryStore->grandfatherExistingWebsiteData(WTFMove(callCompletionHandlerOnMainThread));
- else
- callCompletionHandlerOnMainThread();
+ if (m_memoryStore) {
+ m_memoryStore->clear([this, protectedThis = protectedThis.copyRef(), shouldGrandfather, completionHandlerCaller = WTFMove(completionHandlerCaller)] () mutable {
+ if (shouldGrandfather == ShouldGrandfather::Yes) {
+ if (m_memoryStore)
+ m_memoryStore->grandfatherExistingWebsiteData(completionHandlerCaller.release());
+ else
+ RELEASE_LOG(ResourceLoadStatistics, "WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent After being cleared, m_memoryStore is null when trying to grandfather data.");
+ }
+ });
+ } else {
+ if (shouldGrandfather == ShouldGrandfather::Yes)
+ RELEASE_LOG(ResourceLoadStatistics, "WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent Before being cleared, m_memoryStore is null when trying to grandfather data.");
+ }
});
}
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (236319 => 236320)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2018-09-21 15:57:04 UTC (rev 236319)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2018-09-21 16:17:16 UTC (rev 236320)
@@ -1255,7 +1255,7 @@
for (auto& processPool : processPools()) {
if (auto* process = processPool->networkProcess())
- process->updatePrevalentDomainsToBlockCookiesFor(m_sessionID, domainsToBlock, shouldClearFirst, [callbackAggregator = callbackAggregator.copyRef()] { });
+ process->updatePrevalentDomainsToBlockCookiesFor(m_sessionID, domainsToBlock, shouldClearFirst, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
}
}
@@ -1301,7 +1301,7 @@
for (auto& processPool : processPools()) {
if (auto networkProcess = processPool->networkProcess())
- networkProcess->removeAllStorageAccess(m_sessionID, [callbackAggregator = callbackAggregator.copyRef()] { });
+ networkProcess->removeAllStorageAccess(m_sessionID, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
}
}