Title: [248452] trunk/Source/WebKit
Revision
248452
Author
[email protected]
Date
2019-08-08 17:08:07 -0700 (Thu, 08 Aug 2019)

Log Message

Add threading assertions to WebStorage code
https://bugs.webkit.org/show_bug.cgi?id=200550

Reviewed by Geoffrey Garen.

Add threading assertions to WebStorage code for extra safety.

* NetworkProcess/WebStorage/LocalStorageNamespace.cpp:
(WebKit::LocalStorageNamespace::LocalStorageNamespace):
(WebKit::LocalStorageNamespace::~LocalStorageNamespace):
(WebKit::LocalStorageNamespace::getOrCreateStorageArea):
(WebKit::LocalStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::LocalStorageNamespace::clearAllStorageAreas):
(WebKit::LocalStorageNamespace::ephemeralOrigins const):
(WebKit::LocalStorageNamespace::cloneTo):
* NetworkProcess/WebStorage/SessionStorageNamespace.cpp:
(WebKit::SessionStorageNamespace::SessionStorageNamespace):
(WebKit::SessionStorageNamespace::~SessionStorageNamespace):
(WebKit::SessionStorageNamespace::addAllowedConnection):
(WebKit::SessionStorageNamespace::removeAllowedConnection):
(WebKit::SessionStorageNamespace::getOrCreateStorageArea):
(WebKit::SessionStorageNamespace::cloneTo):
(WebKit::SessionStorageNamespace::origins const):
(WebKit::SessionStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::SessionStorageNamespace::clearAllStorageAreas):
* NetworkProcess/WebStorage/StorageArea.cpp:
(WebKit::StorageArea::StorageArea):
(WebKit::StorageArea::~StorageArea):
(WebKit::StorageArea::addListener):
(WebKit::StorageArea::removeListener):
(WebKit::StorageArea::hasListener const):
(WebKit::StorageArea::clone const):
(WebKit::StorageArea::setItem):
(WebKit::StorageArea::setItems):
(WebKit::StorageArea::removeItem):
(WebKit::StorageArea::clear):
(WebKit::StorageArea::items const):
(WebKit::StorageArea::openDatabaseAndImportItemsIfNeeded const):
(WebKit::StorageArea::dispatchEvents const):
* NetworkProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::createSessionStorageNamespace):
(WebKit::StorageManager::destroySessionStorageNamespace):
(WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection):
(WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection):
(WebKit::StorageManager::cloneSessionStorageNamespace):
(WebKit::StorageManager::processDidCloseConnection):
(WebKit::StorageManager::getSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
(WebKit::StorageManager::getLocalStorageOrigins):
(WebKit::StorageManager::getLocalStorageOriginDetails):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
(WebKit::StorageManager::waitUntilTasksFinished):
(WebKit::StorageManager::suspend):
(WebKit::StorageManager::resume):
(WebKit::StorageManager::findStorageArea const):
(WebKit::StorageManager::getOrCreateLocalStorageNamespace):
(WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace):
* NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp:
(WebKit::TransientLocalStorageNamespace::TransientLocalStorageNamespace):
(WebKit::TransientLocalStorageNamespace::~TransientLocalStorageNamespace):
(WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea):
(WebKit::TransientLocalStorageNamespace::origins const):
(WebKit::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::TransientLocalStorageNamespace::clearAllStorageAreas):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (248451 => 248452)


--- trunk/Source/WebKit/ChangeLog	2019-08-08 23:31:12 UTC (rev 248451)
+++ trunk/Source/WebKit/ChangeLog	2019-08-09 00:08:07 UTC (rev 248452)
@@ -1,3 +1,73 @@
+2019-08-08  Chris Dumez  <[email protected]>
+
+        Add threading assertions to WebStorage code
+        https://bugs.webkit.org/show_bug.cgi?id=200550
+
+        Reviewed by Geoffrey Garen.
+
+        Add threading assertions to WebStorage code for extra safety.
+
+        * NetworkProcess/WebStorage/LocalStorageNamespace.cpp:
+        (WebKit::LocalStorageNamespace::LocalStorageNamespace):
+        (WebKit::LocalStorageNamespace::~LocalStorageNamespace):
+        (WebKit::LocalStorageNamespace::getOrCreateStorageArea):
+        (WebKit::LocalStorageNamespace::clearStorageAreasMatchingOrigin):
+        (WebKit::LocalStorageNamespace::clearAllStorageAreas):
+        (WebKit::LocalStorageNamespace::ephemeralOrigins const):
+        (WebKit::LocalStorageNamespace::cloneTo):
+        * NetworkProcess/WebStorage/SessionStorageNamespace.cpp:
+        (WebKit::SessionStorageNamespace::SessionStorageNamespace):
+        (WebKit::SessionStorageNamespace::~SessionStorageNamespace):
+        (WebKit::SessionStorageNamespace::addAllowedConnection):
+        (WebKit::SessionStorageNamespace::removeAllowedConnection):
+        (WebKit::SessionStorageNamespace::getOrCreateStorageArea):
+        (WebKit::SessionStorageNamespace::cloneTo):
+        (WebKit::SessionStorageNamespace::origins const):
+        (WebKit::SessionStorageNamespace::clearStorageAreasMatchingOrigin):
+        (WebKit::SessionStorageNamespace::clearAllStorageAreas):
+        * NetworkProcess/WebStorage/StorageArea.cpp:
+        (WebKit::StorageArea::StorageArea):
+        (WebKit::StorageArea::~StorageArea):
+        (WebKit::StorageArea::addListener):
+        (WebKit::StorageArea::removeListener):
+        (WebKit::StorageArea::hasListener const):
+        (WebKit::StorageArea::clone const):
+        (WebKit::StorageArea::setItem):
+        (WebKit::StorageArea::setItems):
+        (WebKit::StorageArea::removeItem):
+        (WebKit::StorageArea::clear):
+        (WebKit::StorageArea::items const):
+        (WebKit::StorageArea::openDatabaseAndImportItemsIfNeeded const):
+        (WebKit::StorageArea::dispatchEvents const):
+        * NetworkProcess/WebStorage/StorageManager.cpp:
+        (WebKit::StorageManager::createSessionStorageNamespace):
+        (WebKit::StorageManager::destroySessionStorageNamespace):
+        (WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection):
+        (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection):
+        (WebKit::StorageManager::cloneSessionStorageNamespace):
+        (WebKit::StorageManager::processDidCloseConnection):
+        (WebKit::StorageManager::getSessionStorageOrigins):
+        (WebKit::StorageManager::deleteSessionStorageOrigins):
+        (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
+        (WebKit::StorageManager::getLocalStorageOrigins):
+        (WebKit::StorageManager::getLocalStorageOriginDetails):
+        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
+        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
+        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
+        (WebKit::StorageManager::waitUntilTasksFinished):
+        (WebKit::StorageManager::suspend):
+        (WebKit::StorageManager::resume):
+        (WebKit::StorageManager::findStorageArea const):
+        (WebKit::StorageManager::getOrCreateLocalStorageNamespace):
+        (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace):
+        * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp:
+        (WebKit::TransientLocalStorageNamespace::TransientLocalStorageNamespace):
+        (WebKit::TransientLocalStorageNamespace::~TransientLocalStorageNamespace):
+        (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea):
+        (WebKit::TransientLocalStorageNamespace::origins const):
+        (WebKit::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin):
+        (WebKit::TransientLocalStorageNamespace::clearAllStorageAreas):
+
 2019-08-08  Brent Fulgham  <[email protected]>
 
         [FTW] Get WebKit, WebKit2, and MiniBrowser building and executing

Modified: trunk/Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.cpp (248451 => 248452)


--- trunk/Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.cpp	2019-08-08 23:31:12 UTC (rev 248451)
+++ trunk/Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.cpp	2019-08-09 00:08:07 UTC (rev 248452)
@@ -39,14 +39,17 @@
     : m_storageManager(storageManager)
     , m_quotaInBytes(StorageManager::localStorageDatabaseQuotaInBytes)
 {
+    ASSERT(!RunLoop::isMain());
 }
 
 LocalStorageNamespace::~LocalStorageNamespace()
 {
+    ASSERT(!RunLoop::isMain());
 }
 
 auto LocalStorageNamespace::getOrCreateStorageArea(SecurityOriginData&& securityOrigin, IsEphemeral isEphemeral) -> Ref<StorageArea>
 {
+    ASSERT(!RunLoop::isMain());
     return *m_storageAreaMap.ensure(securityOrigin, [&]() mutable {
         return StorageArea::create(isEphemeral == IsEphemeral::Yes ? nullptr : this, WTFMove(securityOrigin), m_quotaInBytes);
     }).iterator->value;
@@ -54,6 +57,7 @@
 
 void LocalStorageNamespace::clearStorageAreasMatchingOrigin(const SecurityOriginData& securityOrigin)
 {
+    ASSERT(!RunLoop::isMain());
     auto originAndStorageArea = m_storageAreaMap.find(securityOrigin);
     if (originAndStorageArea != m_storageAreaMap.end())
         originAndStorageArea->value->clear();
@@ -61,6 +65,7 @@
 
 void LocalStorageNamespace::clearAllStorageAreas()
 {
+    ASSERT(!RunLoop::isMain());
     for (auto storageArea : m_storageAreaMap.values())
         storageArea->clear();
 }
@@ -67,6 +72,7 @@
 
 Vector<SecurityOriginData> LocalStorageNamespace::ephemeralOrigins() const
 {
+    ASSERT(!RunLoop::isMain());
     Vector<SecurityOriginData> origins;
     for (const auto& storageArea : m_storageAreaMap.values()) {
         if (!storageArea->items().isEmpty())
@@ -77,6 +83,7 @@
 
 void LocalStorageNamespace::cloneTo(LocalStorageNamespace& newLocalStorageNamespace)
 {
+    ASSERT(!RunLoop::isMain());
     for (auto& pair : m_storageAreaMap)
         newLocalStorageNamespace.m_storageAreaMap.add(pair.key, pair.value->clone());
 }

Modified: trunk/Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.cpp (248451 => 248452)


--- trunk/Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.cpp	2019-08-08 23:31:12 UTC (rev 248451)
+++ trunk/Source/WebKit/NetworkProcess/WebStorage/SessionStorageNamespace.cpp	2019-08-09 00:08:07 UTC (rev 248452)
@@ -35,14 +35,17 @@
 SessionStorageNamespace::SessionStorageNamespace(unsigned quotaInBytes)
     : m_quotaInBytes(quotaInBytes)
 {
+    ASSERT(!RunLoop::isMain());
 }
 
 SessionStorageNamespace::~SessionStorageNamespace()
 {
+    ASSERT(!RunLoop::isMain());
 }
 
 void SessionStorageNamespace::addAllowedConnection(IPC::Connection::UniqueID allowedConnection)
 {
+    ASSERT(!RunLoop::isMain());
     m_allowedConnections.add(allowedConnection);
 }
 
@@ -49,11 +52,13 @@
 
 void SessionStorageNamespace::removeAllowedConnection(IPC::Connection::UniqueID allowedConnection)
 {
+    ASSERT(!RunLoop::isMain());
     ASSERT(m_allowedConnections.contains(allowedConnection));
     m_allowedConnections.remove(allowedConnection);
 }
 auto SessionStorageNamespace::getOrCreateStorageArea(SecurityOriginData&& securityOrigin) -> Ref<StorageArea>
 {
+    ASSERT(!RunLoop::isMain());
     return *m_storageAreaMap.ensure(securityOrigin, [this, &securityOrigin]() mutable {
         return StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
     }).iterator->value.copyRef();
@@ -61,6 +66,7 @@
 
 void SessionStorageNamespace::cloneTo(SessionStorageNamespace& newSessionStorageNamespace)
 {
+    ASSERT(!RunLoop::isMain());
     ASSERT_UNUSED(newSessionStorageNamespace, newSessionStorageNamespace.isEmpty());
 
     for (auto& pair : m_storageAreaMap)
@@ -69,6 +75,7 @@
 
 Vector<SecurityOriginData> SessionStorageNamespace::origins() const
 {
+    ASSERT(!RunLoop::isMain());
     Vector<SecurityOriginData> origins;
 
     for (const auto& storageArea : m_storageAreaMap.values()) {
@@ -81,6 +88,7 @@
 
 void SessionStorageNamespace::clearStorageAreasMatchingOrigin(const SecurityOriginData& securityOrigin)
 {
+    ASSERT(!RunLoop::isMain());
     auto originAndStorageArea = m_storageAreaMap.find(securityOrigin);
     if (originAndStorageArea != m_storageAreaMap.end())
         originAndStorageArea->value->clear();
@@ -88,6 +96,7 @@
 
 void SessionStorageNamespace::clearAllStorageAreas()
 {
+    ASSERT(!RunLoop::isMain());
     for (auto& storageArea : m_storageAreaMap.values())
         storageArea->clear();
 }

Modified: trunk/Source/WebKit/NetworkProcess/WebStorage/StorageArea.cpp (248451 => 248452)


--- trunk/Source/WebKit/NetworkProcess/WebStorage/StorageArea.cpp	2019-08-08 23:31:12 UTC (rev 248451)
+++ trunk/Source/WebKit/NetworkProcess/WebStorage/StorageArea.cpp	2019-08-09 00:08:07 UTC (rev 248452)
@@ -42,10 +42,12 @@
     , m_quotaInBytes(quotaInBytes)
     , m_storageMap(StorageMap::create(m_quotaInBytes))
 {
+    ASSERT(!RunLoop::isMain());
 }
 
 StorageArea::~StorageArea()
 {
+    ASSERT(!RunLoop::isMain());
     ASSERT(m_eventListeners.isEmpty());
     ASSERT(!m_localStorageNamespace);
 
@@ -55,6 +57,7 @@
 
 void StorageArea::addListener(IPC::Connection::UniqueID connectionID, uint64_t storageMapID)
 {
+    ASSERT(!RunLoop::isMain());
     ASSERT(!m_eventListeners.contains(std::make_pair(connectionID, storageMapID)));
     m_eventListeners.add(std::make_pair(connectionID, storageMapID));
 }
@@ -61,6 +64,7 @@
 
 void StorageArea::removeListener(IPC::Connection::UniqueID connectionID, uint64_t storageMapID)
 {
+    ASSERT(!RunLoop::isMain());
     ASSERT(isEphemeral() || m_eventListeners.contains(std::make_pair(connectionID, storageMapID)));
     m_eventListeners.remove(std::make_pair(connectionID, storageMapID));
 }
@@ -67,11 +71,13 @@
 
 bool StorageArea::hasListener(IPC::Connection::UniqueID connectionID, uint64_t storageMapID) const
 {
+    ASSERT(!RunLoop::isMain());
     return m_eventListeners.contains(std::make_pair(connectionID, storageMapID));
 }
 
 Ref<StorageArea> StorageArea::clone() const
 {
+    ASSERT(!RunLoop::isMain());
     ASSERT(!m_localStorageNamespace);
 
     auto storageArea = StorageArea::create(nullptr, m_securityOrigin, m_quotaInBytes);
@@ -82,6 +88,7 @@
 
 void StorageArea::setItem(IPC::Connection::UniqueID sourceConnection, uint64_t sourceStorageAreaID, const String& key, const String& value, const String& urlString, bool& quotaException)
 {
+    ASSERT(!RunLoop::isMain());
     openDatabaseAndImportItemsIfNeeded();
 
     String oldValue;
@@ -101,6 +108,7 @@
 
 void StorageArea::setItems(const HashMap<String, String>& items)
 {
+    ASSERT(!RunLoop::isMain());
     // Import items from web process if items are not stored on disk.
     if (!isEphemeral())
         return;
@@ -119,6 +127,7 @@
 
 void StorageArea::removeItem(IPC::Connection::UniqueID sourceConnection, uint64_t sourceStorageAreaID, const String& key, const String& urlString)
 {
+    ASSERT(!RunLoop::isMain());
     openDatabaseAndImportItemsIfNeeded();
 
     String oldValue;
@@ -137,6 +146,7 @@
 
 void StorageArea::clear(IPC::Connection::UniqueID sourceConnection, uint64_t sourceStorageAreaID, const String& urlString)
 {
+    ASSERT(!RunLoop::isMain());
     openDatabaseAndImportItemsIfNeeded();
 
     if (!m_storageMap->length())
@@ -152,6 +162,7 @@
 
 const HashMap<String, String>& StorageArea::items() const
 {
+    ASSERT(!RunLoop::isMain());
     openDatabaseAndImportItemsIfNeeded();
 
     return m_storageMap->items();
@@ -159,6 +170,7 @@
 
 void StorageArea::clear()
 {
+    ASSERT(!RunLoop::isMain());
     m_storageMap = StorageMap::create(m_quotaInBytes);
 
     if (m_localStorageDatabase) {
@@ -176,6 +188,7 @@
 
 void StorageArea::openDatabaseAndImportItemsIfNeeded() const
 {
+    ASSERT(!RunLoop::isMain());
     if (!m_localStorageNamespace)
         return;
 
@@ -193,6 +206,7 @@
 
 void StorageArea::dispatchEvents(IPC::Connection::UniqueID sourceConnection, uint64_t sourceStorageAreaID, const String& key, const String& oldValue, const String& newValue, const String& urlString) const
 {
+    ASSERT(!RunLoop::isMain());
     for (auto it = m_eventListeners.begin(), end = m_eventListeners.end(); it != end; ++it) {
         sourceStorageAreaID = it->first == sourceConnection ? sourceStorageAreaID : 0;
 

Modified: trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp (248451 => 248452)


--- trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp	2019-08-08 23:31:12 UTC (rev 248451)
+++ trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp	2019-08-09 00:08:07 UTC (rev 248452)
@@ -67,6 +67,7 @@
 
 void StorageManager::createSessionStorageNamespace(uint64_t storageNamespaceID, unsigned quotaInBytes)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), storageNamespaceID, quotaInBytes]() mutable {
         m_sessionStorageNamespaces.ensure(storageNamespaceID, [quotaInBytes] {
             return SessionStorageNamespace::create(quotaInBytes);
@@ -76,6 +77,7 @@
 
 void StorageManager::destroySessionStorageNamespace(uint64_t storageNamespaceID)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), storageNamespaceID] {
         ASSERT(m_sessionStorageNamespaces.contains(storageNamespaceID));
         if (auto* sessionStorageNamespace = m_sessionStorageNamespaces.get(storageNamespaceID)) {
@@ -87,6 +89,7 @@
 
 void StorageManager::addAllowedSessionStorageNamespaceConnection(uint64_t storageNamespaceID, IPC::Connection& allowedConnection)
 {
+    ASSERT(RunLoop::isMain());
     auto allowedConnectionID = allowedConnection.uniqueID();
     auto addResult = m_connections.add(allowedConnectionID);
     if (addResult.isNewEntry)
@@ -101,6 +104,7 @@
 
 void StorageManager::removeAllowedSessionStorageNamespaceConnection(uint64_t storageNamespaceID, IPC::Connection& allowedConnection)
 {
+    ASSERT(RunLoop::isMain());
     auto allowedConnectionID = allowedConnection.uniqueID();
     m_queue->dispatch([this, protectedThis = makeRef(*this), allowedConnectionID, storageNamespaceID]() mutable {
         ASSERT(m_sessionStorageNamespaces.contains(storageNamespaceID));
@@ -111,6 +115,7 @@
 
 void StorageManager::cloneSessionStorageNamespace(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), storageNamespaceID, newStorageNamespaceID] {
         SessionStorageNamespace* sessionStorageNamespace = m_sessionStorageNamespaces.get(storageNamespaceID);
         if (!sessionStorageNamespace) {
@@ -136,6 +141,7 @@
 
 void StorageManager::processDidCloseConnection(IPC::Connection& connection)
 {
+    ASSERT(RunLoop::isMain());
     if (m_connections.remove(connection.uniqueID()))
         connection.removeWorkQueueMessageReceiver(Messages::StorageManager::messageReceiverName());
 
@@ -168,6 +174,7 @@
 
 void StorageManager::getSessionStorageOrigins(Function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
         HashSet<SecurityOriginData> origins;
 
@@ -184,6 +191,7 @@
 
 void StorageManager::deleteSessionStorageOrigins(Function<void()>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& sessionStorageNamespace : m_sessionStorageNamespaces.values())
             sessionStorageNamespace->clearAllStorageAreas();
@@ -194,6 +202,7 @@
 
 void StorageManager::deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, Function<void()>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), copiedOrigins = crossThreadCopy(origins), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& origin : copiedOrigins) {
             for (auto& sessionStorageNamespace : m_sessionStorageNamespaces.values())
@@ -206,6 +215,7 @@
 
 void StorageManager::getLocalStorageOrigins(Function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
         HashSet<SecurityOriginData> origins;
 
@@ -232,6 +242,7 @@
 
 void StorageManager::getLocalStorageOriginDetails(Function<void(Vector<LocalStorageDatabaseTracker::OriginDetails>&&)>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
         Vector<LocalStorageDatabaseTracker::OriginDetails> originDetails;
         if (m_localStorageDatabaseTracker)
@@ -245,6 +256,7 @@
 
 void StorageManager::deleteLocalStorageEntriesForOrigin(const SecurityOriginData& securityOrigin)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), copiedOrigin = securityOrigin.isolatedCopy()]() mutable {
         for (auto& localStorageNamespace : m_localStorageNamespaces.values())
             localStorageNamespace->clearStorageAreasMatchingOrigin(copiedOrigin);
@@ -259,6 +271,7 @@
 
 void StorageManager::deleteLocalStorageOriginsModifiedSince(WallTime time, Function<void()>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), time, completionHandler = WTFMove(completionHandler)]() mutable {
         if (m_localStorageDatabaseTracker) {
             auto originsToDelete = m_localStorageDatabaseTracker->databasesModifiedSince(time);
@@ -283,6 +296,7 @@
 
 void StorageManager::deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, Function<void()>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     m_queue->dispatch([this, protectedThis = makeRef(*this), copiedOrigins = crossThreadCopy(origins), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& origin : copiedOrigins) {
             for (auto& localStorageNamespace : m_localStorageNamespaces.values())
@@ -476,6 +490,7 @@
 
 void StorageManager::waitUntilTasksFinished()
 {
+    ASSERT(RunLoop::isMain());
     BinarySemaphore semaphore;
     m_queue->dispatch([this, &semaphore] {
         Vector<std::pair<IPC::Connection::UniqueID, uint64_t>> connectionAndStorageMapIDPairsToRemove;
@@ -496,6 +511,7 @@
 
 void StorageManager::suspend(CompletionHandler<void()>&& completionHandler)
 {
+    ASSERT(RunLoop::isMain());
     CompletionHandlerCallingScope completionHandlerCaller(WTFMove(completionHandler));
     if (!m_localStorageDatabaseTracker)
         return;
@@ -525,6 +541,7 @@
 
 void StorageManager::resume()
 {
+    ASSERT(RunLoop::isMain());
     if (!m_localStorageDatabaseTracker)
         return;
 
@@ -537,6 +554,7 @@
 
 StorageArea* StorageManager::findStorageArea(IPC::Connection& connection, uint64_t storageMapID) const
 {
+    ASSERT(!RunLoop::isMain());
     std::pair<IPC::Connection::UniqueID, uint64_t> connectionAndStorageMapIDPair(connection.uniqueID(), storageMapID);
 
     if (!m_storageAreasByConnection.isValidKey(connectionAndStorageMapIDPair))
@@ -547,6 +565,7 @@
 
 LocalStorageNamespace* StorageManager::getOrCreateLocalStorageNamespace(uint64_t storageNamespaceID)
 {
+    ASSERT(!RunLoop::isMain());
     if (!m_localStorageNamespaces.isValidKey(storageNamespaceID))
         return nullptr;
 
@@ -557,6 +576,7 @@
 
 TransientLocalStorageNamespace* StorageManager::getOrCreateTransientLocalStorageNamespace(uint64_t storageNamespaceID, WebCore::SecurityOriginData&& topLevelOrigin)
 {
+    ASSERT(!RunLoop::isMain());
     if (!m_transientLocalStorageNamespaces.isValidKey({ storageNamespaceID, topLevelOrigin }))
         return nullptr;
 

Modified: trunk/Source/WebKit/NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp (248451 => 248452)


--- trunk/Source/WebKit/NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp	2019-08-08 23:31:12 UTC (rev 248451)
+++ trunk/Source/WebKit/NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp	2019-08-09 00:08:07 UTC (rev 248452)
@@ -36,14 +36,17 @@
 TransientLocalStorageNamespace::TransientLocalStorageNamespace()
     : m_quotaInBytes(StorageManager::localStorageDatabaseQuotaInBytes)
 {
+    ASSERT(!RunLoop::isMain());
 }
 
 TransientLocalStorageNamespace::~TransientLocalStorageNamespace()
 {
+    ASSERT(!RunLoop::isMain());
 }
 
 Ref<StorageArea> TransientLocalStorageNamespace::getOrCreateStorageArea(SecurityOriginData&& securityOrigin)
 {
+    ASSERT(!RunLoop::isMain());
     return *m_storageAreaMap.ensure(securityOrigin, [this, &securityOrigin]() mutable {
         return StorageArea::create(nullptr, WTFMove(securityOrigin), m_quotaInBytes);
     }).iterator->value.copyRef();
@@ -51,6 +54,7 @@
 
 Vector<SecurityOriginData> TransientLocalStorageNamespace::origins() const
 {
+    ASSERT(!RunLoop::isMain());
     Vector<SecurityOriginData> origins;
 
     for (const auto& storageArea : m_storageAreaMap.values()) {
@@ -63,6 +67,7 @@
 
 void TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin(const SecurityOriginData& securityOrigin)
 {
+    ASSERT(!RunLoop::isMain());
     auto originAndStorageArea = m_storageAreaMap.find(securityOrigin);
     if (originAndStorageArea != m_storageAreaMap.end())
         originAndStorageArea->value->clear();
@@ -70,6 +75,7 @@
 
 void TransientLocalStorageNamespace::clearAllStorageAreas()
 {
+    ASSERT(!RunLoop::isMain());
     for (auto& storageArea : m_storageAreaMap.values())
         storageArea->clear();
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to