Index: components/sync_driver/non_blocking_data_type_controller.cc |
diff --git a/components/sync_driver/non_blocking_data_type_controller.cc b/components/sync_driver/non_blocking_data_type_controller.cc |
index f2996ab1e97325dfd0b5577de28efb704b36a651..9da6850fea30d3f4b5da435f41ff12fcbcf9a9e3 100644 |
--- a/components/sync_driver/non_blocking_data_type_controller.cc |
+++ b/components/sync_driver/non_blocking_data_type_controller.cc |
@@ -55,7 +55,7 @@ void NonBlockingDataTypeController::LoadModels( |
FROM_HERE, |
base::Bind( |
&syncer_v2::SharedModelTypeProcessor::OnSyncStarting, |
- type_processor(), |
+ base::Unretained(type_processor()), |
skym
2016/03/04 22:12:28
Danger!
Gang Wu
2016/03/08 20:35:25
Done.
|
base::Bind(&NonBlockingDataTypeController::OnProcessorStarted, |
this)))) { |
LoadModelsDone( |
@@ -151,7 +151,7 @@ void NonBlockingDataTypeController::Stop() { |
RunOnModelThread( |
FROM_HERE, |
base::Bind(&syncer_v2::SharedModelTypeProcessor::DisconnectSync, |
- type_processor())); |
+ base::Unretained(type_processor()))); |
skym
2016/03/04 22:12:28
I think it's important we have a weak ptr to verif
Gang Wu
2016/03/08 20:35:25
Done.
|
} |
std::string NonBlockingDataTypeController::name() const { |
@@ -213,9 +213,16 @@ void NonBlockingDataTypeController::RecordUnrecoverableError() { |
syncer::MODEL_TYPE_COUNT); |
} |
-base::WeakPtr<syncer_v2::SharedModelTypeProcessor> |
+syncer_v2::SharedModelTypeProcessor* |
NonBlockingDataTypeController::type_processor() const { |
- return type_processor_; |
+ base::WeakPtr<syncer_v2::ModelTypeService> model_type_service = |
+ sync_client_->GetModelTypeServiceForType(type()); |
+ if (!model_type_service.get()) { |
skym
2016/03/04 22:12:28
This is only safe on the model thread.
Gang Wu
2016/03/08 20:35:25
Done.
|
+ return NULL; |
+ } |
+ |
+ return static_cast<syncer_v2::SharedModelTypeProcessor*>( |
+ model_type_service->change_processor()); |
} |
syncer::ModelType NonBlockingDataTypeController::type() const { |
@@ -231,13 +238,7 @@ void NonBlockingDataTypeController::InitializeProcessorOnModelThread() { |
// TODO(gangwu): Add SyncError and then call start_callback with it. also |
// set an error state to |state_|. |
} |
- |
- scoped_ptr<syncer_v2::SharedModelTypeProcessor> shared_model_type_processor( |
- make_scoped_ptr(new syncer_v2::SharedModelTypeProcessor( |
- type(), model_type_service.get()))); |
- type_processor_ = shared_model_type_processor->AsWeakPtrForUI(); |
- model_type_service->set_change_processor( |
- std::move(shared_model_type_processor)); |
+ model_type_service->InitializeProcessor(type()); |
} |
void NonBlockingDataTypeController::InitializeProcessor() { |