Chromium Code Reviews| 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() { |