summaryrefslogtreecommitdiffstats
path: root/components/sync_driver
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-12 14:29:50 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-12 14:31:34 +0000
commit871c5d30031f8bf103c466fe66b4a79052890121 (patch)
treed52ccadda3469b132812cdb86e82c93700bdb99e /components/sync_driver
parentf3fc594daec2e9bbed8c36c16669e81d7a6610de (diff)
downloadchromium_src-871c5d30031f8bf103c466fe66b4a79052890121.zip
chromium_src-871c5d30031f8bf103c466fe66b4a79052890121.tar.gz
chromium_src-871c5d30031f8bf103c466fe66b4a79052890121.tar.bz2
[Sync] Don't synchronously stop datatypes that encounter errors
The datatype logic may be operating unders assumptions that break when the type is stopped from under it, possibly triggering crashes. BUG=402595 Review URL: https://codereview.chromium.org/462863002 Cr-Commit-Position: refs/heads/master@{#288954} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288954 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components/sync_driver')
-rw-r--r--components/sync_driver/ui_data_type_controller.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/components/sync_driver/ui_data_type_controller.cc b/components/sync_driver/ui_data_type_controller.cc
index eca5779..23487a2 100644
--- a/components/sync_driver/ui_data_type_controller.cc
+++ b/components/sync_driver/ui_data_type_controller.cc
@@ -331,9 +331,12 @@ void UIDataTypeController::OnSingleDataTypeUnrecoverableError(
if (!start_callback_.is_null()) {
syncer::SyncMergeResult local_merge_result(type());
local_merge_result.set_error(error);
- start_callback_.Run(RUNTIME_ERROR,
- local_merge_result,
- syncer::SyncMergeResult(type()));
+ base::MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(start_callback_,
+ RUNTIME_ERROR,
+ local_merge_result,
+ syncer::SyncMergeResult(type())));
}
}