diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-25 02:57:10 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-25 02:57:10 +0000 |
commit | 29f97e640739f7cb62c3ae742e689dae7cbe081a (patch) | |
tree | 9b66ee983689f6a2a46e8c23555b4f1f6b36993d /chrome/browser/sync | |
parent | 9adc9dce6687888b102210e06ca24db4d7259053 (diff) | |
download | chromium_src-29f97e640739f7cb62c3ae742e689dae7cbe081a.zip chromium_src-29f97e640739f7cb62c3ae742e689dae7cbe081a.tar.gz chromium_src-29f97e640739f7cb62c3ae742e689dae7cbe081a.tar.bz2 |
[SYNC] Speculative fix for autofill change processor destroying on the wrong thread. The data type manager should now tell any datatype controller that is not already stopping or not running to stop. Namely, this covers the MODEL_STARTING and ASSOCIATING cases, which weren't being covered before. Tests that can reproduce these race conditions still needed.
BUG=61804
TEST=unit,sync_integration,self
Review URL: http://codereview.chromium.org/6273011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72458 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync')
-rw-r--r-- | chrome/browser/sync/glue/data_type_manager_impl.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/chrome/browser/sync/glue/data_type_manager_impl.cc b/chrome/browser/sync/glue/data_type_manager_impl.cc index 86b142d..9b0efdf 100644 --- a/chrome/browser/sync/glue/data_type_manager_impl.cc +++ b/chrome/browser/sync/glue/data_type_manager_impl.cc @@ -358,7 +358,8 @@ void DataTypeManagerImpl::FinishStop() { for (DataTypeController::TypeMap::const_iterator it = controllers_.begin(); it != controllers_.end(); ++it) { DataTypeController* dtc = (*it).second; - if (dtc->state() == DataTypeController::RUNNING) { + if (dtc->state() != DataTypeController::NOT_RUNNING && + dtc->state() != DataTypeController::STOPPING) { dtc->Stop(); VLOG(1) << "Stopped " << dtc->name(); } |