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

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

Issue 1285443002: move V2 classes in chrome/engine to syncer_v2 namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « sync/sessions/model_type_registry.h ('k') | sync/sessions/model_type_registry_unittest.cc » ('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/observer_list.h" 8 #include "base/observer_list.h"
9 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "sync/engine/directory_commit_contributor.h" 10 #include "sync/engine/directory_commit_contributor.h"
11 #include "sync/engine/directory_update_handler.h" 11 #include "sync/engine/directory_update_handler.h"
12 #include "sync/engine/model_type_sync_proxy.h" 12 #include "sync/engine/model_type_sync_proxy.h"
13 #include "sync/engine/model_type_sync_proxy_impl.h" 13 #include "sync/engine/model_type_sync_proxy_impl.h"
14 #include "sync/engine/model_type_sync_worker.h" 14 #include "sync/engine/model_type_sync_worker.h"
15 #include "sync/engine/model_type_sync_worker_impl.h" 15 #include "sync/engine/model_type_sync_worker_impl.h"
16 #include "sync/internal_api/public/non_blocking_sync_common.h" 16 #include "sync/internal_api/public/non_blocking_sync_common.h"
17 #include "sync/sessions/directory_type_debug_info_emitter.h" 17 #include "sync/sessions/directory_type_debug_info_emitter.h"
18 #include "sync/util/cryptographer.h" 18 #include "sync/util/cryptographer.h"
19 19
20 namespace syncer { 20 namespace syncer {
21 21
22 namespace { 22 namespace {
23 23
24 class ModelTypeSyncProxyWrapper : public ModelTypeSyncProxy { 24 class ModelTypeSyncProxyWrapper : public syncer_v2::ModelTypeSyncProxy {
25 public: 25 public:
26 ModelTypeSyncProxyWrapper( 26 ModelTypeSyncProxyWrapper(
27 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy, 27 const base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl>& proxy,
28 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner); 28 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner);
29 ~ModelTypeSyncProxyWrapper() override; 29 ~ModelTypeSyncProxyWrapper() override;
30 30
31 void OnCommitCompleted( 31 void OnCommitCompleted(
32 const syncer_v2::DataTypeState& type_state, 32 const syncer_v2::DataTypeState& type_state,
33 const syncer_v2::CommitResponseDataList& response_list) override; 33 const syncer_v2::CommitResponseDataList& response_list) override;
34 void OnUpdateReceived( 34 void OnUpdateReceived(
35 const syncer_v2::DataTypeState& type_state, 35 const syncer_v2::DataTypeState& type_state,
36 const syncer_v2::UpdateResponseDataList& response_list, 36 const syncer_v2::UpdateResponseDataList& response_list,
37 const syncer_v2::UpdateResponseDataList& pending_updates) override; 37 const syncer_v2::UpdateResponseDataList& pending_updates) override;
38 38
39 private: 39 private:
40 base::WeakPtr<ModelTypeSyncProxyImpl> processor_; 40 base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl> processor_;
41 scoped_refptr<base::SequencedTaskRunner> processor_task_runner_; 41 scoped_refptr<base::SequencedTaskRunner> processor_task_runner_;
42 }; 42 };
43 43
44 ModelTypeSyncProxyWrapper::ModelTypeSyncProxyWrapper( 44 ModelTypeSyncProxyWrapper::ModelTypeSyncProxyWrapper(
45 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy, 45 const base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl>& proxy,
46 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner) 46 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner)
47 : processor_(proxy), processor_task_runner_(processor_task_runner) { 47 : processor_(proxy), processor_task_runner_(processor_task_runner) {}
48 }
49 48
50 ModelTypeSyncProxyWrapper::~ModelTypeSyncProxyWrapper() { 49 ModelTypeSyncProxyWrapper::~ModelTypeSyncProxyWrapper() {
51 } 50 }
52 51
53 void ModelTypeSyncProxyWrapper::OnCommitCompleted( 52 void ModelTypeSyncProxyWrapper::OnCommitCompleted(
54 const syncer_v2::DataTypeState& type_state, 53 const syncer_v2::DataTypeState& type_state,
55 const syncer_v2::CommitResponseDataList& response_list) { 54 const syncer_v2::CommitResponseDataList& response_list) {
56 processor_task_runner_->PostTask( 55 processor_task_runner_->PostTask(
57 FROM_HERE, 56 FROM_HERE,
58 base::Bind(&ModelTypeSyncProxyImpl::OnCommitCompleted, 57 base::Bind(&syncer_v2::ModelTypeSyncProxyImpl::OnCommitCompleted,
59 processor_, 58 processor_, type_state, response_list));
60 type_state,
61 response_list));
62 } 59 }
63 60
64 void ModelTypeSyncProxyWrapper::OnUpdateReceived( 61 void ModelTypeSyncProxyWrapper::OnUpdateReceived(
65 const syncer_v2::DataTypeState& type_state, 62 const syncer_v2::DataTypeState& type_state,
66 const syncer_v2::UpdateResponseDataList& response_list, 63 const syncer_v2::UpdateResponseDataList& response_list,
67 const syncer_v2::UpdateResponseDataList& pending_updates) { 64 const syncer_v2::UpdateResponseDataList& pending_updates) {
68 processor_task_runner_->PostTask( 65 processor_task_runner_->PostTask(
69 FROM_HERE, 66 FROM_HERE,
70 base::Bind(&ModelTypeSyncProxyImpl::OnUpdateReceived, 67 base::Bind(&syncer_v2::ModelTypeSyncProxyImpl::OnUpdateReceived,
71 processor_, 68 processor_, type_state, response_list, pending_updates));
72 type_state,
73 response_list,
74 pending_updates));
75 } 69 }
76 70
77 class ModelTypeSyncWorkerWrapper : public ModelTypeSyncWorker { 71 class ModelTypeSyncWorkerWrapper : public syncer_v2::ModelTypeSyncWorker {
78 public: 72 public:
79 ModelTypeSyncWorkerWrapper( 73 ModelTypeSyncWorkerWrapper(
80 const base::WeakPtr<ModelTypeSyncWorkerImpl>& worker, 74 const base::WeakPtr<syncer_v2::ModelTypeSyncWorkerImpl>& worker,
81 const scoped_refptr<base::SequencedTaskRunner>& sync_thread); 75 const scoped_refptr<base::SequencedTaskRunner>& sync_thread);
82 ~ModelTypeSyncWorkerWrapper() override; 76 ~ModelTypeSyncWorkerWrapper() override;
83 77
84 void EnqueueForCommit(const syncer_v2::CommitRequestDataList& list) override; 78 void EnqueueForCommit(const syncer_v2::CommitRequestDataList& list) override;
85 79
86 private: 80 private:
87 base::WeakPtr<ModelTypeSyncWorkerImpl> worker_; 81 base::WeakPtr<syncer_v2::ModelTypeSyncWorkerImpl> worker_;
88 scoped_refptr<base::SequencedTaskRunner> sync_thread_; 82 scoped_refptr<base::SequencedTaskRunner> sync_thread_;
89 }; 83 };
90 84
91 ModelTypeSyncWorkerWrapper::ModelTypeSyncWorkerWrapper( 85 ModelTypeSyncWorkerWrapper::ModelTypeSyncWorkerWrapper(
92 const base::WeakPtr<ModelTypeSyncWorkerImpl>& worker, 86 const base::WeakPtr<syncer_v2::ModelTypeSyncWorkerImpl>& worker,
93 const scoped_refptr<base::SequencedTaskRunner>& sync_thread) 87 const scoped_refptr<base::SequencedTaskRunner>& sync_thread)
94 : worker_(worker), sync_thread_(sync_thread) { 88 : worker_(worker), sync_thread_(sync_thread) {}
95 }
96 89
97 ModelTypeSyncWorkerWrapper::~ModelTypeSyncWorkerWrapper() { 90 ModelTypeSyncWorkerWrapper::~ModelTypeSyncWorkerWrapper() {
98 } 91 }
99 92
100 void ModelTypeSyncWorkerWrapper::EnqueueForCommit( 93 void ModelTypeSyncWorkerWrapper::EnqueueForCommit(
101 const syncer_v2::CommitRequestDataList& list) { 94 const syncer_v2::CommitRequestDataList& list) {
102 sync_thread_->PostTask( 95 sync_thread_->PostTask(
103 FROM_HERE, 96 FROM_HERE,
104 base::Bind(&ModelTypeSyncWorkerImpl::EnqueueForCommit, worker_, list)); 97 base::Bind(&syncer_v2::ModelTypeSyncWorkerImpl::EnqueueForCommit, worker_,
98 list));
105 } 99 }
106 100
107 } // namespace 101 } // namespace
108 102
109 ModelTypeRegistry::ModelTypeRegistry( 103 ModelTypeRegistry::ModelTypeRegistry(
110 const std::vector<scoped_refptr<ModelSafeWorker> >& workers, 104 const std::vector<scoped_refptr<ModelSafeWorker> >& workers,
111 syncable::Directory* directory, 105 syncable::Directory* directory,
112 NudgeHandler* nudge_handler) 106 NudgeHandler* nudge_handler)
113 : directory_(directory), 107 : directory_(directory),
114 nudge_handler_(nudge_handler), 108 nudge_handler_(nudge_handler),
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 enabled_directory_types_ = GetRoutingInfoTypes(routing_info); 179 enabled_directory_types_ = GetRoutingInfoTypes(routing_info);
186 DCHECK(Intersection(GetEnabledDirectoryTypes(), 180 DCHECK(Intersection(GetEnabledDirectoryTypes(),
187 GetEnabledNonBlockingTypes()).Empty()); 181 GetEnabledNonBlockingTypes()).Empty());
188 } 182 }
189 183
190 void ModelTypeRegistry::ConnectSyncTypeToWorker( 184 void ModelTypeRegistry::ConnectSyncTypeToWorker(
191 ModelType type, 185 ModelType type,
192 const syncer_v2::DataTypeState& data_type_state, 186 const syncer_v2::DataTypeState& data_type_state,
193 const syncer_v2::UpdateResponseDataList& saved_pending_updates, 187 const syncer_v2::UpdateResponseDataList& saved_pending_updates,
194 const scoped_refptr<base::SequencedTaskRunner>& type_task_runner, 188 const scoped_refptr<base::SequencedTaskRunner>& type_task_runner,
195 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy_impl) { 189 const base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl>& proxy_impl) {
196 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type); 190 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type);
197 191
198 // Initialize Worker -> Proxy communication channel. 192 // Initialize Worker -> Proxy communication channel.
199 scoped_ptr<ModelTypeSyncProxy> proxy( 193 scoped_ptr<syncer_v2::ModelTypeSyncProxy> proxy(
200 new ModelTypeSyncProxyWrapper(proxy_impl, type_task_runner)); 194 new ModelTypeSyncProxyWrapper(proxy_impl, type_task_runner));
201 scoped_ptr<Cryptographer> cryptographer_copy; 195 scoped_ptr<Cryptographer> cryptographer_copy;
202 if (encrypted_types_.Has(type)) 196 if (encrypted_types_.Has(type))
203 cryptographer_copy.reset(new Cryptographer(*cryptographer_)); 197 cryptographer_copy.reset(new Cryptographer(*cryptographer_));
204 198
205 scoped_ptr<ModelTypeSyncWorkerImpl> worker( 199 scoped_ptr<syncer_v2::ModelTypeSyncWorkerImpl> worker(
206 new ModelTypeSyncWorkerImpl(type, 200 new syncer_v2::ModelTypeSyncWorkerImpl(
207 data_type_state, 201 type, data_type_state, saved_pending_updates,
208 saved_pending_updates, 202 cryptographer_copy.Pass(), nudge_handler_, proxy.Pass()));
209 cryptographer_copy.Pass(),
210 nudge_handler_,
211 proxy.Pass()));
212 203
213 // Initialize Proxy -> Worker communication channel. 204 // Initialize Proxy -> Worker communication channel.
214 scoped_ptr<ModelTypeSyncWorker> wrapped_worker( 205 scoped_ptr<syncer_v2::ModelTypeSyncWorker> wrapped_worker(
215 new ModelTypeSyncWorkerWrapper(worker->AsWeakPtr(), 206 new ModelTypeSyncWorkerWrapper(worker->AsWeakPtr(),
216 scoped_refptr<base::SequencedTaskRunner>( 207 scoped_refptr<base::SequencedTaskRunner>(
217 base::ThreadTaskRunnerHandle::Get()))); 208 base::ThreadTaskRunnerHandle::Get())));
218 type_task_runner->PostTask(FROM_HERE, 209 type_task_runner->PostTask(
219 base::Bind(&ModelTypeSyncProxyImpl::OnConnect, 210 FROM_HERE, base::Bind(&syncer_v2::ModelTypeSyncProxyImpl::OnConnect,
220 proxy_impl, 211 proxy_impl, base::Passed(&wrapped_worker)));
221 base::Passed(&wrapped_worker)));
222 212
223 DCHECK(update_handler_map_.find(type) == update_handler_map_.end()); 213 DCHECK(update_handler_map_.find(type) == update_handler_map_.end());
224 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end()); 214 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end());
225 215
226 update_handler_map_.insert(std::make_pair(type, worker.get())); 216 update_handler_map_.insert(std::make_pair(type, worker.get()));
227 commit_contributor_map_.insert(std::make_pair(type, worker.get())); 217 commit_contributor_map_.insert(std::make_pair(type, worker.get()));
228 218
229 // The container takes ownership. 219 // The container takes ownership.
230 model_type_sync_workers_.push_back(worker.Pass()); 220 model_type_sync_workers_.push_back(worker.Pass());
231 221
232 DCHECK(Intersection(GetEnabledDirectoryTypes(), 222 DCHECK(Intersection(GetEnabledDirectoryTypes(),
233 GetEnabledNonBlockingTypes()).Empty()); 223 GetEnabledNonBlockingTypes()).Empty());
234 } 224 }
235 225
236 void ModelTypeRegistry::DisconnectSyncWorker(ModelType type) { 226 void ModelTypeRegistry::DisconnectSyncWorker(ModelType type) {
237 DVLOG(1) << "Disabling an off-thread sync type: " << ModelTypeToString(type); 227 DVLOG(1) << "Disabling an off-thread sync type: " << ModelTypeToString(type);
238 DCHECK(update_handler_map_.find(type) != update_handler_map_.end()); 228 DCHECK(update_handler_map_.find(type) != update_handler_map_.end());
239 DCHECK(commit_contributor_map_.find(type) != commit_contributor_map_.end()); 229 DCHECK(commit_contributor_map_.find(type) != commit_contributor_map_.end());
240 230
241 size_t updaters_erased = update_handler_map_.erase(type); 231 size_t updaters_erased = update_handler_map_.erase(type);
242 size_t committers_erased = commit_contributor_map_.erase(type); 232 size_t committers_erased = commit_contributor_map_.erase(type);
243 233
244 DCHECK_EQ(1U, updaters_erased); 234 DCHECK_EQ(1U, updaters_erased);
245 DCHECK_EQ(1U, committers_erased); 235 DCHECK_EQ(1U, committers_erased);
246 236
247 // Remove from the ScopedVector, deleting the worker in the process. 237 // Remove from the ScopedVector, deleting the worker in the process.
248 for (ScopedVector<ModelTypeSyncWorkerImpl>::iterator it = 238 for (ScopedVector<syncer_v2::ModelTypeSyncWorkerImpl>::iterator it =
249 model_type_sync_workers_.begin(); 239 model_type_sync_workers_.begin();
250 it != model_type_sync_workers_.end(); 240 it != model_type_sync_workers_.end(); ++it) {
251 ++it) {
252 if ((*it)->GetModelType() == type) { 241 if ((*it)->GetModelType() == type) {
253 model_type_sync_workers_.erase(it); 242 model_type_sync_workers_.erase(it);
254 break; 243 break;
255 } 244 }
256 } 245 }
257 } 246 }
258 247
259 ModelTypeSet ModelTypeRegistry::GetEnabledTypes() const { 248 ModelTypeSet ModelTypeRegistry::GetEnabledTypes() const {
260 return Union(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes()); 249 return Union(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes());
261 } 250 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 326
338 void ModelTypeRegistry::OnLocalSetPassphraseEncryption( 327 void ModelTypeRegistry::OnLocalSetPassphraseEncryption(
339 const SyncEncryptionHandler::NigoriState& nigori_state) { 328 const SyncEncryptionHandler::NigoriState& nigori_state) {
340 } 329 }
341 330
342 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const { 331 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const {
343 return enabled_directory_types_; 332 return enabled_directory_types_;
344 } 333 }
345 334
346 void ModelTypeRegistry::OnEncryptionStateChanged() { 335 void ModelTypeRegistry::OnEncryptionStateChanged() {
347 for (ScopedVector<ModelTypeSyncWorkerImpl>::iterator it = 336 for (ScopedVector<syncer_v2::ModelTypeSyncWorkerImpl>::iterator it =
348 model_type_sync_workers_.begin(); 337 model_type_sync_workers_.begin();
349 it != model_type_sync_workers_.end(); 338 it != model_type_sync_workers_.end(); ++it) {
350 ++it) {
351 if (encrypted_types_.Has((*it)->GetModelType())) { 339 if (encrypted_types_.Has((*it)->GetModelType())) {
352 (*it)->UpdateCryptographer( 340 (*it)->UpdateCryptographer(
353 make_scoped_ptr(new Cryptographer(*cryptographer_))); 341 make_scoped_ptr(new Cryptographer(*cryptographer_)));
354 } 342 }
355 } 343 }
356 } 344 }
357 345
358 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const { 346 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const {
359 ModelTypeSet enabled_off_thread_types; 347 ModelTypeSet enabled_off_thread_types;
360 for (ScopedVector<ModelTypeSyncWorkerImpl>::const_iterator it = 348 for (ScopedVector<syncer_v2::ModelTypeSyncWorkerImpl>::const_iterator it =
361 model_type_sync_workers_.begin(); 349 model_type_sync_workers_.begin();
362 it != model_type_sync_workers_.end(); 350 it != model_type_sync_workers_.end(); ++it) {
363 ++it) {
364 enabled_off_thread_types.Put((*it)->GetModelType()); 351 enabled_off_thread_types.Put((*it)->GetModelType());
365 } 352 }
366 return enabled_off_thread_types; 353 return enabled_off_thread_types;
367 } 354 }
368 355
369 } // namespace syncer 356 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/sessions/model_type_registry.h ('k') | sync/sessions/model_type_registry_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698