Index: components/sync/model/recording_model_type_change_processor.cc |
diff --git a/components/sync/model/recording_model_type_change_processor.cc b/components/sync/model/recording_model_type_change_processor.cc |
index 0d379747de9e855cecb81cc841c8de0dd28c7620..e74e44f451aa1fe9cf4b0ee4af8e3457d3e77ece 100644 |
--- a/components/sync/model/recording_model_type_change_processor.cc |
+++ b/components/sync/model/recording_model_type_change_processor.cc |
@@ -6,10 +6,27 @@ |
#include <utility> |
+#include "base/bind.h" |
+#include "base/memory/ptr_util.h" |
#include "components/sync/model/metadata_batch.h" |
namespace syncer { |
+namespace { |
+ |
+std::unique_ptr<ModelTypeChangeProcessor> CreateAndAssignProcessor( |
+ RecordingModelTypeChangeProcessor** processor_address, |
+ ModelType type, |
+ ModelTypeSyncBridge* bridge) { |
+ auto processor = base::MakeUnique<RecordingModelTypeChangeProcessor>(); |
+ *processor_address = processor.get(); |
+ // Not all compilers are smart enough to up cast during copy elision, so we |
+ // explicitly create a correctly typed unique_ptr. |
+ return base::WrapUnique(processor.release()); |
+} |
+ |
+} // namespace |
+ |
RecordingModelTypeChangeProcessor::RecordingModelTypeChangeProcessor() {} |
RecordingModelTypeChangeProcessor::~RecordingModelTypeChangeProcessor() {} |
@@ -41,4 +58,12 @@ void RecordingModelTypeChangeProcessor::SetIsTrackingMetadata( |
is_tracking_metadata_ = is_tracking; |
} |
+// static |
+ModelTypeSyncBridge::ChangeProcessorFactory |
+RecordingModelTypeChangeProcessor::FactoryForBridgeTest( |
+ RecordingModelTypeChangeProcessor** processor_address) { |
+ return base::Bind(&CreateAndAssignProcessor, |
+ base::Unretained(processor_address)); |
+} |
+ |
} // namespace syncer |