| OLD | NEW |
| 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 Loading... |
| 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 |
| OLD | NEW |