Index: content/browser/indexed_db/indexed_db_factory.cc |
diff --git a/content/browser/indexed_db/indexed_db_factory.cc b/content/browser/indexed_db/indexed_db_factory.cc |
index 55403314ecb4e6a91f177c2cde407a2c3a5731db..8cf50425866d245bc449142ed477c6e7d57e548b 100644 |
--- a/content/browser/indexed_db/indexed_db_factory.cc |
+++ b/content/browser/indexed_db/indexed_db_factory.cc |
@@ -25,31 +25,13 @@ |
IndexedDBFactory::~IndexedDBFactory() {} |
-void IndexedDBFactory::RemoveDatabaseFromMaps( |
- const IndexedDBDatabase::Identifier& identifier) { |
- IndexedDBDatabaseMap::iterator it = database_map_.find(identifier); |
- DCHECK(it != database_map_.end()); |
- IndexedDBDatabase* database = it->second; |
- database_map_.erase(it); |
- |
- std::pair<OriginDBMap::iterator, OriginDBMap::iterator> range = |
- origin_dbs_.equal_range(database->identifier().first); |
- DCHECK(range.first != range.second); |
- for (OriginDBMap::iterator it2 = range.first; it2 != range.second; ++it2) { |
- if (it2->second == database) { |
- origin_dbs_.erase(it2); |
- break; |
- } |
- } |
-} |
- |
void IndexedDBFactory::ReleaseDatabase( |
const IndexedDBDatabase::Identifier& identifier, |
bool forcedClose) { |
- |
- DCHECK(!database_map_.find(identifier)->second->backing_store()); |
- |
- RemoveDatabaseFromMaps(identifier); |
+ IndexedDBDatabaseMap::iterator it = database_map_.find(identifier); |
+ DCHECK(it != database_map_.end()); |
+ DCHECK(!it->second->backing_store()); |
+ database_map_.erase(it); |
// No grace period on a forced-close, as the initiator is |
// assuming the backing store will be released once all |
@@ -110,15 +92,6 @@ |
} |
void IndexedDBFactory::ForceClose(const GURL& origin_url) { |
- std::pair<OriginDBMapIterator, OriginDBMapIterator> range = |
- GetOpenDatabasesForOrigin(origin_url); |
- |
- while (range.first != range.second) { |
- IndexedDBDatabase* db = range.first->second; |
- ++range.first; |
- db->ForceClose(); |
- } |
- |
if (backing_store_map_.find(origin_url) != backing_store_map_.end()) |
ReleaseBackingStore(origin_url, true /* immediate */); |
} |
@@ -210,9 +183,8 @@ |
} |
database_map_[unique_identifier] = database; |
- origin_dbs_.insert(std::make_pair(origin_url, database)); |
database->DeleteDatabase(callbacks); |
- RemoveDatabaseFromMaps(unique_identifier); |
+ database_map_.erase(unique_identifier); |
database = NULL; |
backing_store = NULL; |
ReleaseBackingStore(origin_url, false /* immediate */); |
@@ -352,27 +324,20 @@ |
database->OpenConnection( |
callbacks, database_callbacks, transaction_id, version); |
- if (!was_open && database->ConnectionCount() > 0) { |
+ if (!was_open && database->ConnectionCount() > 0) |
database_map_[unique_identifier] = database; |
- origin_dbs_.insert(std::make_pair(origin_url, database)); |
- } |
-} |
- |
-std::pair<IndexedDBFactory::OriginDBMapIterator, |
- IndexedDBFactory::OriginDBMapIterator> |
-IndexedDBFactory::GetOpenDatabasesForOrigin(const GURL& origin_url) const { |
- return origin_dbs_.equal_range(origin_url); |
-} |
- |
-size_t IndexedDBFactory::GetConnectionCount(const GURL& origin_url) const { |
- size_t count(0); |
- |
- std::pair<OriginDBMapIterator, OriginDBMapIterator> range = |
- GetOpenDatabasesForOrigin(origin_url); |
- for (OriginDBMapIterator it = range.first; it != range.second; ++it) |
- count += it->second->ConnectionCount(); |
- |
- return count; |
+} |
+ |
+std::vector<IndexedDBDatabase*> IndexedDBFactory::GetOpenDatabasesForOrigin( |
+ const GURL& origin_url) const { |
+ std::vector<IndexedDBDatabase*> result; |
+ for (IndexedDBDatabaseMap::const_iterator it = database_map_.begin(); |
+ it != database_map_.end(); |
+ ++it) { |
+ if (it->first.first == origin_url) |
+ result.push_back(it->second); |
+ } |
+ return result; |
} |
} // namespace content |