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