Index: components/browser_sync/profile_sync_service.cc |
diff --git a/components/browser_sync/profile_sync_service.cc b/components/browser_sync/profile_sync_service.cc |
index d3a045f2930fd2794e28cab50c0ef304f59df518..bf06a348d3d3ac774b08da706d4153df1d8744dc 100644 |
--- a/components/browser_sync/profile_sync_service.cc |
+++ b/components/browser_sync/profile_sync_service.cc |
@@ -496,6 +496,13 @@ void ProfileSyncService::InitializeBackend(bool delete_stale_data) { |
return; |
} |
+ if (!sync_thread_) { |
+ sync_thread_ = base::MakeUnique<base::Thread>("Chrome_SyncThread"); |
+ base::Thread::Options options; |
+ options.timer_slack = base::TIMER_SLACK_MAXIMUM; |
+ CHECK(sync_thread_->StartWithOptions(options)); |
+ } |
+ |
SyncCredentials credentials = GetCredentials(); |
if (delete_stale_data) |
@@ -538,11 +545,10 @@ void ProfileSyncService::InitializeBackend(bool delete_stale_data) { |
url_request_context_, network_time_update_callback_); |
backend_->Initialize( |
- this, std::move(sync_thread_), db_thread_, file_thread_, |
- GetJsEventHandler(), sync_service_url_, local_device_->GetSyncUserAgent(), |
- credentials, delete_stale_data, enable_local_sync_backend, |
- local_sync_backend_folder, std::unique_ptr<syncer::SyncManagerFactory>( |
- new syncer::SyncManagerFactory()), |
+ this, sync_thread_.get(), db_thread_, file_thread_, GetJsEventHandler(), |
+ sync_service_url_, local_device_->GetSyncUserAgent(), credentials, |
+ delete_stale_data, enable_local_sync_backend, local_sync_backend_folder, |
+ base::MakeUnique<syncer::SyncManagerFactory>(), |
MakeWeakHandle(sync_enabled_weak_factory_.GetWeakPtr()), |
base::Bind(syncer::ReportUnrecoverableError, channel_), |
http_post_provider_factory_getter, std::move(saved_nigori_state_)); |
@@ -786,7 +792,7 @@ void ProfileSyncService::ShutdownImpl(syncer::ShutdownReason reason) { |
// shutting it down. |
std::unique_ptr<SyncBackendHost> doomed_backend(backend_.release()); |
if (doomed_backend) { |
- sync_thread_ = doomed_backend->Shutdown(reason); |
+ doomed_backend->Shutdown(reason); |
doomed_backend.reset(); |
} |
base::TimeDelta shutdown_time = base::Time::Now() - shutdown_start_time; |
@@ -2448,8 +2454,6 @@ base::FilePath ProfileSyncService::GetDirectoryPathForTest() const { |
base::MessageLoop* ProfileSyncService::GetSyncLoopForTest() const { |
if (sync_thread_) { |
return sync_thread_->message_loop(); |
- } else if (backend_) { |
- return backend_->GetSyncLoopForTesting(); |
} else { |
return nullptr; |
} |