Title: [242947] trunk/Source
Revision
242947
Author
[email protected]
Date
2019-03-14 11:25:30 -0700 (Thu, 14 Mar 2019)

Log Message

Reset storage quota when clearing IDB/Cache API entries
https://bugs.webkit.org/show_bug.cgi?id=195716

Reviewed by Chris Dumez.

Source/WebCore:

On clearing of databases, reset all quota users.
This will ensure all layout test runs start with a clean state.

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):
* storage/StorageQuotaManager.h:
(WebCore::StorageQuotaManager::resetQuota):

Source/WebKit:

On clearing DOMCache or IDB data, reset quota value to the default value.
This ensures consistent layout test runs.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::clearStorageQuota):
* NetworkProcess/NetworkProcess.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (242946 => 242947)


--- trunk/Source/WebCore/ChangeLog	2019-03-14 18:22:04 UTC (rev 242946)
+++ trunk/Source/WebCore/ChangeLog	2019-03-14 18:25:30 UTC (rev 242947)
@@ -1,3 +1,18 @@
+2019-03-14  Youenn Fablet  <[email protected]>
+
+        Reset storage quota when clearing IDB/Cache API entries
+        https://bugs.webkit.org/show_bug.cgi?id=195716
+
+        Reviewed by Chris Dumez.
+
+        On clearing of databases, reset all quota users.
+        This will ensure all layout test runs start with a clean state.
+
+        * Modules/indexeddb/server/IDBServer.cpp:
+        (WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):
+        * storage/StorageQuotaManager.h:
+        (WebCore::StorageQuotaManager::resetQuota):
+
 2019-03-14  Jer Noble  <[email protected]>
 
         Certain videos are causing a crash when used as WebGL texture

Modified: trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp (242946 => 242947)


--- trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp	2019-03-14 18:22:04 UTC (rev 242946)
+++ trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp	2019-03-14 18:25:30 UTC (rev 242947)
@@ -648,6 +648,9 @@
 
 void IDBServer::didPerformCloseAndDeleteDatabases(uint64_t callbackID)
 {
+    for (auto& user : m_quotaUsers.values())
+        user->resetSpaceUsed();
+
     auto callback = m_deleteDatabaseCompletionHandlers.take(callbackID);
     ASSERT(callback);
     callback();

Modified: trunk/Source/WebCore/storage/StorageQuotaManager.h (242946 => 242947)


--- trunk/Source/WebCore/storage/StorageQuotaManager.h	2019-03-14 18:22:04 UTC (rev 242946)
+++ trunk/Source/WebCore/storage/StorageQuotaManager.h	2019-03-14 18:25:30 UTC (rev 242947)
@@ -59,6 +59,7 @@
     enum class Decision { Deny, Grant };
     using RequestCallback = CompletionHandler<void(Decision)>;
     WEBCORE_EXPORT void requestSpace(uint64_t, RequestCallback&&);
+    void resetQuota(uint64_t newQuota) { m_quota = newQuota; }
 
 private:
     uint64_t spaceUsage() const;

Modified: trunk/Source/WebKit/ChangeLog (242946 => 242947)


--- trunk/Source/WebKit/ChangeLog	2019-03-14 18:22:04 UTC (rev 242946)
+++ trunk/Source/WebKit/ChangeLog	2019-03-14 18:25:30 UTC (rev 242947)
@@ -1,3 +1,19 @@
+2019-03-14  Youenn Fablet  <[email protected]>
+
+        Reset storage quota when clearing IDB/Cache API entries
+        https://bugs.webkit.org/show_bug.cgi?id=195716
+
+        Reviewed by Chris Dumez.
+
+        On clearing DOMCache or IDB data, reset quota value to the default value.
+        This ensures consistent layout test runs.
+
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::NetworkProcess::deleteWebsiteData):
+        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
+        (WebKit::NetworkProcess::clearStorageQuota):
+        * NetworkProcess/NetworkProcess.h:
+
 2019-03-13  Zalan Bujtas  <[email protected]>
 
         [ContentChangeObserver] Stop content observation when content calls preventDefault() on touch events

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (242946 => 242947)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-03-14 18:22:04 UTC (rev 242946)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-03-14 18:25:30 UTC (rev 242947)
@@ -1404,6 +1404,9 @@
 
     if (websiteDataTypes.contains(WebsiteDataType::DiskCache) && !sessionID.isEphemeral())
         clearDiskCache(modifiedSince, [clearTasksHandler = WTFMove(clearTasksHandler)] { });
+
+    if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases) || websiteDataTypes.contains(WebsiteDataType::DOMCache))
+        clearStorageQuota(sessionID);
 }
 
 static void clearDiskCacheEntries(NetworkCache::Cache* cache, const Vector<SecurityOriginData>& origins, CompletionHandler<void()>&& completionHandler)
@@ -1468,8 +1471,20 @@
 
     if (websiteDataTypes.contains(WebsiteDataType::DiskCache) && !sessionID.isEphemeral())
         clearDiskCacheEntries(cache(), originDatas, [clearTasksHandler = WTFMove(clearTasksHandler)] { });
+
+    // FIXME: Implement storage quota clearing for these origins.
 }
 
+void NetworkProcess::clearStorageQuota(PAL::SessionID sessionID)
+{
+    auto iterator = m_storageQuotaManagers.find(sessionID);
+    if (iterator == m_storageQuotaManagers.end())
+        return;
+
+    for (auto& manager : iterator->value.managersPerOrigin.values())
+        manager->resetQuota(iterator->value.defaultQuota);
+}
+
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
 static Vector<String> filterForRegistrableDomains(const Vector<RegistrableDomain>& registrableDomains, const HashSet<String>& foundValues)
 {

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (242946 => 242947)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-03-14 18:22:04 UTC (rev 242946)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-03-14 18:25:30 UTC (rev 242947)
@@ -453,6 +453,8 @@
     void performNextStorageTask();
     void ensurePathExists(const String& path);
 
+    void clearStorageQuota(PAL::SessionID);
+
     // Connections to WebProcesses.
     Vector<Ref<NetworkConnectionToWebProcess>> m_webProcessConnections;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to