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

Unified Diff: components/sync/driver/glue/sync_backend_host_impl.cc

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 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 side-by-side diff with in-line comments
Download patch
Index: components/sync/driver/glue/sync_backend_host_impl.cc
diff --git a/components/sync/driver/glue/sync_backend_host_impl.cc b/components/sync/driver/glue/sync_backend_host_impl.cc
index 9d420acbbf6e64399c1f2830af06bfaed740d51a..2b339724cd9b06a23be89d9788f37a0640a810dc 100644
--- a/components/sync/driver/glue/sync_backend_host_impl.cc
+++ b/components/sync/driver/glue/sync_backend_host_impl.cc
@@ -6,6 +6,7 @@
#include <utility>
+#include "base/bind.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/location.h"
@@ -71,7 +72,7 @@ SyncBackendHostImpl::~SyncBackendHostImpl() {
void SyncBackendHostImpl::Initialize(
SyncFrontend* frontend,
- std::unique_ptr<base::Thread> sync_thread,
+ base::Thread* sync_thread,
const scoped_refptr<base::SingleThreadTaskRunner>& db_thread,
const scoped_refptr<base::SingleThreadTaskRunner>& file_thread,
const WeakHandle<JsEventHandler>& event_handler,
@@ -86,13 +87,14 @@ void SyncBackendHostImpl::Initialize(
const base::Closure& report_unrecoverable_error_function,
const HttpPostProviderFactoryGetter& http_post_provider_factory_getter,
std::unique_ptr<SyncEncryptionHandler::NigoriState> saved_nigori_state) {
+ CHECK(sync_thread);
+ sync_thread_ = sync_thread;
+
registrar_ = base::MakeUnique<SyncBackendRegistrar>(
- name_, sync_client_, std::move(sync_thread), ui_thread_, db_thread,
- file_thread);
- CHECK(registrar_->sync_thread());
+ name_, sync_client_, ui_thread_, db_thread, file_thread);
- frontend_ = frontend;
DCHECK(frontend);
+ frontend_ = frontend;
std::vector<scoped_refptr<ModelSafeWorker>> workers;
registrar_->GetWorkers(&workers);
@@ -115,7 +117,7 @@ void SyncBackendHostImpl::Initialize(
sync_prefs_->GetInvalidationVersions(&invalidation_versions);
std::unique_ptr<DoInitializeOptions> init_opts(new DoInitializeOptions(
- registrar_->sync_thread()->message_loop(), registrar_.get(), workers,
+ sync_thread_->message_loop(), registrar_.get(), workers,
sync_client_->GetExtensionsActivity(), event_handler, sync_service_url,
sync_user_agent, http_post_provider_factory_getter.Run(
core_->GetRequestContextCancelationSignal()),
@@ -133,17 +135,17 @@ void SyncBackendHostImpl::Initialize(
void SyncBackendHostImpl::TriggerRefresh(const ModelTypeSet& types) {
DCHECK(ui_thread_->BelongsToCurrentThread());
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&SyncBackendHostCore::DoRefreshTypes, core_, types));
}
void SyncBackendHostImpl::UpdateCredentials(
const SyncCredentials& credentials) {
- DCHECK(registrar_->sync_thread()->IsRunning());
- registrar_->sync_thread()->task_runner()->PostTask(
- FROM_HERE, base::Bind(&SyncBackendHostCore::DoUpdateCredentials,
- core_, credentials));
+ DCHECK(sync_thread_->IsRunning());
+ sync_thread_->task_runner()->PostTask(
+ FROM_HERE, base::Bind(&SyncBackendHostCore::DoUpdateCredentials, core_,
+ credentials));
}
void SyncBackendHostImpl::StartSyncingWithServer() {
@@ -152,14 +154,14 @@ void SyncBackendHostImpl::StartSyncingWithServer() {
ModelSafeRoutingInfo routing_info;
registrar_->GetModelSafeRoutingInfo(&routing_info);
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&SyncBackendHostCore::DoStartSyncing, core_,
routing_info, sync_prefs_->GetLastPollTime()));
}
void SyncBackendHostImpl::SetEncryptionPassphrase(const std::string& passphrase,
bool is_explicit) {
- DCHECK(registrar_->sync_thread()->IsRunning());
+ DCHECK(sync_thread_->IsRunning());
if (!IsNigoriEnabled()) {
NOTREACHED() << "SetEncryptionPassphrase must never be called when nigori"
" is disabled.";
@@ -178,7 +180,7 @@ void SyncBackendHostImpl::SetEncryptionPassphrase(const std::string& passphrase,
cached_passphrase_type_ == PassphraseType::IMPLICIT_PASSPHRASE);
// Post an encryption task on the syncer thread.
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&SyncBackendHostCore::DoSetEncryptionPassphrase,
core_, passphrase, is_explicit));
}
@@ -207,7 +209,7 @@ bool SyncBackendHostImpl::SetDecryptionPassphrase(
return false;
// Post a decryption task on the syncer thread.
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&SyncBackendHostCore::DoSetDecryptionPassphrase,
core_, passphrase));
@@ -230,21 +232,18 @@ void SyncBackendHostImpl::StopSyncingForShutdown() {
// Immediately stop sending messages to the frontend.
frontend_ = nullptr;
- DCHECK(registrar_->sync_thread()->IsRunning());
+ DCHECK(sync_thread_->IsRunning());
registrar_->RequestWorkerStopOnUIThread();
core_->ShutdownOnUIThread();
}
-std::unique_ptr<base::Thread> SyncBackendHostImpl::Shutdown(
- ShutdownReason reason) {
+void SyncBackendHostImpl::Shutdown(ShutdownReason reason) {
// StopSyncingForShutdown() (which nulls out |frontend_|) should be
// called first.
DCHECK(!frontend_);
- DCHECK(registrar_->sync_thread()->IsRunning());
-
- bool sync_thread_claimed = (reason != BROWSER_SHUTDOWN);
+ DCHECK(sync_thread_->IsRunning());
if (invalidation_handler_registered_) {
if (reason == DISABLE_SYNC) {
@@ -257,22 +256,15 @@ std::unique_ptr<base::Thread> SyncBackendHostImpl::Shutdown(
model_type_connector_.reset();
- // Shut down and destroy sync manager.
- registrar_->sync_thread()->task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&SyncBackendHostCore::DoShutdown, core_, reason));
+ // Shut down and destroy SyncManager. SyncManager holds a pointer to
+ // |registrar_| so its destruction must be sequenced before the destruction of
+ // |registrar_|.
+ sync_thread_->task_runner()->PostTask(
+ FROM_HERE, base::Bind(&SyncBackendHostCore::DoShutdown, core_, reason));
core_ = nullptr;
- // Worker cleanup.
- SyncBackendRegistrar* detached_registrar = registrar_.release();
- detached_registrar->sync_thread()->task_runner()->PostTask(
- FROM_HERE, base::Bind(&SyncBackendRegistrar::Shutdown,
- base::Unretained(detached_registrar)));
-
- if (sync_thread_claimed)
- return detached_registrar->ReleaseSyncThread();
- else
- return std::unique_ptr<base::Thread>();
+ // Destroy |registrar_|.
+ sync_thread_->task_runner()->DeleteSoon(FROM_HERE, registrar_.release());
}
void SyncBackendHostImpl::UnregisterInvalidationIds() {
@@ -396,7 +388,7 @@ ModelTypeSet SyncBackendHostImpl::ConfigureDataTypes(
}
void SyncBackendHostImpl::EnableEncryptEverything() {
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&SyncBackendHostCore::DoEnableEncryptEverything, core_));
}
@@ -473,12 +465,12 @@ void SyncBackendHostImpl::GetModelSafeRoutingInfo(
void SyncBackendHostImpl::FlushDirectory() const {
DCHECK(initialized());
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&SyncBackendHostCore::SaveChanges, core_));
}
void SyncBackendHostImpl::RequestBufferedProtocolEventsAndEnableForwarding() {
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(
&SyncBackendHostCore::SendBufferedProtocolEventsAndEnableForwarding,
@@ -486,14 +478,14 @@ void SyncBackendHostImpl::RequestBufferedProtocolEventsAndEnableForwarding() {
}
void SyncBackendHostImpl::DisableProtocolEventForwarding() {
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&SyncBackendHostCore::DisableProtocolEventForwarding, core_));
}
void SyncBackendHostImpl::EnableDirectoryTypeDebugInfoForwarding() {
DCHECK(initialized());
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&SyncBackendHostCore::EnableDirectoryTypeDebugInfoForwarding,
core_));
@@ -501,7 +493,7 @@ void SyncBackendHostImpl::EnableDirectoryTypeDebugInfoForwarding() {
void SyncBackendHostImpl::DisableDirectoryTypeDebugInfoForwarding() {
DCHECK(initialized());
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&SyncBackendHostCore::DisableDirectoryTypeDebugInfoForwarding,
core_));
@@ -509,7 +501,7 @@ void SyncBackendHostImpl::DisableDirectoryTypeDebugInfoForwarding() {
void SyncBackendHostImpl::InitCore(
std::unique_ptr<DoInitializeOptions> options) {
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&SyncBackendHostCore::DoInitialize, core_,
base::Passed(&options)));
}
@@ -529,7 +521,7 @@ void SyncBackendHostImpl::RequestConfigureSyncer(
config_types.to_purge = to_purge;
config_types.to_journal = to_journal;
config_types.to_unapply = to_unapply;
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&SyncBackendHostCore::DoConfigureSyncer, core_, reason,
config_types, routing_info, ready_task, retry_callback));
@@ -655,14 +647,14 @@ void SyncBackendHostImpl::HandleMigrationRequestedOnFrontendLoop(
}
void SyncBackendHostImpl::OnInvalidatorStateChange(InvalidatorState state) {
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&SyncBackendHostCore::DoOnInvalidatorStateChange,
core_, state));
}
void SyncBackendHostImpl::OnIncomingInvalidation(
const ObjectIdInvalidationMap& invalidation_map) {
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&SyncBackendHostCore::DoOnIncomingInvalidation,
core_, invalidation_map));
}
@@ -788,14 +780,10 @@ void SyncBackendHostImpl::UpdateInvalidationVersions(
sync_prefs_->UpdateInvalidationVersions(invalidation_versions);
}
-base::MessageLoop* SyncBackendHostImpl::GetSyncLoopForTesting() {
- return registrar_->sync_thread()->message_loop();
-}
-
void SyncBackendHostImpl::RefreshTypesForTest(ModelTypeSet types) {
DCHECK(ui_thread_->BelongsToCurrentThread());
- registrar_->sync_thread()->task_runner()->PostTask(
+ sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&SyncBackendHostCore::DoRefreshTypes, core_, types));
}
@@ -803,17 +791,17 @@ void SyncBackendHostImpl::RefreshTypesForTest(ModelTypeSet types) {
void SyncBackendHostImpl::ClearServerData(
const SyncManager::ClearServerDataCallback& callback) {
DCHECK(ui_thread_->BelongsToCurrentThread());
- registrar_->sync_thread()->task_runner()->PostTask(
- FROM_HERE, base::Bind(&SyncBackendHostCore::DoClearServerData,
- core_, callback));
+ sync_thread_->task_runner()->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncBackendHostCore::DoClearServerData, core_, callback));
}
void SyncBackendHostImpl::OnCookieJarChanged(bool account_mismatch,
bool empty_jar) {
DCHECK(ui_thread_->BelongsToCurrentThread());
- registrar_->sync_thread()->task_runner()->PostTask(
- FROM_HERE, base::Bind(&SyncBackendHostCore::DoOnCookieJarChanged,
- core_, account_mismatch, empty_jar));
+ sync_thread_->task_runner()->PostTask(
+ FROM_HERE, base::Bind(&SyncBackendHostCore::DoOnCookieJarChanged, core_,
+ account_mismatch, empty_jar));
}
void SyncBackendHostImpl::ClearServerDataDoneOnFrontendLoop(
« no previous file with comments | « components/sync/driver/glue/sync_backend_host_impl.h ('k') | components/sync/driver/glue/sync_backend_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698