| Index: sync/api/model_type_service.cc
|
| diff --git a/sync/api/model_type_service.cc b/sync/api/model_type_service.cc
|
| index 87df14bf6011dc559b98e90082d0e2d29f1235d7..a8c7933d65c0cc5ba2baab20bb9a7a3d06013e2c 100644
|
| --- a/sync/api/model_type_service.cc
|
| +++ b/sync/api/model_type_service.cc
|
| @@ -4,9 +4,14 @@
|
|
|
| #include "sync/api/model_type_service.h"
|
|
|
| +#include "sync/api/model_type_change_processor.h"
|
| +
|
| namespace syncer_v2 {
|
|
|
| -ModelTypeService::ModelTypeService() {}
|
| +ModelTypeService::ModelTypeService(
|
| + const ChangeProcessorFactory& change_processor_factory,
|
| + syncer::ModelType type)
|
| + : change_processor_factory_(change_processor_factory), type_(type) {}
|
|
|
| ModelTypeService::~ModelTypeService() {}
|
|
|
| @@ -14,15 +19,29 @@ ModelTypeChangeProcessor* ModelTypeService::change_processor() const {
|
| return change_processor_.get();
|
| }
|
|
|
| -void ModelTypeService::set_change_processor(
|
| - scoped_ptr<ModelTypeChangeProcessor> change_processor) {
|
| - DCHECK(!change_processor_);
|
| - change_processor_.swap(change_processor);
|
| - OnChangeProcessorSet();
|
| +ModelTypeChangeProcessor* ModelTypeService::GetOrCreateChangeProcessor() {
|
| + if (!change_processor_) {
|
| + change_processor_ = change_processor_factory_.Run(type(), this);
|
| + DCHECK(change_processor_);
|
| + OnChangeProcessorSet();
|
| + }
|
| + return change_processor_.get();
|
| }
|
|
|
| void ModelTypeService::clear_change_processor() {
|
| change_processor_.reset();
|
| }
|
|
|
| +ModelTypeChangeProcessor* ModelTypeService::OnSyncStarting(
|
| + const ModelTypeChangeProcessor::StartCallback& start_callback) {
|
| + ModelTypeChangeProcessor* processor = GetOrCreateChangeProcessor();
|
| + DCHECK(processor);
|
| + processor->OnSyncStarting(start_callback);
|
| + return processor;
|
| +}
|
| +
|
| +syncer::ModelType ModelTypeService::type() const {
|
| + return type_;
|
| +}
|
| +
|
| } // namespace syncer_v2
|
|
|