Title: [231837] trunk/Source/WebKit
- Revision
- 231837
- Author
- [email protected]
- Date
- 2018-05-15 21:43:15 -0700 (Tue, 15 May 2018)
Log Message
StorageManager::deleteLocalStorageOriginsModifiedSince: database files get deleted before database connections close
https://bugs.webkit.org/show_bug.cgi?id=185671
Patch by Sihui Liu <[email protected]> on 2018-05-15
Reviewed by Geoffrey Garen.
We should delete database files before closing databases.
* UIProcess/WebStorage/LocalStorageDatabase.cpp:
(WebKit::LocalStorageDatabase::updateDatabaseWithChangedItems):
* UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince): Deleted.
* UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
* UIProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (231836 => 231837)
--- trunk/Source/WebKit/ChangeLog 2018-05-16 03:48:38 UTC (rev 231836)
+++ trunk/Source/WebKit/ChangeLog 2018-05-16 04:43:15 UTC (rev 231837)
@@ -1,3 +1,21 @@
+2018-05-15 Sihui Liu <[email protected]>
+
+ StorageManager::deleteLocalStorageOriginsModifiedSince: database files get deleted before database connections close
+ https://bugs.webkit.org/show_bug.cgi?id=185671
+
+ Reviewed by Geoffrey Garen.
+
+ We should delete database files before closing databases.
+
+ * UIProcess/WebStorage/LocalStorageDatabase.cpp:
+ (WebKit::LocalStorageDatabase::updateDatabaseWithChangedItems):
+ * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
+ (WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
+ (WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince): Deleted.
+ * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
+ * UIProcess/WebStorage/StorageManager.cpp:
+ (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
+
2018-05-15 Dean Jackson <[email protected]>
Launch System Preview as the download starts, rather than waiting for a response
Modified: trunk/Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp (231836 => 231837)
--- trunk/Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp 2018-05-16 03:48:38 UTC (rev 231836)
+++ trunk/Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp 2018-05-16 04:43:15 UTC (rev 231837)
@@ -142,33 +142,31 @@
return time;
}
-Vector<SecurityOriginData> LocalStorageDatabaseTracker::deleteDatabasesModifiedSince(WallTime time)
+Vector<SecurityOriginData> LocalStorageDatabaseTracker::databasesModifiedSince(WallTime time)
{
ASSERT(!RunLoop::isMain());
importOriginIdentifiers();
- Vector<String> originIdentifiersToDelete;
-
+ Vector<String> originIdentifiersModified;
+
for (const String& origin : m_origins) {
String filePath = pathForDatabaseWithOriginIdentifier(origin);
-
+
auto modificationTime = FileSystem::getFileModificationTime(filePath);
if (!modificationTime || modificationTime.value() >= time)
- originIdentifiersToDelete.append(origin);
+ originIdentifiersModified.append(origin);
}
-
- Vector<SecurityOriginData> deletedDatabaseOrigins;
- deletedDatabaseOrigins.reserveInitialCapacity(originIdentifiersToDelete.size());
-
- for (const auto& originIdentifier : originIdentifiersToDelete) {
- removeDatabaseWithOriginIdentifier(originIdentifier);
-
+
+ Vector<SecurityOriginData> databaseOriginsModified;
+ databaseOriginsModified.reserveInitialCapacity(originIdentifiersModified.size());
+
+ for (const auto& originIdentifier : originIdentifiersModified) {
if (auto origin = SecurityOriginData::fromDatabaseIdentifier(originIdentifier))
- deletedDatabaseOrigins.uncheckedAppend(*origin);
+ databaseOriginsModified.uncheckedAppend(*origin);
else
ASSERT_NOT_REACHED();
}
-
- return deletedDatabaseOrigins;
+
+ return databaseOriginsModified;
}
Vector<SecurityOriginData> LocalStorageDatabaseTracker::origins() const
Modified: trunk/Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.h (231836 => 231837)
--- trunk/Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.h 2018-05-16 03:48:38 UTC (rev 231836)
+++ trunk/Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.h 2018-05-16 04:43:15 UTC (rev 231837)
@@ -55,8 +55,8 @@
void deleteDatabaseWithOrigin(const WebCore::SecurityOriginData&);
void deleteAllDatabases();
- // Returns a vector of the origins whose databases have been deleted.
- Vector<WebCore::SecurityOriginData> deleteDatabasesModifiedSince(WallTime);
+ // Returns a vector of the origins whose databases should be deleted.
+ Vector<WebCore::SecurityOriginData> databasesModifiedSince(WallTime);
Vector<WebCore::SecurityOriginData> origins() const;
Modified: trunk/Source/WebKit/UIProcess/WebStorage/StorageManager.cpp (231836 => 231837)
--- trunk/Source/WebKit/UIProcess/WebStorage/StorageManager.cpp 2018-05-16 03:48:38 UTC (rev 231836)
+++ trunk/Source/WebKit/UIProcess/WebStorage/StorageManager.cpp 2018-05-16 04:43:15 UTC (rev 231837)
@@ -618,16 +618,18 @@
void StorageManager::deleteLocalStorageOriginsModifiedSince(WallTime time, Function<void()>&& completionHandler)
{
m_queue->dispatch([this, protectedThis = makeRef(*this), time, completionHandler = WTFMove(completionHandler)]() mutable {
- auto deletedOrigins = m_localStorageDatabaseTracker->deleteDatabasesModifiedSince(time);
+ auto originsToDelete = m_localStorageDatabaseTracker->databasesModifiedSince(time);
+
+ for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
+ transientLocalStorageNamespace->clearAllStorageAreas();
- for (const auto& origin : deletedOrigins) {
+ for (const auto& origin : originsToDelete) {
for (auto& localStorageNamespace : m_localStorageNamespaces.values())
localStorageNamespace->clearStorageAreasMatchingOrigin(origin);
+
+ m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(origin);
}
- for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
- transientLocalStorageNamespace->clearAllStorageAreas();
-
RunLoop::main().dispatch(WTFMove(completionHandler));
});
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes