WebKit Bugzilla
Attachment 359785 Details for
Bug 192796
: Clean up IndexedDB files between tests
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-192796-20190122151248.patch (text/plain), 10.11 KB, created by
Sihui Liu
on 2019-01-22 15:12:49 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2019-01-22 15:12:49 PST
Size:
10.11 KB
patch
obsolete
>Subversion Revision: 240236 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index f220d7a7b9590a8909dd3cbfdd8956711d42a2be..dee26d4ef5af5cb010823ce11e1a24ffdd9a2451 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,17 @@ >+2019-01-22 Sihui Liu <sihui_liu@apple.com> >+ >+ Clean up IndexedDB files between tests >+ https://bugs.webkit.org/show_bug.cgi?id=192796 >+ <rdar://problem/46824999> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ We should clean up the IndexedDB files between tests to make sure each IDB test is independent of others. >+ >+ * Modules/indexeddb/server/UniqueIDBDatabase.cpp: >+ (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): >+ (WebCore::IDBServer::UniqueIDBDatabase::transactionCompleted): >+ > 2019-01-21 David Kilzer <ddkilzer@apple.com> > > Switch remaining VideoToolbox soft-linking in WebCore over to VideoToolboxSoftLink.{cpp,h} >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 5537af34adcb30610d8565a7a5513ed51378b177..4ad0721d5609d589258cf97b721ba44486c1e233 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,15 @@ >+2019-01-22 Sihui Liu <sihui_liu@apple.com> >+ >+ Clean up IndexedDB files between tests >+ https://bugs.webkit.org/show_bug.cgi?id=192796 >+ <rdar://problem/46824999> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: >+ (WKWebsiteDataStoreRemoveAllIndexedDatabases): >+ * UIProcess/API/C/WKWebsiteDataStoreRef.h: >+ > 2019-01-20 Michael Catanzaro <mcatanzaro@igalia.com> > > Unreviewed, fix -Wreturn-type warning >diff --git a/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp b/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp >index 238320d343552b26ebc448e9768bd6d07b35d4fe..0b1d3cc4ef9e075bf8758f17d5d700adf168cdbf 100644 >--- a/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp >+++ b/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp >@@ -337,6 +337,10 @@ void UniqueIDBDatabase::didDeleteBackingStore(uint64_t deletedVersion) > } > > m_deleteBackingStoreInProgress = false; >+ >+ if (m_hardClosedForUserDelete) >+ return; >+ > invokeOperationAndTransactionTimer(); > } > >@@ -1708,7 +1712,7 @@ void UniqueIDBDatabase::transactionCompleted(RefPtr<UniqueIDBDatabaseTransaction > for (auto objectStore : transaction->objectStoreIdentifiers()) { > if (!transaction->isReadOnly()) { > m_objectStoreWriteTransactions.remove(objectStore); >- ASSERT(m_objectStoreTransactionCounts.count(objectStore) == 1); >+ ASSERT(m_objectStoreTransactionCounts.count(objectStore) == 1 || m_hardClosedForUserDelete); > } > m_objectStoreTransactionCounts.remove(objectStore); > } >diff --git a/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp b/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp >index 61e93c84fd46babf72325424874550d11e7a5c54..fcb5aa4e64bf22830b28302e92d4204fb6a1bc22 100644 >--- a/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp >+++ b/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp >@@ -511,10 +511,13 @@ void WKWebsiteDataStoreRemoveFetchCacheForOrigin(WKWebsiteDataStoreRef dataStore > }); > } > >-void WKWebsiteDataStoreRemoveAllIndexedDatabases(WKWebsiteDataStoreRef dataStoreRef) >+void WKWebsiteDataStoreRemoveAllIndexedDatabases(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreRemoveAllIndexedDatabasesCallback callback) > { > OptionSet<WebKit::WebsiteDataType> dataTypes = WebKit::WebsiteDataType::IndexedDBDatabases; >- WebKit::toImpl(dataStoreRef)->websiteDataStore().removeData(dataTypes, -WallTime::infinity(), [] { }); >+ WebKit::toImpl(dataStoreRef)->websiteDataStore().removeData(dataTypes, -WallTime::infinity(), [context, callback] { >+ if (callback) >+ callback(context); >+ }); > } > > void WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreRemoveAllServiceWorkerRegistrationsCallback callback) >diff --git a/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h b/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h >index 01b98e19328b140ed7220d3c58aef3dcb7ed9e68..93e52185b5bd7645216522461e58874c31e8971e 100644 >--- a/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h >+++ b/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h >@@ -103,7 +103,8 @@ WK_EXPORT void WKWebsiteDataStoreRemoveAllFetchCaches(WKWebsiteDataStoreRef data > typedef void (*WKWebsiteDataStoreRemoveAllServiceWorkerRegistrationsCallback)(void* functionContext); > WK_EXPORT void WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreRemoveAllServiceWorkerRegistrationsCallback callback); > >-WK_EXPORT void WKWebsiteDataStoreRemoveAllIndexedDatabases(WKWebsiteDataStoreRef dataStoreRef); >+typedef void (*WKWebsiteDataStoreRemoveAllIndexedDatabasesCallback)(void* functionContext); >+WK_EXPORT void WKWebsiteDataStoreRemoveAllIndexedDatabases(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreRemoveAllIndexedDatabasesCallback callback); > > typedef void (*WKWebsiteDataStoreGetFetchCacheOriginsFunction)(WKArrayRef, void*); > WK_EXPORT void WKWebsiteDataStoreGetFetchCacheOrigins(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreGetFetchCacheOriginsFunction function); >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 615cc9d0c404adbdc33605dde7ba9e0a0ee5abc6..dbfaa696bce4fb5ccec0ec9a526cc8fea0f4bbb3 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,22 @@ >+2019-01-22 Sihui Liu <sihui_liu@apple.com> >+ >+ Clean up IndexedDB files between tests >+ https://bugs.webkit.org/show_bug.cgi?id=192796 >+ <rdar://problem/46824999> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * DumpRenderTree/mac/DumpRenderTree.mm: >+ (runTest): >+ * WebKitTestRunner/TestController.cpp: >+ (WTR::TestController::resetStateToConsistentValues): >+ (WTR::RemoveAllIndexedDatabasesCallbackContext::RemoveAllIndexedDatabasesCallbackContext): >+ (WTR::RemoveAllIndexedDatabasesCallback): >+ (WTR::TestController::ClearIndexedDatabases): >+ * WebKitTestRunner/TestController.h: >+ * WebKitTestRunner/TestInvocation.cpp: >+ (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle): >+ > 2019-01-21 David Kilzer <ddkilzer@apple.com> > > Switch remaining VideoToolbox soft-linking in WebCore over to VideoToolboxSoftLink.{cpp,h} >diff --git a/Tools/DumpRenderTree/mac/DumpRenderTree.mm b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >index d491997d3252692716ba22626bdd67d411554045..2a8e4ba2245f027c8cef8d1bbbbffbb36aa23595 100644 >--- a/Tools/DumpRenderTree/mac/DumpRenderTree.mm >+++ b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >@@ -2012,6 +2012,9 @@ static void runTest(const string& inputLine) > gTestRunner->setIconDatabaseEnabled(false); > gTestRunner->clearAllApplicationCaches(); > >+ gTestRunner->clearAllDatabases(); >+ gTestRunner->setIDBPerOriginQuota(50 * MB); >+ > if (disallowedURLs) > CFSetRemoveAllValues(disallowedURLs); > if (shouldLogFrameLoadDelegates(pathOrURL.c_str())) >diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp >index a7040b2df764045b65a7ce0fea4922311b8c645d..7b662aa6000c6048b37f4eaa8f4019d120096252 100644 >--- a/Tools/WebKitTestRunner/TestController.cpp >+++ b/Tools/WebKitTestRunner/TestController.cpp >@@ -868,6 +868,9 @@ bool TestController::resetStateToConsistentValues(const TestOptions& options, Re > > WKContextClearCachedCredentials(TestController::singleton().context()); > >+ ClearIndexedDatabases(); >+ setIDBPerOriginQuota(50 * MB); >+ > clearServiceWorkerRegistrations(); > clearDOMCaches(); > >@@ -2766,6 +2769,31 @@ void TestController::setIDBPerOriginQuota(uint64_t quota) > WKContextSetIDBPerOriginQuota(platformContext(), quota); > } > >+struct RemoveAllIndexedDatabasesCallbackContext { >+ explicit RemoveAllIndexedDatabasesCallbackContext(TestController& controller) >+ : testController(controller) >+ { >+ } >+ >+ TestController& testController; >+ bool done { false }; >+}; >+ >+static void RemoveAllIndexedDatabasesCallback(void* userData) >+{ >+ auto* context = static_cast<RemoveAllIndexedDatabasesCallbackContext*>(userData); >+ context->done = true; >+ context->testController.notifyDone(); >+} >+ >+void TestController::ClearIndexedDatabases() >+{ >+ auto websiteDataStore = WKContextGetWebsiteDataStore(platformContext()); >+ RemoveAllIndexedDatabasesCallbackContext context(*this); >+ WKWebsiteDataStoreRemoveAllIndexedDatabases(websiteDataStore, &context, RemoveAllIndexedDatabasesCallback); >+ runUntil(context.done, noTimeout); >+} >+ > struct FetchCacheOriginsCallbackContext { > FetchCacheOriginsCallbackContext(TestController& controller, WKStringRef origin) > : testController(controller) >diff --git a/Tools/WebKitTestRunner/TestController.h b/Tools/WebKitTestRunner/TestController.h >index 1425cbfd51a7604ae10c57944557aa06a20eac80..2058c79ecfaa5dce314fa62850f7dcbd0ba3fa27 100644 >--- a/Tools/WebKitTestRunner/TestController.h >+++ b/Tools/WebKitTestRunner/TestController.h >@@ -242,6 +242,8 @@ public: > > void removeAllSessionCredentials(); > >+ void ClearIndexedDatabases(); >+ > void clearServiceWorkerRegistrations(); > > void clearDOMCache(WKStringRef origin); >diff --git a/Tools/WebKitTestRunner/TestInvocation.cpp b/Tools/WebKitTestRunner/TestInvocation.cpp >index 1d8d7d9be055b48662ad30e33707f027aeec5eb5..1fedd8b1f1efd56973a4e3c1377c2f16b3a832c1 100644 >--- a/Tools/WebKitTestRunner/TestInvocation.cpp >+++ b/Tools/WebKitTestRunner/TestInvocation.cpp >@@ -911,7 +911,7 @@ WKRetainPtr<WKTypeRef> TestInvocation::didReceiveSynchronousMessageFromInjectedB > } > > if (WKStringIsEqualToUTF8CString(messageName, "DeleteAllIndexedDatabases")) { >- WKWebsiteDataStoreRemoveAllIndexedDatabases(WKContextGetWebsiteDataStore(TestController::singleton().context())); >+ WKWebsiteDataStoreRemoveAllIndexedDatabases(WKContextGetWebsiteDataStore(TestController::singleton().context()), nullptr, { }); > return nullptr; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192796
:
357526
|
357586
|
357620
|
359785
|
359820
|
359821