diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-01 00:19:05 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-01 00:19:05 +0000 |
commit | f182444916248f4d0612fada91b49ee672573d85 (patch) | |
tree | 78cfabd98a1d8eabfa7468e2e9607e13baa16eef /webkit/database | |
parent | a1b75b94f61d90054e3b432e8be3c897383450bd (diff) | |
download | chromium_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.cc | 11 | ||||
-rw-r--r-- | webkit/database/database_tracker.h | 2 |
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); |