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 |