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

Unified Diff: chrome/browser/sync/profile_sync_service.cc

Issue 1422773004: [sync] Abstract most ProfileSyncService //chrome deps (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@pss_chrome_signin_deps
Patch Set: Rebase Created 5 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
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_factory.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/profile_sync_service.cc
diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc
index e773deb565ca5b6bd1dd15ec404bfe7a1178cc2b..a43ffd71c26b3e5b4ee36b9cb066b54d9527e667 100644
--- a/chrome/browser/sync/profile_sync_service.cc
+++ b/chrome/browser/sync/profile_sync_service.cc
@@ -18,6 +18,7 @@
#include "base/logging.h"
#include "base/memory/ref_counted.h"
#include "base/metrics/histogram.h"
+#include "base/prefs/json_pref_store.h"
#include "base/profiler/scoped_tracker.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/string16.h"
@@ -26,18 +27,14 @@
#include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
#include "build/build_config.h"
-#include "chrome/browser/invalidation/profile_invalidation_provider_factory.h"
-#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/glue/sync_backend_host.h"
#include "chrome/browser/sync/glue/sync_backend_host_impl.h"
#include "chrome/browser/sync/sync_type_preference_provider.h"
-#include "chrome/common/channel_info.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/grit/generated_resources.h"
#include "components/autofill/core/common/autofill_pref_names.h"
#include "components/history/core/browser/typed_url_data_type_controller.h"
#include "components/invalidation/impl/invalidation_prefs.h"
-#include "components/invalidation/impl/profile_invalidation_provider.h"
#include "components/invalidation/public/invalidation_service.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/signin/core/browser/about_signin_internals.h"
@@ -65,7 +62,6 @@
#include "components/sync_sessions/sync_sessions_client.h"
#include "components/syncable_prefs/pref_service_syncable.h"
#include "components/version_info/version_info_values.h"
-#include "content/public/browser/browser_thread.h"
#include "net/cookies/cookie_monster.h"
#include "net/url_request/url_request_context_getter.h"
#include "sync/api/sync_error.h"
@@ -172,21 +168,32 @@ bool ShouldShowActionOnUI(
ProfileSyncService::ProfileSyncService(
scoped_ptr<sync_driver::SyncClient> sync_client,
- Profile* profile,
scoped_ptr<SigninManagerWrapper> signin_wrapper,
ProfileOAuth2TokenService* oauth2_token_service,
ProfileSyncServiceStartBehavior start_behavior,
- const syncer::NetworkTimeUpdateCallback& network_time_update_callback)
+ const syncer::NetworkTimeUpdateCallback& network_time_update_callback,
+ base::FilePath base_directory,
+ scoped_refptr<net::URLRequestContextGetter> url_request_context,
+ std::string debug_identifier,
+ version_info::Channel channel,
+ scoped_refptr<base::SingleThreadTaskRunner> db_thread,
+ scoped_refptr<base::SingleThreadTaskRunner> file_thread,
+ base::SequencedWorkerPool* blocking_pool)
: OAuth2TokenService::Consumer("sync"),
last_auth_error_(AuthError::AuthErrorNone()),
passphrase_required_reason_(syncer::REASON_PASSPHRASE_NOT_REQUIRED),
sync_client_(sync_client.Pass()),
- profile_(profile),
- sync_prefs_(profile_->GetPrefs()),
+ sync_prefs_(sync_client_->GetPrefService()),
sync_service_url_(
- GetSyncServiceURL(*base::CommandLine::ForCurrentProcess(),
- chrome::GetChannel())),
+ GetSyncServiceURL(*base::CommandLine::ForCurrentProcess(), channel)),
network_time_update_callback_(network_time_update_callback),
+ base_directory_(base_directory),
+ url_request_context_(url_request_context),
+ debug_identifier_(debug_identifier),
+ channel_(channel),
+ db_thread_(db_thread),
+ file_thread_(file_thread),
+ blocking_pool_(blocking_pool),
is_first_time_sync_configure_(false),
backend_initialized_(false),
sync_disabled_by_admin_(false),
@@ -211,8 +218,8 @@ ProfileSyncService::ProfileSyncService(
passphrase_prompt_triggered_by_version_(false),
weak_factory_(this),
startup_controller_weak_factory_(this) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- DCHECK(profile);
+ DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(sync_client_);
startup_controller_.reset(new browser_sync::StartupController(
start_behavior,
oauth2_token_service,
@@ -234,12 +241,10 @@ ProfileSyncService::ProfileSyncService(
sync_client_->GetSyncSessionsClient()->GetLocalSessionEventRouter());
local_device_ = sync_client_->GetSyncApiComponentFactory()
->CreateLocalDeviceInfoProvider();
- sync_stopped_reporter_.reset(
- new browser_sync::SyncStoppedReporter(
- sync_service_url_,
- local_device_->GetSyncUserAgent(),
- profile_->GetRequestContext(),
- browser_sync::SyncStoppedReporter::ResultCallback()));
+ sync_stopped_reporter_.reset(new browser_sync::SyncStoppedReporter(
+ sync_service_url_, local_device_->GetSyncUserAgent(),
+ url_request_context_,
+ browser_sync::SyncStoppedReporter::ResultCallback()));
sessions_sync_manager_.reset(new SessionsSyncManager(
sync_client_->GetSyncSessionsClient(), &sync_prefs_, local_device_.get(),
router.Pass(),
@@ -357,7 +362,7 @@ void ProfileSyncService::TrySyncDatatypePrefRecovery() {
// kSyncKeepEverythingSynced has a default value. If so, and sync setup has
// completed, it means sync was not properly configured, so we manually
// set kSyncKeepEverythingSynced.
- PrefService* const pref_service = profile_->GetPrefs();
+ PrefService* const pref_service = sync_client_->GetPrefService();
if (!pref_service)
return;
if (GetPreferredDataTypes().Size() > 1)
@@ -379,7 +384,7 @@ void ProfileSyncService::TrySyncDatatypePrefRecovery() {
}
void ProfileSyncService::StartSyncingWithServer() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(thread_checker_.CalledOnValidThread());
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kSyncEnableClearDataOnPassphraseEncryption) &&
@@ -512,23 +517,17 @@ void ProfileSyncService::InitializeBackend(bool delete_stale_data) {
http_post_provider_factory_getter =
base::Bind(&syncer::NetworkResources::GetHttpPostProviderFactory,
base::Unretained(network_resources_.get()),
- make_scoped_refptr(profile_->GetRequestContext()),
+ url_request_context_,
network_time_update_callback_);
backend_->Initialize(
- this, sync_thread_.Pass(),
- content::BrowserThread::GetMessageLoopProxyForThread(
- content::BrowserThread::DB),
- content::BrowserThread::GetMessageLoopProxyForThread(
- content::BrowserThread::FILE),
- GetJsEventHandler(), sync_service_url_, local_device_->GetSyncUserAgent(),
- credentials, delete_stale_data,
- scoped_ptr<syncer::SyncManagerFactory>(
- new syncer::SyncManagerFactory(GetManagerType()))
- .Pass(),
+ this, sync_thread_.Pass(), db_thread_, file_thread_, GetJsEventHandler(),
+ sync_service_url_, local_device_->GetSyncUserAgent(), credentials,
+ delete_stale_data, scoped_ptr<syncer::SyncManagerFactory>(
+ new syncer::SyncManagerFactory(GetManagerType()))
+ .Pass(),
MakeWeakHandle(weak_factory_.GetWeakPtr()),
- base::Bind(browser_sync::ChromeReportUnrecoverableError,
- chrome::GetChannel()),
+ base::Bind(browser_sync::ChromeReportUnrecoverableError, channel_),
http_post_provider_factory_getter, saved_nigori_state_.Pass());
}
@@ -666,20 +665,14 @@ void ProfileSyncService::StartUpSlowBackendComponents(
base::FilePath(kSyncDataFolderName) :
base::FilePath(kSyncBackupDataFolderName);
- invalidation::InvalidationService* invalidator = NULL;
- if (backend_mode_ == SYNC) {
- invalidation::ProfileInvalidationProvider* provider =
- invalidation::ProfileInvalidationProviderFactory::GetForProfile(
- profile_);
- if (provider)
- invalidator = provider->GetInvalidationService();
- }
+ invalidation::InvalidationService* invalidator =
+ backend_mode_ == SYNC ? sync_client_->GetInvalidationService() : nullptr;
- directory_path_ = profile_->GetPath().Append(sync_folder);
+ directory_path_ = base_directory_.Append(sync_folder);
backend_.reset(
sync_client_->GetSyncApiComponentFactory()->CreateSyncBackendHost(
- profile_->GetDebugName(), sync_client_.get(), invalidator,
+ debug_identifier_, sync_client_.get(), invalidator,
sync_prefs_.AsWeakPtr(), directory_path_));
// Initialize the backend. Every time we start up a new SyncBackendHost,
@@ -1111,7 +1104,7 @@ void ProfileSyncService::OnBackendInitialized(
// Initialize local device info.
local_device_->Initialize(cache_guid, signin_scoped_device_id,
- content::BrowserThread::GetBlockingPool());
+ blocking_pool_);
if (backend_mode_ == BACKUP || backend_mode_ == ROLLBACK)
ConfigureDataTypeManager();
@@ -1139,10 +1132,10 @@ void ProfileSyncService::OnExperimentsChanged(
current_experiments_ = experiments;
- profile_->GetPrefs()->SetBoolean(
+ sync_client_->GetPrefService()->SetBoolean(
invalidation::prefs::kInvalidationServiceUseGCMChannel,
experiments.gcm_invalidations_enabled);
- profile_->GetPrefs()->SetBoolean(
+ sync_client_->GetPrefService()->SetBoolean(
autofill::prefs::kAutofillWalletSyncExperimentEnabled,
experiments.wallet_sync_enabled);
}
@@ -1396,7 +1389,7 @@ void ProfileSyncService::OnActionableError(const SyncProtocolError& error) {
void ProfileSyncService::OnLocalSetPassphraseEncryption(
const syncer::SyncEncryptionHandler::NigoriState& nigori_state) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(thread_checker_.CalledOnValidThread());
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kSyncEnableClearDataOnPassphraseEncryption))
return;
@@ -1422,7 +1415,7 @@ void ProfileSyncService::BeginConfigureCatchUpBeforeClear() {
}
void ProfileSyncService::ClearAndRestartSyncForPassphraseEncryption() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(thread_checker_.CalledOnValidThread());
backend_->ClearServerData(base::Bind(
&ProfileSyncService::OnClearServerDataDone, weak_factory_.GetWeakPtr()));
}
@@ -1902,8 +1895,7 @@ void ProfileSyncService::ConfigureDataTypeManager() {
// We create the migrator at the same time.
migrator_.reset(new browser_sync::BackendMigrator(
- profile_->GetDebugName(), GetUserShare(), this,
- data_type_manager_.get(),
+ debug_identifier_, GetUserShare(), this, data_type_manager_.get(),
base::Bind(&ProfileSyncService::StartSyncingWithServer,
base::Unretained(this))));
}
@@ -2435,7 +2427,7 @@ SigninManagerBase* ProfileSyncService::signin() const {
}
void ProfileSyncService::RequestStart() {
- DCHECK(profile_);
+ DCHECK(sync_client_);
sync_prefs_.SetSyncRequested(true);
DCHECK(!signin_.get() || signin_->GetOriginal()->IsAuthenticated());
startup_controller_->TryStart();
@@ -2580,15 +2572,15 @@ void ProfileSyncService::CheckSyncBackupIfNeeded() {
sync_thread_->task_runner()->PostTask(
FROM_HERE,
base::Bind(syncer::CheckSyncDbLastModifiedTime,
- profile_->GetPath().Append(kSyncBackupDataFolderName),
+ base_directory_.Append(kSyncBackupDataFolderName),
base::ThreadTaskRunnerHandle::Get(),
base::Bind(&ProfileSyncService::CheckSyncBackupCallback,
weak_factory_.GetWeakPtr())));
} else {
- content::BrowserThread::PostTask(
- content::BrowserThread::FILE, FROM_HERE,
+ file_thread_->PostTask(
+ FROM_HERE,
base::Bind(syncer::CheckSyncDbLastModifiedTime,
- profile_->GetPath().Append(kSyncBackupDataFolderName),
+ base_directory_.Append(kSyncBackupDataFolderName),
base::ThreadTaskRunnerHandle::Get(),
base::Bind(&ProfileSyncService::CheckSyncBackupCallback,
weak_factory_.GetWeakPtr())));
@@ -2611,11 +2603,16 @@ void ProfileSyncService::TryStartSyncAfterBackup() {
void ProfileSyncService::CleanUpBackup() {
sync_prefs_.ClearFirstSyncTime();
- profile_->GetIOTaskRunner()->PostTask(
+
+ // Use the client's base directory to get the blocking task runner to use in
+ // order to ensure ordering between the tasks posted by different invocations
+ // of this method.
+ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
+ JsonPrefStore::GetTaskRunnerForFile(base_directory_, blocking_pool_);
+ blocking_task_runner->PostTask(
FROM_HERE,
base::Bind(base::IgnoreResult(base::DeleteFile),
- profile_->GetPath().Append(kSyncBackupDataFolderName),
- true));
+ base_directory_.Append(kSyncBackupDataFolderName), true));
}
bool ProfileSyncService::NeedBackup() const {
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698