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();
}