Diff
Modified: trunk/Source/WebCore/ChangeLog (229618 => 229619)
--- trunk/Source/WebCore/ChangeLog 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebCore/ChangeLog 2018-03-15 05:05:36 UTC (rev 229619)
@@ -1,3 +1,19 @@
+2018-03-14 John Wilander <[email protected]>
+
+ Resource Load Statistics: Add clearing of storage access to WebResourceLoadStatisticsStore::clearInMemory()
+ https://bugs.webkit.org/show_bug.cgi?id=183641
+ <rdar://problem/38469497>
+
+ Reviewed by Brent Fulgham and Chris Dumez.
+
+ No new tests. This change is to stabilize existing layout tests.
+ See Ryan Haddad's comment in https://bugs.webkit.org/show_bug.cgi?id=183620.
+
+ * platform/network/NetworkStorageSession.h:
+ * platform/network/cf/NetworkStorageSessionCFNet.cpp:
+ (WebCore::NetworkStorageSession::removeAllStorageAccess):
+ New function to clear out all storage access entries.
+
2018-03-14 Youenn Fablet <[email protected]>
imported/w3c/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.html is crashing
Modified: trunk/Source/WebCore/platform/network/NetworkStorageSession.h (229618 => 229619)
--- trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2018-03-15 05:05:36 UTC (rev 229619)
@@ -109,6 +109,7 @@
WEBCORE_EXPORT void grantStorageAccess(const String& resourceDomain, const String& firstPartyDomain, std::optional<uint64_t> frameID, uint64_t pageID);
WEBCORE_EXPORT void removeStorageAccessForFrame(uint64_t frameID, uint64_t pageID);
WEBCORE_EXPORT void removeStorageAccessForAllFramesOnPage(uint64_t pageID);
+ WEBCORE_EXPORT void removeAllStorageAccess();
#endif
#elif USE(SOUP)
NetworkStorageSession(PAL::SessionID, std::unique_ptr<SoupNetworkSession>&&);
Modified: trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp (229618 => 229619)
--- trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp 2018-03-15 05:05:36 UTC (rev 229619)
@@ -360,6 +360,12 @@
m_framesGrantedStorageAccess.remove(pageID);
}
+void NetworkStorageSession::removeAllStorageAccess()
+{
+ m_pagesGrantedStorageAccess.clear();
+ m_framesGrantedStorageAccess.clear();
+}
+
#endif // HAVE(CFNETWORK_STORAGE_PARTITIONING)
#if !PLATFORM(COCOA)
Modified: trunk/Source/WebKit/ChangeLog (229618 => 229619)
--- trunk/Source/WebKit/ChangeLog 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/ChangeLog 2018-03-15 05:05:36 UTC (rev 229619)
@@ -1,3 +1,38 @@
+2018-03-14 John Wilander <[email protected]>
+
+ Resource Load Statistics: Add clearing of storage access to WebResourceLoadStatisticsStore::clearInMemory()
+ https://bugs.webkit.org/show_bug.cgi?id=183641
+ <rdar://problem/38469497>
+
+ Reviewed by Brent Fulgham and Chris Dumez.
+
+ This change is to stabilize existing layout tests by removing
+ all storage access entries on a call to
+ WebResourceLoadStatisticsStore::clearInMemory().
+ See Ryan Haddad's comment in https://bugs.webkit.org/show_bug.cgi?id=183620.
+
+ Almost all of the code changes are piping to get this
+ call from the WebResourceLoadStatisticsStore to
+ WebCore::NetworkStorageSession where entries reside.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::removeAllStorageAccess):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in:
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::removeAllStorageAccess):
+ * UIProcess/Network/NetworkProcessProxy.h:
+ * UIProcess/WebResourceLoadStatisticsStore.cpp:
+ (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
+ (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
+ (WebKit::WebResourceLoadStatisticsStore::clearInMemory):
+ Now also clears all storage access entries in the network process.
+ * UIProcess/WebResourceLoadStatisticsStore.h:
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::removeAllStorageAccessHandler):
+ (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+
2018-03-14 Ryan Haddad <[email protected]>
Unreviewed, rolling out r229613.
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (229618 => 229619)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2018-03-15 05:05:36 UTC (rev 229619)
@@ -394,6 +394,14 @@
parentProcessConnection()->send(Messages::NetworkProcessProxy::StorageAccessRequestResult(isStorageGranted, contextId), 0);
}
+void NetworkProcess::removeAllStorageAccess(PAL::SessionID sessionID)
+{
+ if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))
+ networkStorageSession->removeAllStorageAccess();
+ else
+ ASSERT_NOT_REACHED();
+}
+
void NetworkProcess::removePrevalentDomains(PAL::SessionID sessionID, const Vector<String>& domains)
{
if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (229618 => 229619)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2018-03-15 05:05:36 UTC (rev 229619)
@@ -140,6 +140,7 @@
void hasStorageAccessForFrame(PAL::SessionID, const String& resourceDomain, const String& firstPartyDomain, uint64_t frameID, uint64_t pageID, uint64_t contextId);
void getAllStorageAccessEntries(PAL::SessionID, uint64_t contextId);
void grantStorageAccess(PAL::SessionID, const String& resourceDomain, const String& firstPartyDomain, std::optional<uint64_t> frameID, uint64_t pageID, uint64_t contextId);
+ void removeAllStorageAccess(PAL::SessionID);
void removePrevalentDomains(PAL::SessionID, const Vector<String>& domains);
#endif
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (229618 => 229619)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2018-03-15 05:05:36 UTC (rev 229619)
@@ -86,6 +86,7 @@
HasStorageAccessForFrame(PAL::SessionID sessionID, String resourceDomain, String firstPartyDomain, uint64_t frameID, uint64_t pageID, uint64_t contextId)
GetAllStorageAccessEntries(PAL::SessionID sessionID, uint64_t contextId)
GrantStorageAccess(PAL::SessionID sessionID, String resourceDomain, String firstPartyDomain, std::optional<uint64_t> frameID, uint64_t pageID, uint64_t contextId)
+ RemoveAllStorageAccess(PAL::SessionID sessionID)
RemovePrevalentDomains(PAL::SessionID sessionID, Vector<String> domainsWithInteraction);
#endif
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (229618 => 229619)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2018-03-15 05:05:36 UTC (rev 229619)
@@ -428,6 +428,12 @@
send(Messages::NetworkProcess::GrantStorageAccess(sessionID, resourceDomain, firstPartyDomain, frameID, pageID, contextId), 0);
}
+void NetworkProcessProxy::removeAllStorageAccess(PAL::SessionID sessionID)
+{
+ if (canSendMessage())
+ send(Messages::NetworkProcess::RemoveAllStorageAccess(sessionID), 0);
+}
+
void NetworkProcessProxy::storageAccessRequestResult(bool wasGranted, uint64_t contextId)
{
auto callback = m_storageAccessResponseCallbackMap.take(contextId);
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (229618 => 229619)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2018-03-15 05:05:36 UTC (rev 229619)
@@ -82,6 +82,7 @@
void hasStorageAccessForFrame(PAL::SessionID, const String& resourceDomain, const String& firstPartyDomain, uint64_t frameID, uint64_t pageID, CompletionHandler<void(bool)>&& callback);
void getAllStorageAccessEntries(PAL::SessionID, CompletionHandler<void(Vector<String>&& domains)>&&);
void grantStorageAccess(PAL::SessionID, const String& resourceDomain, const String& firstPartyDomain, std::optional<uint64_t> frameID, uint64_t pageID, CompletionHandler<void(bool)>&& callback);
+ void removeAllStorageAccess(PAL::SessionID);
#endif
void writeBlobToFilePath(const WebCore::URL&, const String& path, CompletionHandler<void(bool)>&& callback);
Modified: trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp (229618 => 229619)
--- trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp 2018-03-15 05:05:36 UTC (rev 229619)
@@ -154,12 +154,13 @@
return mergedDates;
}
-WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore(const String& resourceLoadStatisticsDirectory, Function<void(const String&)>&& testingCallback, bool isEphemeral, UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler&& updatePrevalentDomainsToPartitionOrBlockCookiesHandler, HasStorageAccessForFrameHandler&& hasStorageAccessForFrameHandler, GrantStorageAccessHandler&& grantStorageAccessHandler, RemovePrevalentDomainsHandler&& removeDomainsHandler)
+WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore(const String& resourceLoadStatisticsDirectory, Function<void(const String&)>&& testingCallback, bool isEphemeral, UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler&& updatePrevalentDomainsToPartitionOrBlockCookiesHandler, HasStorageAccessForFrameHandler&& hasStorageAccessForFrameHandler, GrantStorageAccessHandler&& grantStorageAccessHandler, RemoveAllStorageAccessHandler&& removeAllStorageAccessHandler, RemovePrevalentDomainsHandler&& removeDomainsHandler)
: m_statisticsQueue(WorkQueue::create("WebResourceLoadStatisticsStore Process Data Queue", WorkQueue::Type::Serial, WorkQueue::QOS::Utility))
, m_persistentStorage(*this, resourceLoadStatisticsDirectory, isEphemeral ? ResourceLoadStatisticsPersistentStorage::IsReadOnly::Yes : ResourceLoadStatisticsPersistentStorage::IsReadOnly::No)
, m_updatePrevalentDomainsToPartitionOrBlockCookiesHandler(WTFMove(updatePrevalentDomainsToPartitionOrBlockCookiesHandler))
, m_hasStorageAccessForFrameHandler(WTFMove(hasStorageAccessForFrameHandler))
, m_grantStorageAccessHandler(WTFMove(grantStorageAccessHandler))
+ , m_removeAllStorageAccessHandler(WTFMove(removeAllStorageAccessHandler))
, m_removeDomainsHandler(WTFMove(removeDomainsHandler))
, m_dailyTasksTimer(RunLoop::main(), this, &WebResourceLoadStatisticsStore::performDailyTasks)
, m_statisticsTestingCallback(WTFMove(testingCallback))
@@ -410,6 +411,14 @@
#endif
}
+void WebResourceLoadStatisticsStore::removeAllStorageAccess()
+{
+ ASSERT(!RunLoop::isMain());
+ RunLoop::main().dispatch([this, protectedThis = makeRef(*this)] () {
+ m_removeAllStorageAccessHandler();
+ });
+}
+
void WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData(CompletionHandler<void()>&& callback)
{
ASSERT(!RunLoop::isMain());
@@ -954,6 +963,7 @@
m_resourceStatisticsMap.clear();
m_operatingDates.clear();
+ removeAllStorageAccess();
updateCookiePartitioningForDomains({ }, { }, { }, ShouldClearFirst::Yes, []() { });
}
Modified: trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h (229618 => 229619)
--- trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h 2018-03-15 05:05:36 UTC (rev 229619)
@@ -64,10 +64,11 @@
using UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler = WTF::Function<void(const Vector<String>& domainsToPartition, const Vector<String>& domainsToBlock, const Vector<String>& domainsToNeitherPartitionNorBlock, ShouldClearFirst)>;
using HasStorageAccessForFrameHandler = WTF::Function<void(const String& resourceDomain, const String& firstPartyDomain, uint64_t frameID, uint64_t pageID, WTF::Function<void(bool hasAccess)>&& callback)>;
using GrantStorageAccessHandler = WTF::Function<void(const String& resourceDomain, const String& firstPartyDomain, std::optional<uint64_t> frameID, uint64_t pageID, WTF::Function<void(bool wasGranted)>&& callback)>;
+ using RemoveAllStorageAccessHandler = WTF::Function<void()>;
using RemovePrevalentDomainsHandler = WTF::Function<void (const Vector<String>&)>;
- static Ref<WebResourceLoadStatisticsStore> create(const String& resourceLoadStatisticsDirectory, Function<void (const String&)>&& testingCallback, bool isEphemeral, UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler&& updatePrevalentDomainsToPartitionOrBlockCookiesHandler = [](const WTF::Vector<String>&, const WTF::Vector<String>&, const WTF::Vector<String>&, ShouldClearFirst) { }, HasStorageAccessForFrameHandler&& hasStorageAccessForFrameHandler = [](const String&, const String&, uint64_t, uint64_t, WTF::Function<void(bool)>&&) { }, GrantStorageAccessHandler&& grantStorageAccessHandler = [](const String&, const String&, std::optional<uint64_t>, uint64_t, WTF::Function<void(bool)>&&) { }, RemovePrevalentDomainsHandler&& removeDomainsHandler = [] (const WTF::Vector<String>&) { })
+ static Ref<WebResourceLoadStatisticsStore> create(const String& resourceLoadStatisticsDirectory, Function<void (const String&)>&& testingCallback, bool isEphemeral, UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler&& updatePrevalentDomainsToPartitionOrBlockCookiesHandler = [](const WTF::Vector<String>&, const WTF::Vector<String>&, const WTF::Vector<String>&, ShouldClearFirst) { }, HasStorageAccessForFrameHandler&& hasStorageAccessForFrameHandler = [](const String&, const String&, uint64_t, uint64_t, WTF::Function<void(bool)>&&) { }, GrantStorageAccessHandler&& grantStorageAccessHandler = [](const String&, const String&, std::optional<uint64_t>, uint64_t, WTF::Function<void(bool)>&&) { }, RemoveAllStorageAccessHandler&& removeAllStorageAccessHandler = []() { }, RemovePrevalentDomainsHandler&& removeDomainsHandler = []
(const WTF::Vector<String>&) { })
{
- return adoptRef(*new WebResourceLoadStatisticsStore(resourceLoadStatisticsDirectory, WTFMove(testingCallback), isEphemeral, WTFMove(updatePrevalentDomainsToPartitionOrBlockCookiesHandler), WTFMove(hasStorageAccessForFrameHandler), WTFMove(grantStorageAccessHandler), WTFMove(removeDomainsHandler)));
+ return adoptRef(*new WebResourceLoadStatisticsStore(resourceLoadStatisticsDirectory, WTFMove(testingCallback), isEphemeral, WTFMove(updatePrevalentDomainsToPartitionOrBlockCookiesHandler), WTFMove(hasStorageAccessForFrameHandler), WTFMove(grantStorageAccessHandler), WTFMove(removeAllStorageAccessHandler), WTFMove(removeDomainsHandler)));
}
~WebResourceLoadStatisticsStore();
@@ -151,7 +152,7 @@
void logTestingEvent(const String&);
private:
- WebResourceLoadStatisticsStore(const String&, Function<void(const String&)>&& testingCallback, bool isEphemeral, UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler&&, HasStorageAccessForFrameHandler&&, GrantStorageAccessHandler&&, RemovePrevalentDomainsHandler&&);
+ WebResourceLoadStatisticsStore(const String&, Function<void(const String&)>&& testingCallback, bool isEphemeral, UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler&&, HasStorageAccessForFrameHandler&&, GrantStorageAccessHandler&&, RemoveAllStorageAccessHandler&&, RemovePrevalentDomainsHandler&&);
void removeDataRecords(CompletionHandler<void()>&&);
@@ -178,6 +179,7 @@
void processStatisticsAndDataRecords();
void resetCookiePartitioningState();
+ void removeAllStorageAccess();
void setDebugLogggingEnabled(bool enabled) { m_debugLoggingEnabled = enabled; }
@@ -212,6 +214,7 @@
UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler m_updatePrevalentDomainsToPartitionOrBlockCookiesHandler;
HasStorageAccessForFrameHandler m_hasStorageAccessForFrameHandler;
GrantStorageAccessHandler m_grantStorageAccessHandler;
+ RemoveAllStorageAccessHandler m_removeAllStorageAccessHandler;
RemovePrevalentDomainsHandler m_removeDomainsHandler;
WallTime m_endOfGrandfatheringTimestamp;
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (229618 => 229619)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2018-03-15 05:05:36 UTC (rev 229619)
@@ -1214,6 +1214,14 @@
processPool->networkProcess()->grantStorageAccess(m_sessionID, resourceDomain, firstPartyDomain, frameID, pageID, WTFMove(callback));
}
+void WebsiteDataStore::removeAllStorageAccessHandler()
+{
+ for (auto& processPool : processPools()) {
+ if (auto networkProcess = processPool->networkProcess())
+ networkProcess->removeAllStorageAccess(m_sessionID);
+ }
+}
+
void WebsiteDataStore::removePrevalentDomains(const Vector<String>& domains)
{
for (auto& processPool : processPools())
@@ -1444,6 +1452,8 @@
hasStorageAccessForFrameHandler(resourceDomain, firstPartyDomain, frameID, pageID, WTFMove(callback));
}, [this, protectedThis = makeRef(*this)] (const String& resourceDomain, const String& firstPartyDomain, std::optional<uint64_t> frameID, uint64_t pageID, WTF::CompletionHandler<void(bool wasGranted)>&& callback) {
grantStorageAccessHandler(resourceDomain, firstPartyDomain, frameID, pageID, WTFMove(callback));
+ }, [this, protectedThis = makeRef(*this)] () {
+ removeAllStorageAccessHandler();
}, [this, protectedThis = makeRef(*this)] (const Vector<String>& domainsToRemove) {
removePrevalentDomains(domainsToRemove);
});
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (229618 => 229619)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2018-03-15 03:17:37 UTC (rev 229618)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2018-03-15 05:05:36 UTC (rev 229619)
@@ -127,6 +127,7 @@
void hasStorageAccessForFrameHandler(const String& resourceDomain, const String& firstPartyDomain, uint64_t frameID, uint64_t pageID, WTF::CompletionHandler<void(bool hasAccess)>&& callback);
void getAllStorageAccessEntries(CompletionHandler<void(Vector<String>&& domains)>&&);
void grantStorageAccessHandler(const String& resourceDomain, const String& firstPartyDomain, std::optional<uint64_t> frameID, uint64_t pageID, WTF::CompletionHandler<void(bool wasGranted)>&& callback);
+ void removeAllStorageAccessHandler();
void removePrevalentDomains(const Vector<String>& domains);
void hasStorageAccess(String&& subFrameHost, String&& topFrameHost, uint64_t frameID, uint64_t pageID, WTF::CompletionHandler<void (bool)>&& callback);
void requestStorageAccess(String&& subFrameHost, String&& topFrameHost, uint64_t frameID, uint64_t pageID, WTF::CompletionHandler<void (bool)>&& callback);