void Client::AbortTransactionsForStorage(nsIOfflineStorage* aStorage) { NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); NS_ASSERTION(aStorage, "Passed null storage!"); TransactionThreadPool* pool = TransactionThreadPool::Get(); NS_ASSERTION(pool, "Should have checked if transaction service is active!"); IDBDatabase* database = IDBDatabase::FromStorage(aStorage); NS_ASSERTION(database, "This shouldn't be null!"); pool->AbortTransactionsForDatabase(database); }
void IndexedDatabaseManager::AbortCloseDatabasesForWindow(nsPIDOMWindow* aWindow) { NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); NS_ASSERTION(aWindow, "Null pointer!"); nsAutoTArray<IDBDatabase*, 50> liveDatabases; mLiveDatabases.EnumerateRead(EnumerateToTArray, &liveDatabases); TransactionThreadPool* pool = TransactionThreadPool::Get(); for (PRUint32 index = 0; index < liveDatabases.Length(); index++) { IDBDatabase*& database = liveDatabases[index]; if (database->Owner() == aWindow) { if (NS_FAILED(database->Close())) { NS_WARNING("Failed to close database for dying window!"); } if (pool) { pool->AbortTransactionsForDatabase(database); } } } }