Chromium Code Reviews| Index: components/sync/engine_impl/model_type_registry.cc |
| diff --git a/components/sync/engine_impl/model_type_registry.cc b/components/sync/engine_impl/model_type_registry.cc |
| index 9854d5b3d4479eb316b9a8b84a963620ccd96c1b..edf40771143f8bc970b87c5db62f37c98a8a91d7 100644 |
| --- a/components/sync/engine_impl/model_type_registry.cc |
| +++ b/components/sync/engine_impl/model_type_registry.cc |
| @@ -101,16 +101,15 @@ void ModelTypeRegistry::SetEnabledDirectoryTypes( |
| // DebugInfoEmitters are never deleted. Use existing one if we have it. |
| DirectoryTypeDebugInfoEmitter* emitter = NULL; |
| - DirectoryTypeDebugInfoEmitterMap::iterator it = |
| - directory_type_debug_info_emitter_map_.find(type); |
| - if (it != directory_type_debug_info_emitter_map_.end()) { |
| - emitter = it->second; |
| + DataTypeDebugInfoEmitterMap::iterator it = |
| + data_type_debug_info_emitter_map_.find(type); |
| + if (it != data_type_debug_info_emitter_map_.end()) { |
| + emitter = static_cast<DirectoryTypeDebugInfoEmitter*>(it->second); |
|
pavely
2016/10/19 18:18:59
Could you check if it will suffice to declare emit
Gang Wu
2016/10/20 21:35:35
Done.
|
| } else { |
| emitter = new DirectoryTypeDebugInfoEmitter(directory_, type, |
| &type_debug_info_observers_); |
| - directory_type_debug_info_emitter_map_.insert( |
| - std::make_pair(type, emitter)); |
| - directory_type_debug_info_emitters_.push_back(emitter); |
| + data_type_debug_info_emitter_map_.insert(std::make_pair(type, emitter)); |
| + data_type_debug_info_emitters_.push_back(emitter); |
| } |
| DirectoryCommitContributor* committer = |
| @@ -148,9 +147,23 @@ void ModelTypeRegistry::ConnectType( |
| if (encrypted_types_.Has(type)) |
| cryptographer_copy.reset(new Cryptographer(*cryptographer_)); |
| - std::unique_ptr<ModelTypeWorker> worker(new ModelTypeWorker( |
| - type, activation_context->model_type_state, std::move(cryptographer_copy), |
| - nudge_handler_, std::move(activation_context->type_processor))); |
| + // DebugInfoEmitters are never deleted. Use existing one if we have it. |
| + NonBlockingTypeDebugInfoEmitter* emitter = NULL; |
| + DataTypeDebugInfoEmitterMap::iterator it = |
| + data_type_debug_info_emitter_map_.find(type); |
| + if (it != data_type_debug_info_emitter_map_.end()) { |
| + emitter = static_cast<NonBlockingTypeDebugInfoEmitter*>(it->second); |
| + } else { |
| + emitter = |
| + new NonBlockingTypeDebugInfoEmitter(type, &type_debug_info_observers_); |
| + data_type_debug_info_emitter_map_.insert(std::make_pair(type, emitter)); |
| + data_type_debug_info_emitters_.push_back(emitter); |
| + } |
| + |
| + std::unique_ptr<ModelTypeWorker> worker( |
| + new ModelTypeWorker(type, emitter, activation_context->model_type_state, |
| + std::move(cryptographer_copy), nudge_handler_, |
| + std::move(activation_context->type_processor))); |
| // Initialize Processor -> Worker communication channel. |
| std::unique_ptr<CommitQueue> commit_queue_proxy(new CommitQueueProxy( |
| @@ -221,9 +234,9 @@ CommitContributorMap* ModelTypeRegistry::commit_contributor_map() { |
| return &commit_contributor_map_; |
| } |
| -DirectoryTypeDebugInfoEmitterMap* |
| +DataTypeDebugInfoEmitterMap* |
| ModelTypeRegistry::directory_type_debug_info_emitter_map() { |
| - return &directory_type_debug_info_emitter_map_; |
| + return &data_type_debug_info_emitter_map_; |
| } |
| void ModelTypeRegistry::RegisterDirectoryTypeDebugInfoObserver( |
| @@ -243,9 +256,9 @@ bool ModelTypeRegistry::HasDirectoryTypeDebugInfoObserver( |
| } |
| void ModelTypeRegistry::RequestEmitDebugInfo() { |
| - for (DirectoryTypeDebugInfoEmitterMap::iterator it = |
| - directory_type_debug_info_emitter_map_.begin(); |
| - it != directory_type_debug_info_emitter_map_.end(); ++it) { |
| + for (DataTypeDebugInfoEmitterMap::iterator it = |
| + data_type_debug_info_emitter_map_.begin(); |
| + it != data_type_debug_info_emitter_map_.end(); ++it) { |
| it->second->EmitCommitCountersUpdate(); |
| it->second->EmitUpdateCountersUpdate(); |
| it->second->EmitStatusCountersUpdate(); |