diff options
Diffstat (limited to 'webkit/database/database_tracker.cc')
-rw-r--r-- | webkit/database/database_tracker.cc | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/webkit/database/database_tracker.cc b/webkit/database/database_tracker.cc index 980e8a1..9f6e180 100644 --- a/webkit/database/database_tracker.cc +++ b/webkit/database/database_tracker.cc @@ -216,8 +216,8 @@ void DatabaseTracker::DeleteDatabaseIfNeeded(const string16& origin_identifier, if (dbs_to_be_deleted_[origin_identifier].empty()) dbs_to_be_deleted_.erase(origin_identifier); - std::vector<net::OldCompletionCallback*> to_be_deleted; - for (PendingCompletionMap::iterator callback = deletion_callbacks_.begin(); + for (PendingDeletionCallbacks::iterator callback = + deletion_callbacks_.begin(); callback != deletion_callbacks_.end(); ++callback) { DatabaseSet::iterator found_origin = callback->second.find(origin_identifier); @@ -227,16 +227,14 @@ void DatabaseTracker::DeleteDatabaseIfNeeded(const string16& origin_identifier, if (databases.empty()) { callback->second.erase(found_origin); if (callback->second.empty()) { - net::OldCompletionCallback* cb = callback->first; - cb->Run(net::OK); - to_be_deleted.push_back(cb); + net::CompletionCallback cb = callback->first; + cb.Run(net::OK); } } } } - for (std::vector<net::OldCompletionCallback*>::iterator cb = - to_be_deleted.begin(); cb != to_be_deleted.end(); ++cb) - deletion_callbacks_.erase(*cb); + + deletion_callbacks_.clear(); } } @@ -631,12 +629,11 @@ void DatabaseTracker::ScheduleDatabaseForDeletion( void DatabaseTracker::ScheduleDatabasesForDeletion( const DatabaseSet& databases, - net::OldCompletionCallback* callback) { - DCHECK(!callback || - deletion_callbacks_.find(callback) == deletion_callbacks_.end()); + const net::CompletionCallback& callback) { DCHECK(!databases.empty()); - if (callback) - deletion_callbacks_[callback] = databases; + + if (!callback.is_null()) + deletion_callbacks_.push_back(std::make_pair(callback, databases)); for (DatabaseSet::const_iterator ori = databases.begin(); ori != databases.end(); ++ori) { for (std::set<string16>::const_iterator db = ori->second.begin(); @@ -647,17 +644,17 @@ void DatabaseTracker::ScheduleDatabasesForDeletion( int DatabaseTracker::DeleteDatabase(const string16& origin_identifier, const string16& database_name, - net::OldCompletionCallback* callback) { + const net::CompletionCallback& callback) { if (!LazyInit()) return net::ERR_FAILED; - DCHECK(!callback || - deletion_callbacks_.find(callback) == deletion_callbacks_.end()); - if (database_connections_.IsDatabaseOpened(origin_identifier, database_name)) { - if (callback) - deletion_callbacks_[callback][origin_identifier].insert(database_name); + if (!callback.is_null()) { + DatabaseSet set; + set[origin_identifier].insert(database_name); + deletion_callbacks_.push_back(std::make_pair(callback, set)); + } ScheduleDatabaseForDeletion(origin_identifier, database_name); return net::ERR_IO_PENDING; } @@ -667,12 +664,10 @@ int DatabaseTracker::DeleteDatabase(const string16& origin_identifier, int DatabaseTracker::DeleteDataModifiedSince( const base::Time& cutoff, - net::OldCompletionCallback* callback) { + const net::CompletionCallback& callback) { if (!LazyInit()) return net::ERR_FAILED; - DCHECK(!callback || - deletion_callbacks_.find(callback) == deletion_callbacks_.end()); DatabaseSet to_be_deleted; std::vector<string16> origins_identifiers; @@ -716,13 +711,11 @@ int DatabaseTracker::DeleteDataModifiedSince( return net::OK; } -int DatabaseTracker::DeleteDataForOrigin(const string16& origin, - net::OldCompletionCallback* callback) { +int DatabaseTracker::DeleteDataForOrigin( + const string16& origin, const net::CompletionCallback& callback) { if (!LazyInit()) return net::ERR_FAILED; - DCHECK(!callback || - deletion_callbacks_.find(callback) == deletion_callbacks_.end()); DatabaseSet to_be_deleted; std::vector<DatabaseDetails> details; @@ -806,7 +799,7 @@ void DatabaseTracker::ClearLocalState(bool clear_all_databases) { special_storage_policy_.get() && special_storage_policy_->HasSessionOnlyOrigins(); - // Clearning only session-only databases, and there are none. + // Clearing only session-only databases, and there are none. if (!clear_all_databases && !has_session_only_databases) return; |