summaryrefslogtreecommitdiffstats
path: root/webkit/database
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-01 00:19:05 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-01 00:19:05 +0000
commitf182444916248f4d0612fada91b49ee672573d85 (patch)
tree78cfabd98a1d8eabfa7468e2e9607e13baa16eef /webkit/database
parenta1b75b94f61d90054e3b432e8be3c897383450bd (diff)
downloadchromium_src-f182444916248f4d0612fada91b49ee672573d85.zip
chromium_src-f182444916248f4d0612fada91b49ee672573d85.tar.gz
chromium_src-f182444916248f4d0612fada91b49ee672573d85.tar.bz2
DatabaseTracker:: Fix a bug I introduced in r115465.
That commit caused all callbacks to be cleared whether they were run or not; the fix is to only remove called callbacks. BUG=none TEST=none R=ajwong,michaeln Review URL: http://codereview.chromium.org/9025018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@116066 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/database')
-rw-r--r--webkit/database/database_tracker.cc11
-rw-r--r--webkit/database/database_tracker.h2
2 files changed, 7 insertions, 6 deletions
diff --git a/webkit/database/database_tracker.cc b/webkit/database/database_tracker.cc
index 9f6e180..39ee5f5 100644
--- a/webkit/database/database_tracker.cc
+++ b/webkit/database/database_tracker.cc
@@ -216,9 +216,8 @@ void DatabaseTracker::DeleteDatabaseIfNeeded(const string16& origin_identifier,
if (dbs_to_be_deleted_[origin_identifier].empty())
dbs_to_be_deleted_.erase(origin_identifier);
- for (PendingDeletionCallbacks::iterator callback =
- deletion_callbacks_.begin();
- callback != deletion_callbacks_.end(); ++callback) {
+ PendingDeletionCallbacks::iterator callback = deletion_callbacks_.begin();
+ while (callback != deletion_callbacks_.end()) {
DatabaseSet::iterator found_origin =
callback->second.find(origin_identifier);
if (found_origin != callback->second.end()) {
@@ -229,12 +228,14 @@ void DatabaseTracker::DeleteDatabaseIfNeeded(const string16& origin_identifier,
if (callback->second.empty()) {
net::CompletionCallback cb = callback->first;
cb.Run(net::OK);
+ callback = deletion_callbacks_.erase(callback);
+ continue;
}
}
}
- }
- deletion_callbacks_.clear();
+ ++callback;
+ }
}
}
diff --git a/webkit/database/database_tracker.h b/webkit/database/database_tracker.h
index 8871e1b..d3d0473 100644
--- a/webkit/database/database_tracker.h
+++ b/webkit/database/database_tracker.h
@@ -116,7 +116,7 @@ class DatabaseTracker
FilePath GetFullDBFilePath(const string16& origin_identifier,
const string16& database_name);
- // virtual for unittesting only
+ // virtual for unit-testing only
virtual bool GetOriginInfo(const string16& origin_id, OriginInfo* info);
virtual bool GetAllOriginIdentifiers(std::vector<string16>* origin_ids);
virtual bool GetAllOriginsInfo(std::vector<OriginInfo>* origins_info);