| Index: trunk/src/components/sync_driver/ui_data_type_controller.cc
|
| ===================================================================
|
| --- trunk/src/components/sync_driver/ui_data_type_controller.cc (revision 289111)
|
| +++ trunk/src/components/sync_driver/ui_data_type_controller.cc (working copy)
|
| @@ -17,7 +17,8 @@
|
|
|
| UIDataTypeController::UIDataTypeController()
|
| : DataTypeController(base::MessageLoopProxy::current(),
|
| - base::Closure()),
|
| + base::Closure(),
|
| + DisableTypeCallback()),
|
| sync_factory_(NULL),
|
| state_(NOT_RUNNING),
|
| type_(syncer::UNSPECIFIED) {
|
| @@ -26,9 +27,10 @@
|
| UIDataTypeController::UIDataTypeController(
|
| scoped_refptr<base::MessageLoopProxy> ui_thread,
|
| const base::Closure& error_callback,
|
| + const DisableTypeCallback& disable_callback,
|
| syncer::ModelType type,
|
| SyncApiComponentFactory* sync_factory)
|
| - : DataTypeController(ui_thread, error_callback),
|
| + : DataTypeController(ui_thread, error_callback, disable_callback),
|
| sync_factory_(sync_factory),
|
| state_(NOT_RUNNING),
|
| type_(type),
|
| @@ -267,9 +269,6 @@
|
| DCHECK(ui_thread_->BelongsToCurrentThread());
|
| DCHECK(syncer::IsRealDataType(type_));
|
|
|
| - if (state_ == NOT_RUNNING)
|
| - return;
|
| -
|
| State prev_state = state_;
|
| state_ = STOPPING;
|
|
|
| @@ -319,9 +318,8 @@
|
| return state_;
|
| }
|
|
|
| -void UIDataTypeController::OnSingleDataTypeUnrecoverableError(
|
| - const syncer::SyncError& error) {
|
| - DCHECK_EQ(type(), error.model_type());
|
| +void UIDataTypeController::OnSingleDatatypeUnrecoverableError(
|
| + const tracked_objects::Location& from_here, const std::string& message) {
|
| UMA_HISTOGRAM_ENUMERATION("Sync.DataTypeRunFailures",
|
| ModelTypeToHistogramInt(type()),
|
| syncer::MODEL_TYPE_COUNT);
|
| @@ -329,6 +327,8 @@
|
| if (!error_callback_.is_null())
|
| error_callback_.Run();
|
| if (!start_callback_.is_null()) {
|
| + syncer::SyncError error(
|
| + from_here, syncer::SyncError::DATATYPE_ERROR, message, type());
|
| syncer::SyncMergeResult local_merge_result(type());
|
| local_merge_result.set_error(error);
|
| start_callback_.Run(RUNTIME_ERROR,
|
|
|