summaryrefslogtreecommitdiffstats
path: root/webkit/database/database_tracker.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/database/database_tracker.cc')
-rw-r--r--webkit/database/database_tracker.cc47
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;