Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(661)

Side by Side Diff: sync/sessions/model_type_registry.cc

Issue 224563004: sync: Re-implement getAllNodes WebUI function (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comment fix Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/sessions/model_type_registry.h ('k') | sync/sync_core.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sync/sessions/model_type_registry.h" 5 #include "sync/sessions/model_type_registry.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "sync/engine/directory_commit_contributor.h" 9 #include "sync/engine/directory_commit_contributor.h"
10 #include "sync/engine/directory_type_debug_info_emitter.h"
10 #include "sync/engine/directory_update_handler.h" 11 #include "sync/engine/directory_update_handler.h"
11 #include "sync/engine/non_blocking_type_processor_core.h" 12 #include "sync/engine/non_blocking_type_processor_core.h"
12 #include "sync/internal_api/public/non_blocking_type_processor.h" 13 #include "sync/internal_api/public/non_blocking_type_processor.h"
13 14
14 namespace syncer { 15 namespace syncer {
15 16
16 ModelTypeRegistry::ModelTypeRegistry() : directory_(NULL) {} 17 ModelTypeRegistry::ModelTypeRegistry() : directory_(NULL) {}
17 18
18 ModelTypeRegistry::ModelTypeRegistry( 19 ModelTypeRegistry::ModelTypeRegistry(
19 const std::vector<scoped_refptr<ModelSafeWorker> >& workers, 20 const std::vector<scoped_refptr<ModelSafeWorker> >& workers,
20 syncable::Directory* directory) 21 syncable::Directory* directory)
21 : directory_(directory) { 22 : directory_(directory) {
22 for (size_t i = 0u; i < workers.size(); ++i) { 23 for (size_t i = 0u; i < workers.size(); ++i) {
23 workers_map_.insert( 24 workers_map_.insert(
24 std::make_pair(workers[i]->GetModelSafeGroup(), workers[i])); 25 std::make_pair(workers[i]->GetModelSafeGroup(), workers[i]));
25 } 26 }
26 } 27 }
27 28
28 ModelTypeRegistry::~ModelTypeRegistry() {} 29 ModelTypeRegistry::~ModelTypeRegistry() {}
29 30
30 void ModelTypeRegistry::SetEnabledDirectoryTypes( 31 void ModelTypeRegistry::SetEnabledDirectoryTypes(
31 const ModelSafeRoutingInfo& routing_info) { 32 const ModelSafeRoutingInfo& routing_info) {
32 // Remove all existing directory processors and delete them. 33 // Remove all existing directory processors and delete them.
33 for (ModelTypeSet::Iterator it = enabled_directory_types_.First(); 34 for (ModelTypeSet::Iterator it = enabled_directory_types_.First();
34 it.Good(); it.Inc()) { 35 it.Good(); it.Inc()) {
35 size_t result1 = update_handler_map_.erase(it.Get()); 36 size_t result1 = update_handler_map_.erase(it.Get());
36 size_t result2 = commit_contributor_map_.erase(it.Get()); 37 size_t result2 = commit_contributor_map_.erase(it.Get());
38 size_t result3 = directory_type_debug_info_emitter_map_.erase(it.Get());
37 DCHECK_EQ(1U, result1); 39 DCHECK_EQ(1U, result1);
38 DCHECK_EQ(1U, result2); 40 DCHECK_EQ(1U, result2);
41 DCHECK_EQ(1U, result3);
39 } 42 }
40 43
41 // Clear the old instances of directory update handlers and commit 44 // Clear the old instances of directory update handlers and commit
42 // contributors, deleting their contents in the processs. 45 // contributors, deleting their contents in the processs.
43 directory_update_handlers_.clear(); 46 directory_update_handlers_.clear();
44 directory_commit_contributors_.clear(); 47 directory_commit_contributors_.clear();
48 directory_type_debug_info_emitters_.clear();
45 49
46 // Create new ones and add them to the appropriate containers. 50 // Create new ones and add them to the appropriate containers.
47 for (ModelSafeRoutingInfo::const_iterator routing_iter = routing_info.begin(); 51 for (ModelSafeRoutingInfo::const_iterator routing_iter = routing_info.begin();
48 routing_iter != routing_info.end(); ++routing_iter) { 52 routing_iter != routing_info.end(); ++routing_iter) {
49 ModelType type = routing_iter->first; 53 ModelType type = routing_iter->first;
50 ModelSafeGroup group = routing_iter->second; 54 ModelSafeGroup group = routing_iter->second;
51 std::map<ModelSafeGroup, scoped_refptr<ModelSafeWorker> >::iterator 55 std::map<ModelSafeGroup, scoped_refptr<ModelSafeWorker> >::iterator
52 worker_it = workers_map_.find(group); 56 worker_it = workers_map_.find(group);
53 DCHECK(worker_it != workers_map_.end()); 57 DCHECK(worker_it != workers_map_.end());
54 scoped_refptr<ModelSafeWorker> worker = worker_it->second; 58 scoped_refptr<ModelSafeWorker> worker = worker_it->second;
55 59
56 DirectoryCommitContributor* committer = 60 DirectoryCommitContributor* committer =
57 new DirectoryCommitContributor(directory_, type); 61 new DirectoryCommitContributor(directory_, type);
58 DirectoryUpdateHandler* updater = 62 DirectoryUpdateHandler* updater =
59 new DirectoryUpdateHandler(directory_, type, worker); 63 new DirectoryUpdateHandler(directory_, type, worker);
64 DirectoryTypeDebugInfoEmitter* emitter =
65 new DirectoryTypeDebugInfoEmitter(directory_, type);
60 66
61 // These containers take ownership of their contents. 67 // These containers take ownership of their contents.
62 directory_commit_contributors_.push_back(committer); 68 directory_commit_contributors_.push_back(committer);
63 directory_update_handlers_.push_back(updater); 69 directory_update_handlers_.push_back(updater);
70 directory_type_debug_info_emitters_.push_back(emitter);
64 71
65 bool inserted1 = 72 bool inserted1 =
66 update_handler_map_.insert(std::make_pair(type, updater)).second; 73 update_handler_map_.insert(std::make_pair(type, updater)).second;
67 DCHECK(inserted1) << "Attempt to override existing type handler in map"; 74 DCHECK(inserted1) << "Attempt to override existing type handler in map";
68 75
69 bool inserted2 = 76 bool inserted2 =
70 commit_contributor_map_.insert(std::make_pair(type, committer)).second; 77 commit_contributor_map_.insert(std::make_pair(type, committer)).second;
71 DCHECK(inserted2) << "Attempt to override existing type handler in map"; 78 DCHECK(inserted2) << "Attempt to override existing type handler in map";
79
80 bool inserted3 =
81 directory_type_debug_info_emitter_map_.insert(
82 std::make_pair(type, emitter)).second;
83 DCHECK(inserted3) << "Attempt to override existing type handler in map";
72 } 84 }
73 85
74 enabled_directory_types_ = GetRoutingInfoTypes(routing_info); 86 enabled_directory_types_ = GetRoutingInfoTypes(routing_info);
75 DCHECK(Intersection(GetEnabledDirectoryTypes(), 87 DCHECK(Intersection(GetEnabledDirectoryTypes(),
76 GetEnabledNonBlockingTypes()).Empty()); 88 GetEnabledNonBlockingTypes()).Empty());
77 } 89 }
78 90
79 void ModelTypeRegistry::InitializeNonBlockingType( 91 void ModelTypeRegistry::InitializeNonBlockingType(
80 ModelType type, 92 ModelType type,
81 scoped_refptr<base::SequencedTaskRunner> type_task_runner, 93 scoped_refptr<base::SequencedTaskRunner> type_task_runner,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 } 147 }
136 148
137 UpdateHandlerMap* ModelTypeRegistry::update_handler_map() { 149 UpdateHandlerMap* ModelTypeRegistry::update_handler_map() {
138 return &update_handler_map_; 150 return &update_handler_map_;
139 } 151 }
140 152
141 CommitContributorMap* ModelTypeRegistry::commit_contributor_map() { 153 CommitContributorMap* ModelTypeRegistry::commit_contributor_map() {
142 return &commit_contributor_map_; 154 return &commit_contributor_map_;
143 } 155 }
144 156
157 DirectoryTypeDebugInfoEmitterMap*
158 ModelTypeRegistry::directory_type_debug_info_emitter_map() {
159 return &directory_type_debug_info_emitter_map_;
160 }
161
145 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const { 162 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const {
146 return enabled_directory_types_; 163 return enabled_directory_types_;
147 } 164 }
148 165
149 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const { 166 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const {
150 ModelTypeSet enabled_off_thread_types; 167 ModelTypeSet enabled_off_thread_types;
151 for (ScopedVector<NonBlockingTypeProcessorCore>::const_iterator it = 168 for (ScopedVector<NonBlockingTypeProcessorCore>::const_iterator it =
152 non_blocking_type_processor_cores_.begin(); 169 non_blocking_type_processor_cores_.begin();
153 it != non_blocking_type_processor_cores_.end(); ++it) { 170 it != non_blocking_type_processor_cores_.end(); ++it) {
154 enabled_off_thread_types.Put((*it)->GetModelType()); 171 enabled_off_thread_types.Put((*it)->GetModelType());
155 } 172 }
156 return enabled_off_thread_types; 173 return enabled_off_thread_types;
157 } 174 }
158 175
159 } // namespace syncer 176 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/sessions/model_type_registry.h ('k') | sync/sync_core.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698