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

Side by Side Diff: components/sync/engine_impl/model_type_registry.cc

Issue 2376123003: [Sync] Move //components/sync to the syncer namespace. (Closed)
Patch Set: Rebase. Created 4 years, 2 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
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 "components/sync/engine_impl/model_type_registry.h" 5 #include "components/sync/engine_impl/model_type_registry.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/observer_list.h" 13 #include "base/observer_list.h"
14 #include "base/threading/thread_task_runner_handle.h" 14 #include "base/threading/thread_task_runner_handle.h"
15 #include "components/sync/base/cryptographer.h" 15 #include "components/sync/base/cryptographer.h"
16 #include "components/sync/core/activation_context.h" 16 #include "components/sync/core/activation_context.h"
17 #include "components/sync/core/model_type_processor.h" 17 #include "components/sync/core/model_type_processor.h"
18 #include "components/sync/engine/commit_queue.h" 18 #include "components/sync/engine/commit_queue.h"
19 #include "components/sync/engine_impl/cycle/directory_type_debug_info_emitter.h" 19 #include "components/sync/engine_impl/cycle/directory_type_debug_info_emitter.h"
20 #include "components/sync/engine_impl/directory_commit_contributor.h" 20 #include "components/sync/engine_impl/directory_commit_contributor.h"
21 #include "components/sync/engine_impl/directory_update_handler.h" 21 #include "components/sync/engine_impl/directory_update_handler.h"
22 #include "components/sync/engine_impl/model_type_worker.h" 22 #include "components/sync/engine_impl/model_type_worker.h"
23 23
24 namespace syncer { 24 namespace syncer {
25 25
26 namespace { 26 namespace {
27 27
28 class CommitQueueProxy : public syncer_v2::CommitQueue { 28 class CommitQueueProxy : public CommitQueue {
29 public: 29 public:
30 CommitQueueProxy(const base::WeakPtr<syncer_v2::ModelTypeWorker>& worker, 30 CommitQueueProxy(const base::WeakPtr<ModelTypeWorker>& worker,
31 const scoped_refptr<base::SequencedTaskRunner>& sync_thread); 31 const scoped_refptr<base::SequencedTaskRunner>& sync_thread);
32 ~CommitQueueProxy() override; 32 ~CommitQueueProxy() override;
33 33
34 void EnqueueForCommit(const syncer_v2::CommitRequestDataList& list) override; 34 void EnqueueForCommit(const CommitRequestDataList& list) override;
35 35
36 private: 36 private:
37 base::WeakPtr<syncer_v2::ModelTypeWorker> worker_; 37 base::WeakPtr<ModelTypeWorker> worker_;
38 scoped_refptr<base::SequencedTaskRunner> sync_thread_; 38 scoped_refptr<base::SequencedTaskRunner> sync_thread_;
39 }; 39 };
40 40
41 CommitQueueProxy::CommitQueueProxy( 41 CommitQueueProxy::CommitQueueProxy(
42 const base::WeakPtr<syncer_v2::ModelTypeWorker>& worker, 42 const base::WeakPtr<ModelTypeWorker>& worker,
43 const scoped_refptr<base::SequencedTaskRunner>& sync_thread) 43 const scoped_refptr<base::SequencedTaskRunner>& sync_thread)
44 : worker_(worker), sync_thread_(sync_thread) {} 44 : worker_(worker), sync_thread_(sync_thread) {}
45 45
46 CommitQueueProxy::~CommitQueueProxy() {} 46 CommitQueueProxy::~CommitQueueProxy() {}
47 47
48 void CommitQueueProxy::EnqueueForCommit( 48 void CommitQueueProxy::EnqueueForCommit(const CommitRequestDataList& list) {
49 const syncer_v2::CommitRequestDataList& list) {
50 sync_thread_->PostTask( 49 sync_thread_->PostTask(
51 FROM_HERE, 50 FROM_HERE, base::Bind(&ModelTypeWorker::EnqueueForCommit, worker_, list));
52 base::Bind(&syncer_v2::ModelTypeWorker::EnqueueForCommit, worker_, list));
53 } 51 }
54 52
55 } // namespace 53 } // namespace
56 54
57 ModelTypeRegistry::ModelTypeRegistry( 55 ModelTypeRegistry::ModelTypeRegistry(
58 const std::vector<scoped_refptr<ModelSafeWorker>>& workers, 56 const std::vector<scoped_refptr<ModelSafeWorker>>& workers,
59 syncable::Directory* directory, 57 syncable::Directory* directory,
60 NudgeHandler* nudge_handler) 58 NudgeHandler* nudge_handler)
61 : directory_(directory), 59 : directory_(directory),
62 nudge_handler_(nudge_handler), 60 nudge_handler_(nudge_handler),
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 DCHECK(inserted2) << "Attempt to override existing type handler in map"; 131 DCHECK(inserted2) << "Attempt to override existing type handler in map";
134 enabled_directory_types_.Put(type); 132 enabled_directory_types_.Put(type);
135 } 133 }
136 134
137 DCHECK(Intersection(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes()) 135 DCHECK(Intersection(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes())
138 .Empty()); 136 .Empty());
139 } 137 }
140 138
141 void ModelTypeRegistry::ConnectType( 139 void ModelTypeRegistry::ConnectType(
142 ModelType type, 140 ModelType type,
143 std::unique_ptr<syncer_v2::ActivationContext> activation_context) { 141 std::unique_ptr<ActivationContext> activation_context) {
144 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type); 142 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type);
145 143
146 // Initialize Worker -> Processor communication channel. 144 // Initialize Worker -> Processor communication channel.
147 syncer_v2::ModelTypeProcessor* type_processor = 145 ModelTypeProcessor* type_processor = activation_context->type_processor.get();
148 activation_context->type_processor.get();
149 146
150 std::unique_ptr<Cryptographer> cryptographer_copy; 147 std::unique_ptr<Cryptographer> cryptographer_copy;
151 if (encrypted_types_.Has(type)) 148 if (encrypted_types_.Has(type))
152 cryptographer_copy.reset(new Cryptographer(*cryptographer_)); 149 cryptographer_copy.reset(new Cryptographer(*cryptographer_));
153 150
154 std::unique_ptr<syncer_v2::ModelTypeWorker> worker( 151 std::unique_ptr<ModelTypeWorker> worker(new ModelTypeWorker(
155 new syncer_v2::ModelTypeWorker( 152 type, activation_context->data_type_state, std::move(cryptographer_copy),
156 type, activation_context->data_type_state, 153 nudge_handler_, std::move(activation_context->type_processor)));
157 std::move(cryptographer_copy), nudge_handler_,
158 std::move(activation_context->type_processor)));
159 154
160 // Initialize Processor -> Worker communication channel. 155 // Initialize Processor -> Worker communication channel.
161 std::unique_ptr<syncer_v2::CommitQueue> commit_queue_proxy( 156 std::unique_ptr<CommitQueue> commit_queue_proxy(new CommitQueueProxy(
162 new CommitQueueProxy(worker->AsWeakPtr(), 157 worker->AsWeakPtr(), scoped_refptr<base::SequencedTaskRunner>(
163 scoped_refptr<base::SequencedTaskRunner>(
164 base::ThreadTaskRunnerHandle::Get()))); 158 base::ThreadTaskRunnerHandle::Get())));
165 159
166 type_processor->ConnectSync(std::move(commit_queue_proxy)); 160 type_processor->ConnectSync(std::move(commit_queue_proxy));
167 161
168 DCHECK(update_handler_map_.find(type) == update_handler_map_.end()); 162 DCHECK(update_handler_map_.find(type) == update_handler_map_.end());
169 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end()); 163 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end());
170 164
171 update_handler_map_.insert(std::make_pair(type, worker.get())); 165 update_handler_map_.insert(std::make_pair(type, worker.get()));
172 commit_contributor_map_.insert(std::make_pair(type, worker.get())); 166 commit_contributor_map_.insert(std::make_pair(type, worker.get()));
173 167
174 // The container takes ownership. 168 // The container takes ownership.
175 model_type_workers_.push_back(std::move(worker)); 169 model_type_workers_.push_back(std::move(worker));
176 170
177 DCHECK(Intersection(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes()) 171 DCHECK(Intersection(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes())
178 .Empty()); 172 .Empty());
179 } 173 }
180 174
181 void ModelTypeRegistry::DisconnectType(ModelType type) { 175 void ModelTypeRegistry::DisconnectType(ModelType type) {
182 DVLOG(1) << "Disabling an off-thread sync type: " << ModelTypeToString(type); 176 DVLOG(1) << "Disabling an off-thread sync type: " << ModelTypeToString(type);
183 DCHECK(update_handler_map_.find(type) != update_handler_map_.end()); 177 DCHECK(update_handler_map_.find(type) != update_handler_map_.end());
184 DCHECK(commit_contributor_map_.find(type) != commit_contributor_map_.end()); 178 DCHECK(commit_contributor_map_.find(type) != commit_contributor_map_.end());
185 179
186 size_t updaters_erased = update_handler_map_.erase(type); 180 size_t updaters_erased = update_handler_map_.erase(type);
187 size_t committers_erased = commit_contributor_map_.erase(type); 181 size_t committers_erased = commit_contributor_map_.erase(type);
188 182
189 DCHECK_EQ(1U, updaters_erased); 183 DCHECK_EQ(1U, updaters_erased);
190 DCHECK_EQ(1U, committers_erased); 184 DCHECK_EQ(1U, committers_erased);
191 185
192 // Remove from the ScopedVector, deleting the worker in the process. 186 // Remove from the ScopedVector, deleting the worker in the process.
193 for (ScopedVector<syncer_v2::ModelTypeWorker>::iterator it = 187 for (ScopedVector<ModelTypeWorker>::iterator it = model_type_workers_.begin();
194 model_type_workers_.begin();
195 it != model_type_workers_.end(); ++it) { 188 it != model_type_workers_.end(); ++it) {
196 if ((*it)->GetModelType() == type) { 189 if ((*it)->GetModelType() == type) {
197 model_type_workers_.erase(it); 190 model_type_workers_.erase(it);
198 break; 191 break;
199 } 192 }
200 } 193 }
201 } 194 }
202 195
203 ModelTypeSet ModelTypeRegistry::GetEnabledTypes() const { 196 ModelTypeSet ModelTypeRegistry::GetEnabledTypes() const {
204 return Union(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes()); 197 return Union(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes());
(...skipping 22 matching lines...) Expand all
227 CommitContributorMap* ModelTypeRegistry::commit_contributor_map() { 220 CommitContributorMap* ModelTypeRegistry::commit_contributor_map() {
228 return &commit_contributor_map_; 221 return &commit_contributor_map_;
229 } 222 }
230 223
231 DirectoryTypeDebugInfoEmitterMap* 224 DirectoryTypeDebugInfoEmitterMap*
232 ModelTypeRegistry::directory_type_debug_info_emitter_map() { 225 ModelTypeRegistry::directory_type_debug_info_emitter_map() {
233 return &directory_type_debug_info_emitter_map_; 226 return &directory_type_debug_info_emitter_map_;
234 } 227 }
235 228
236 void ModelTypeRegistry::RegisterDirectoryTypeDebugInfoObserver( 229 void ModelTypeRegistry::RegisterDirectoryTypeDebugInfoObserver(
237 syncer::TypeDebugInfoObserver* observer) { 230 TypeDebugInfoObserver* observer) {
238 if (!type_debug_info_observers_.HasObserver(observer)) 231 if (!type_debug_info_observers_.HasObserver(observer))
239 type_debug_info_observers_.AddObserver(observer); 232 type_debug_info_observers_.AddObserver(observer);
240 } 233 }
241 234
242 void ModelTypeRegistry::UnregisterDirectoryTypeDebugInfoObserver( 235 void ModelTypeRegistry::UnregisterDirectoryTypeDebugInfoObserver(
243 syncer::TypeDebugInfoObserver* observer) { 236 TypeDebugInfoObserver* observer) {
244 type_debug_info_observers_.RemoveObserver(observer); 237 type_debug_info_observers_.RemoveObserver(observer);
245 } 238 }
246 239
247 bool ModelTypeRegistry::HasDirectoryTypeDebugInfoObserver( 240 bool ModelTypeRegistry::HasDirectoryTypeDebugInfoObserver(
248 const syncer::TypeDebugInfoObserver* observer) const { 241 const TypeDebugInfoObserver* observer) const {
249 return type_debug_info_observers_.HasObserver(observer); 242 return type_debug_info_observers_.HasObserver(observer);
250 } 243 }
251 244
252 void ModelTypeRegistry::RequestEmitDebugInfo() { 245 void ModelTypeRegistry::RequestEmitDebugInfo() {
253 for (DirectoryTypeDebugInfoEmitterMap::iterator it = 246 for (DirectoryTypeDebugInfoEmitterMap::iterator it =
254 directory_type_debug_info_emitter_map_.begin(); 247 directory_type_debug_info_emitter_map_.begin();
255 it != directory_type_debug_info_emitter_map_.end(); ++it) { 248 it != directory_type_debug_info_emitter_map_.end(); ++it) {
256 it->second->EmitCommitCountersUpdate(); 249 it->second->EmitCommitCountersUpdate();
257 it->second->EmitUpdateCountersUpdate(); 250 it->second->EmitUpdateCountersUpdate();
258 it->second->EmitStatusCountersUpdate(); 251 it->second->EmitStatusCountersUpdate();
259 } 252 }
260 } 253 }
261 254
262 base::WeakPtr<syncer_v2::ModelTypeConnector> ModelTypeRegistry::AsWeakPtr() { 255 base::WeakPtr<ModelTypeConnector> ModelTypeRegistry::AsWeakPtr() {
263 return weak_ptr_factory_.GetWeakPtr(); 256 return weak_ptr_factory_.GetWeakPtr();
264 } 257 }
265 258
266 void ModelTypeRegistry::OnPassphraseRequired( 259 void ModelTypeRegistry::OnPassphraseRequired(
267 PassphraseRequiredReason reason, 260 PassphraseRequiredReason reason,
268 const sync_pb::EncryptedData& pending_keys) {} 261 const sync_pb::EncryptedData& pending_keys) {}
269 262
270 void ModelTypeRegistry::OnPassphraseAccepted() {} 263 void ModelTypeRegistry::OnPassphraseAccepted() {}
271 264
272 void ModelTypeRegistry::OnBootstrapTokenUpdated( 265 void ModelTypeRegistry::OnBootstrapTokenUpdated(
(...skipping 18 matching lines...) Expand all
291 base::Time passphrase_time) {} 284 base::Time passphrase_time) {}
292 285
293 void ModelTypeRegistry::OnLocalSetPassphraseEncryption( 286 void ModelTypeRegistry::OnLocalSetPassphraseEncryption(
294 const SyncEncryptionHandler::NigoriState& nigori_state) {} 287 const SyncEncryptionHandler::NigoriState& nigori_state) {}
295 288
296 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const { 289 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const {
297 return enabled_directory_types_; 290 return enabled_directory_types_;
298 } 291 }
299 292
300 void ModelTypeRegistry::OnEncryptionStateChanged() { 293 void ModelTypeRegistry::OnEncryptionStateChanged() {
301 for (ScopedVector<syncer_v2::ModelTypeWorker>::iterator it = 294 for (ScopedVector<ModelTypeWorker>::iterator it = model_type_workers_.begin();
302 model_type_workers_.begin();
303 it != model_type_workers_.end(); ++it) { 295 it != model_type_workers_.end(); ++it) {
304 if (encrypted_types_.Has((*it)->GetModelType())) { 296 if (encrypted_types_.Has((*it)->GetModelType())) {
305 (*it)->UpdateCryptographer( 297 (*it)->UpdateCryptographer(
306 base::MakeUnique<Cryptographer>(*cryptographer_)); 298 base::MakeUnique<Cryptographer>(*cryptographer_));
307 } 299 }
308 } 300 }
309 } 301 }
310 302
311 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const { 303 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const {
312 ModelTypeSet enabled_non_blocking_types; 304 ModelTypeSet enabled_non_blocking_types;
313 for (ScopedVector<syncer_v2::ModelTypeWorker>::const_iterator it = 305 for (ScopedVector<ModelTypeWorker>::const_iterator it =
314 model_type_workers_.begin(); 306 model_type_workers_.begin();
315 it != model_type_workers_.end(); ++it) { 307 it != model_type_workers_.end(); ++it) {
316 enabled_non_blocking_types.Put((*it)->GetModelType()); 308 enabled_non_blocking_types.Put((*it)->GetModelType());
317 } 309 }
318 return enabled_non_blocking_types; 310 return enabled_non_blocking_types;
319 } 311 }
320 312
321 } // namespace syncer 313 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/engine_impl/model_type_registry.h ('k') | components/sync/engine_impl/model_type_registry_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698