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

Side by Side Diff: components/sync/driver/glue/sync_backend_registrar.cc

Issue 2481313002: [Sync] Move sync thread ownership to ProfileSyncService. (Closed)
Patch Set: Address comments. Created 4 years, 1 month 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/driver/glue/sync_backend_registrar.h" 5 #include "components/sync/driver/glue/sync_backend_registrar.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstddef> 8 #include <cstddef>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "components/sync/driver/change_processor.h" 13 #include "components/sync/driver/change_processor.h"
14 #include "components/sync/driver/sync_client.h" 14 #include "components/sync/driver/sync_client.h"
15 #include "components/sync/syncable/user_share.h" 15 #include "components/sync/syncable/user_share.h"
16 16
17 namespace syncer { 17 namespace syncer {
18 18
19 SyncBackendRegistrar::SyncBackendRegistrar( 19 SyncBackendRegistrar::SyncBackendRegistrar(
20 const std::string& name, 20 const std::string& name,
21 SyncClient* sync_client, 21 SyncClient* sync_client,
22 std::unique_ptr<base::Thread> sync_thread,
23 const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread, 22 const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread,
24 const scoped_refptr<base::SingleThreadTaskRunner>& db_thread, 23 const scoped_refptr<base::SingleThreadTaskRunner>& db_thread,
25 const scoped_refptr<base::SingleThreadTaskRunner>& file_thread) 24 const scoped_refptr<base::SingleThreadTaskRunner>& file_thread)
26 : name_(name), 25 : name_(name),
27 sync_client_(sync_client), 26 sync_client_(sync_client),
28 ui_thread_(ui_thread), 27 ui_thread_(ui_thread),
29 db_thread_(db_thread), 28 db_thread_(db_thread),
30 file_thread_(file_thread) { 29 file_thread_(file_thread) {
31 DCHECK(ui_thread_->BelongsToCurrentThread()); 30 DCHECK(ui_thread_->BelongsToCurrentThread());
32 DCHECK(sync_client_); 31 DCHECK(sync_client_);
33 32
34 sync_thread_ = std::move(sync_thread);
35 if (!sync_thread_) {
36 sync_thread_ = base::MakeUnique<base::Thread>("Chrome_SyncThread");
37 base::Thread::Options options;
38 options.timer_slack = base::TIMER_SLACK_MAXIMUM;
39 CHECK(sync_thread_->StartWithOptions(options));
40 }
41
42 MaybeAddWorker(GROUP_DB); 33 MaybeAddWorker(GROUP_DB);
43 MaybeAddWorker(GROUP_FILE); 34 MaybeAddWorker(GROUP_FILE);
44 MaybeAddWorker(GROUP_UI); 35 MaybeAddWorker(GROUP_UI);
45 MaybeAddWorker(GROUP_PASSIVE); 36 MaybeAddWorker(GROUP_PASSIVE);
46 MaybeAddWorker(GROUP_HISTORY); 37 MaybeAddWorker(GROUP_HISTORY);
47 MaybeAddWorker(GROUP_PASSWORD); 38 MaybeAddWorker(GROUP_PASSWORD);
48 39
49 // Must have at least one worker for SyncBackendRegistrar to be destroyed 40 // Must have at least one worker for SyncBackendRegistrar to be destroyed
50 // correctly, as it is destroyed after the last worker dies. 41 // correctly, as it is destroyed after the last worker dies.
51 DCHECK_GT(workers_.size(), 0u); 42 DCHECK_GT(workers_.size(), 0u);
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 308
318 void SyncBackendRegistrar::MaybeAddWorker(ModelSafeGroup group) { 309 void SyncBackendRegistrar::MaybeAddWorker(ModelSafeGroup group) {
319 const scoped_refptr<ModelSafeWorker> worker = 310 const scoped_refptr<ModelSafeWorker> worker =
320 sync_client_->CreateModelWorkerForGroup(group); 311 sync_client_->CreateModelWorkerForGroup(group);
321 if (worker) { 312 if (worker) {
322 DCHECK(workers_.find(group) == workers_.end()); 313 DCHECK(workers_.find(group) == workers_.end());
323 workers_[group] = worker; 314 workers_[group] = worker;
324 } 315 }
325 } 316 }
326 317
327 std::unique_ptr<base::Thread> SyncBackendRegistrar::ReleaseSyncThread() {
328 return std::move(sync_thread_);
329 }
330
331 base::Thread* SyncBackendRegistrar::sync_thread() {
332 return sync_thread_.get();
333 }
334
335 ModelSafeGroup SyncBackendRegistrar::GetInitialGroupForType( 318 ModelSafeGroup SyncBackendRegistrar::GetInitialGroupForType(
336 ModelType type) const { 319 ModelType type) const {
337 return non_blocking_types_.Has(type) ? GROUP_NON_BLOCKING : GROUP_PASSIVE; 320 return non_blocking_types_.Has(type) ? GROUP_NON_BLOCKING : GROUP_PASSIVE;
338 } 321 }
339 322
340 } // namespace syncer 323 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/driver/glue/sync_backend_registrar.h ('k') | components/sync/driver/glue/sync_backend_registrar_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698