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..5271a6fa6923c771c89941e1fa9baacdff44b4b1 100644 |
| --- a/components/sync_driver/non_blocking_data_type_controller.cc |
| +++ b/components/sync_driver/non_blocking_data_type_controller.cc |
| @@ -12,6 +12,8 @@ |
| #include "base/single_thread_task_runner.h" |
| #include "components/sync_driver/backend_data_type_configurer.h" |
| #include "components/sync_driver/sync_client.h" |
| +#include "sync/api/model_type_change_processor.h" |
| +#include "sync/api/model_type_service.h" |
| #include "sync/api/sync_error.h" |
| #include "sync/api/sync_merge_result.h" |
| #include "sync/internal_api/public/activation_context.h" |
| @@ -53,11 +55,8 @@ void NonBlockingDataTypeController::LoadModels( |
| // Start the type processor on the model thread. |
| if (!RunOnModelThread( |
| FROM_HERE, |
| - base::Bind( |
| - &syncer_v2::SharedModelTypeProcessor::OnSyncStarting, |
| - type_processor(), |
| - base::Bind(&NonBlockingDataTypeController::OnProcessorStarted, |
| - this)))) { |
| + base::Bind(&NonBlockingDataTypeController::LoadModelsOnModelThread, |
| + this))) { |
| LoadModelsDone( |
| UNRECOVERABLE_ERROR, |
| syncer::SyncError(FROM_HERE, syncer::SyncError::DATATYPE_ERROR, |
| @@ -65,6 +64,11 @@ void NonBlockingDataTypeController::LoadModels( |
| } |
| } |
| +void NonBlockingDataTypeController::LoadModelsOnModelThread() { |
| + type_processor()->OnSyncStarting( |
| + base::Bind(&NonBlockingDataTypeController::OnProcessorStarted, this)); |
| +} |
| + |
| void NonBlockingDataTypeController::LoadModelsDone( |
| ConfigureResult result, |
| const syncer::SyncError& error) { |
| @@ -150,8 +154,11 @@ void NonBlockingDataTypeController::Stop() { |
| RunOnModelThread( |
| FROM_HERE, |
| - base::Bind(&syncer_v2::SharedModelTypeProcessor::DisconnectSync, |
| - type_processor())); |
| + base::Bind(&NonBlockingDataTypeController::StopOnModelThread, this)); |
| +} |
| + |
| +void NonBlockingDataTypeController::StopOnModelThread() { |
|
maxbogue
2016/03/15 17:37:33
Why did you switch to having this extra function i
Gang Wu
2016/03/22 00:33:39
Doing this because my previous patch, change it ba
|
| + type_processor()->DisconnectSync(); |
| } |
| std::string NonBlockingDataTypeController::name() const { |
| @@ -232,12 +239,12 @@ void NonBlockingDataTypeController::InitializeProcessorOnModelThread() { |
| // 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)); |
| + syncer_v2::ModelTypeChangeProcessor* processor = |
| + model_type_service->InitializeProcessor(base::Bind( |
|
maxbogue
2016/03/15 17:37:33
As we discussed at the very end of the meeting, th
Gang Wu
2016/03/22 00:33:39
Done.
|
| + &NonBlockingDataTypeController::CreateSharedModelTypeProcessor, |
| + this)); |
| + DCHECK(processor); |
| + DCHECK_EQ(type_processor_.get(), processor); |
| } |
| void NonBlockingDataTypeController::InitializeProcessor() { |
| @@ -249,4 +256,16 @@ void NonBlockingDataTypeController::InitializeProcessor() { |
| this)); |
| } |
| +scoped_ptr<syncer_v2::ModelTypeChangeProcessor> |
| +NonBlockingDataTypeController::CreateSharedModelTypeProcessor( |
|
maxbogue
2016/03/15 17:37:33
This shouldn't be in the DTC. It needs to be passe
Gang Wu
2016/03/22 00:33:39
Done.
|
| + syncer_v2::ModelTypeService* service) { |
| + DCHECK(!type_processor_.get()); |
| + scoped_ptr<syncer_v2::SharedModelTypeProcessor> shared_model_type_processor( |
| + make_scoped_ptr( |
| + new syncer_v2::SharedModelTypeProcessor(type(), service))); |
| + type_processor_ = shared_model_type_processor->AsWeakPtrForUI(); |
| + return make_scoped_ptr<syncer_v2::ModelTypeChangeProcessor>( |
| + shared_model_type_processor.release()); |
| +} |
| + |
| } // namespace sync_driver_v2 |