WebKit Bugzilla
Attachment 359821 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-20190122173240.patch (text/plain), 10.30 KB, created by
Sihui Liu
on 2019-01-22 17:32:41 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2019-01-22 17:32:41 PST
Size:
10.30 KB
patch
obsolete
>Subversion Revision: 240311 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 2a25fc98f233c5b33e65478dceb80125c5fbe45a..86927d779c20c8eee66a9a25d6e7adfa38d49afe 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 Geoffrey Garen. >+ >+ 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-22 Michael Catanzaro <mcatanzaro@igalia.com> > > Unreviewed, fix -Wsign-compare warning >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index f884697e615410ce9bf930f1392302421e4d6d4d..bed5c29d39e0d8c736537f586634c6fee8ca23a6 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 Geoffrey Garen. >+ >+ * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: >+ (WKWebsiteDataStoreRemoveAllIndexedDatabases): >+ * UIProcess/API/C/WKWebsiteDataStoreRef.h: >+ > 2019-01-22 Alex Christensen <achristensen@webkit.org> > > Fix an internal build failure after r240292 >diff --git a/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp b/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp >index 238320d343552b26ebc448e9768bd6d07b35d4fe..dfad78734b46e410698e277c8ead27b7953fcf2a 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(); > } > >@@ -634,6 +638,9 @@ void UniqueIDBDatabase::didOpenBackingStore(const IDBDatabaseInfo& info, const I > ASSERT(m_isOpeningBackingStore); > m_isOpeningBackingStore = false; > >+ if (m_hardClosedForUserDelete) >+ return; >+ > handleDatabaseOperations(); > } > >@@ -1708,7 +1715,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 ba333c9f5fd35fd820eb855e0f525376be2f4c31..528c4c215de3411d79000b5ce83949f7f45e0c3e 100644 >--- a/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp >+++ b/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp >@@ -448,10 +448,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 3165bd57825e4a320869675ccb0c47cdc1761266..d56fc005e4398ae794292894a5d412c05c194a4f 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 Geoffrey Garen. >+ >+ * 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-22 Aakash Jain <aakash_jain@apple.com> > > [ews-app] fetch loop should not stop on network issues >diff --git a/Tools/DumpRenderTree/mac/DumpRenderTree.mm b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >index d6b5a6566eed6230886fc7828ceb84ddcc5650e2..f313aeb0e9d88cd8935afa78f758e9582575d83c 100644 >--- a/Tools/DumpRenderTree/mac/DumpRenderTree.mm >+++ b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >@@ -2013,6 +2013,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