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

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

Issue 452283003: sync: Finish non-blocking type encryption support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
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"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 base::Bind(&ModelTypeSyncWorkerImpl::EnqueueForCommit, worker_, list)); 104 base::Bind(&ModelTypeSyncWorkerImpl::EnqueueForCommit, worker_, list));
105 } 105 }
106 106
107 } // namespace 107 } // namespace
108 108
109 ModelTypeRegistry::ModelTypeRegistry( 109 ModelTypeRegistry::ModelTypeRegistry(
110 const std::vector<scoped_refptr<ModelSafeWorker> >& workers, 110 const std::vector<scoped_refptr<ModelSafeWorker> >& workers,
111 syncable::Directory* directory, 111 syncable::Directory* directory,
112 NudgeHandler* nudge_handler) 112 NudgeHandler* nudge_handler)
113 : directory_(directory), 113 : directory_(directory),
114 cryptographer_provider_(directory_),
115 nudge_handler_(nudge_handler), 114 nudge_handler_(nudge_handler),
116 weak_ptr_factory_(this) { 115 weak_ptr_factory_(this) {
117 for (size_t i = 0u; i < workers.size(); ++i) { 116 for (size_t i = 0u; i < workers.size(); ++i) {
118 workers_map_.insert( 117 workers_map_.insert(
119 std::make_pair(workers[i]->GetModelSafeGroup(), workers[i])); 118 std::make_pair(workers[i]->GetModelSafeGroup(), workers[i]));
120 } 119 }
121 } 120 }
122 121
123 ModelTypeRegistry::~ModelTypeRegistry() {} 122 ModelTypeRegistry::~ModelTypeRegistry() {
123 }
124 124
125 void ModelTypeRegistry::SetEnabledDirectoryTypes( 125 void ModelTypeRegistry::SetEnabledDirectoryTypes(
126 const ModelSafeRoutingInfo& routing_info) { 126 const ModelSafeRoutingInfo& routing_info) {
127 // Remove all existing directory processors and delete them. The 127 // Remove all existing directory processors and delete them. The
128 // DebugInfoEmitters are not deleted here, since we want to preserve their 128 // DebugInfoEmitters are not deleted here, since we want to preserve their
129 // counters. 129 // counters.
130 for (ModelTypeSet::Iterator it = enabled_directory_types_.First(); 130 for (ModelTypeSet::Iterator it = enabled_directory_types_.First();
131 it.Good(); it.Inc()) { 131 it.Good(); it.Inc()) {
132 size_t result1 = update_handler_map_.erase(it.Get()); 132 size_t result1 = update_handler_map_.erase(it.Get());
133 size_t result2 = commit_contributor_map_.erase(it.Get()); 133 size_t result2 = commit_contributor_map_.erase(it.Get());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 ModelType type, 191 ModelType type,
192 const DataTypeState& data_type_state, 192 const DataTypeState& data_type_state,
193 const UpdateResponseDataList& saved_pending_updates, 193 const UpdateResponseDataList& saved_pending_updates,
194 const scoped_refptr<base::SequencedTaskRunner>& type_task_runner, 194 const scoped_refptr<base::SequencedTaskRunner>& type_task_runner,
195 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy_impl) { 195 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy_impl) {
196 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type); 196 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type);
197 197
198 // Initialize Worker -> Proxy communication channel. 198 // Initialize Worker -> Proxy communication channel.
199 scoped_ptr<ModelTypeSyncProxy> proxy( 199 scoped_ptr<ModelTypeSyncProxy> proxy(
200 new ModelTypeSyncProxyWrapper(proxy_impl, type_task_runner)); 200 new ModelTypeSyncProxyWrapper(proxy_impl, type_task_runner));
201 scoped_ptr<Cryptographer> cryptographer_copy;
202 if (encrypted_types_.Has(type))
203 cryptographer_copy.reset(new Cryptographer(*cryptographer_));
204
201 scoped_ptr<ModelTypeSyncWorkerImpl> worker( 205 scoped_ptr<ModelTypeSyncWorkerImpl> worker(
202 new ModelTypeSyncWorkerImpl(type, 206 new ModelTypeSyncWorkerImpl(type,
203 data_type_state, 207 data_type_state,
204 saved_pending_updates, 208 saved_pending_updates,
205 &cryptographer_provider_, 209 cryptographer_copy.Pass(),
206 nudge_handler_, 210 nudge_handler_,
207 proxy.Pass())); 211 proxy.Pass()));
208 212
209 // Initialize Proxy -> Worker communication channel. 213 // Initialize Proxy -> Worker communication channel.
210 scoped_ptr<ModelTypeSyncWorker> wrapped_worker( 214 scoped_ptr<ModelTypeSyncWorker> wrapped_worker(
211 new ModelTypeSyncWorkerWrapper(worker->AsWeakPtr(), 215 new ModelTypeSyncWorkerWrapper(worker->AsWeakPtr(),
212 scoped_refptr<base::SequencedTaskRunner>( 216 scoped_refptr<base::SequencedTaskRunner>(
213 base::ThreadTaskRunnerHandle::Get()))); 217 base::ThreadTaskRunnerHandle::Get())));
214 type_task_runner->PostTask(FROM_HERE, 218 type_task_runner->PostTask(FROM_HERE,
215 base::Bind(&ModelTypeSyncProxyImpl::OnConnect, 219 base::Bind(&ModelTypeSyncProxyImpl::OnConnect,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 it->second->EmitCommitCountersUpdate(); 296 it->second->EmitCommitCountersUpdate();
293 it->second->EmitUpdateCountersUpdate(); 297 it->second->EmitUpdateCountersUpdate();
294 it->second->EmitStatusCountersUpdate(); 298 it->second->EmitStatusCountersUpdate();
295 } 299 }
296 } 300 }
297 301
298 base::WeakPtr<SyncContext> ModelTypeRegistry::AsWeakPtr() { 302 base::WeakPtr<SyncContext> ModelTypeRegistry::AsWeakPtr() {
299 return weak_ptr_factory_.GetWeakPtr(); 303 return weak_ptr_factory_.GetWeakPtr();
300 } 304 }
301 305
306 void ModelTypeRegistry::OnPassphraseRequired(
307 PassphraseRequiredReason reason,
308 const sync_pb::EncryptedData& pending_keys) {
309 }
310
311 void ModelTypeRegistry::OnPassphraseAccepted() {
312 }
313
314 void ModelTypeRegistry::OnBootstrapTokenUpdated(
315 const std::string& bootstrap_token,
316 BootstrapTokenType type) {
317 }
318
319 void ModelTypeRegistry::OnEncryptedTypesChanged(ModelTypeSet encrypted_types,
320 bool encrypt_everything) {
321 VLOG(1) << "MTR: OnEncryptedTypesChanged";
322 encrypted_types_ = encrypted_types;
323 OnEncryptionStateChanged();
324 }
325
326 void ModelTypeRegistry::OnEncryptionComplete() {
327 }
328
329 void ModelTypeRegistry::OnCryptographerStateChanged(
330 Cryptographer* cryptographer) {
331 VLOG(1) << "MTR: OnCryptographerStateChanged";
332 cryptographer_.reset(new Cryptographer(*cryptographer));
333 OnEncryptionStateChanged();
334 }
335
336 void ModelTypeRegistry::OnPassphraseTypeChanged(PassphraseType type,
337 base::Time passphrase_time) {
338 }
339
302 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const { 340 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const {
303 return enabled_directory_types_; 341 return enabled_directory_types_;
304 } 342 }
305 343
344 void ModelTypeRegistry::OnEncryptionStateChanged() {
345 VLOG(1) << "MTR: OnEncryptionStateChanged";
346 for (ScopedVector<ModelTypeSyncWorkerImpl>::iterator it =
347 model_type_sync_workers_.begin();
348 it != model_type_sync_workers_.end();
349 ++it) {
350 if (encrypted_types_.Has((*it)->GetModelType())) {
351 (*it)->UpdateCryptographer(
352 make_scoped_ptr<Cryptographer>(new Cryptographer(*cryptographer_)));
stanisc 2014/08/11 21:05:42 I think the "<Cryptographer>" part is redundant.
rlarocque 2014/08/11 21:50:22 You're right. Fixed.
353 }
354 }
355 }
356
306 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const { 357 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const {
307 ModelTypeSet enabled_off_thread_types; 358 ModelTypeSet enabled_off_thread_types;
308 for (ScopedVector<ModelTypeSyncWorkerImpl>::const_iterator it = 359 for (ScopedVector<ModelTypeSyncWorkerImpl>::const_iterator it =
309 model_type_sync_workers_.begin(); 360 model_type_sync_workers_.begin();
310 it != model_type_sync_workers_.end(); 361 it != model_type_sync_workers_.end();
311 ++it) { 362 ++it) {
312 enabled_off_thread_types.Put((*it)->GetModelType()); 363 enabled_off_thread_types.Put((*it)->GetModelType());
313 } 364 }
314 return enabled_off_thread_types; 365 return enabled_off_thread_types;
315 } 366 }
316 367
317 } // namespace syncer 368 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698