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

Unified Diff: components/sync/driver/sync_service_base.cc

Issue 2663783002: [Sync] Split encryption state and logic out of PSS and SBHI. (Closed)
Patch Set: Tweak comment. Created 3 years, 11 months 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 | « components/sync/driver/sync_service_base.h ('k') | components/sync/driver/sync_service_crypto.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/sync/driver/sync_service_base.cc
diff --git a/components/sync/driver/sync_service_base.cc b/components/sync/driver/sync_service_base.cc
index b534abae4235bb355f66757b11df95c879d84f44..10d41b314943e52a03452a658f03305afae1cb55 100644
--- a/components/sync/driver/sync_service_base.cc
+++ b/components/sync/driver/sync_service_base.cc
@@ -64,10 +64,33 @@ SyncServiceBase::SyncServiceBase(std::unique_ptr<SyncClient> sync_client,
sync_data_folder_(
base_directory_.Append(base::FilePath(kSyncDataFolderName))),
debug_identifier_(debug_identifier),
- sync_prefs_(sync_client_->GetPrefService()) {}
+ sync_prefs_(sync_client_->GetPrefService()) {
+ ResetCryptoState();
+}
SyncServiceBase::~SyncServiceBase() = default;
+void SyncServiceBase::AddObserver(SyncServiceObserver* observer) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ observers_.AddObserver(observer);
+}
+
+void SyncServiceBase::RemoveObserver(SyncServiceObserver* observer) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ observers_.RemoveObserver(observer);
+}
+
+bool SyncServiceBase::HasObserver(const SyncServiceObserver* observer) const {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ return observers_.HasObserver(observer);
+}
+
+void SyncServiceBase::NotifyObservers() {
+ for (auto& observer : observers_) {
+ observer.OnStateChanged();
+ }
+}
+
void SyncServiceBase::InitializeEngine() {
DCHECK(engine_);
@@ -84,6 +107,7 @@ void SyncServiceBase::InitializeEngine() {
params.registrar = base::MakeUnique<SyncBackendRegistrar>(
debug_identifier_, base::Bind(&SyncClient::CreateModelWorkerForGroup,
base::Unretained(sync_client_.get())));
+ params.encryption_observer_proxy = crypto_->GetEncryptionObserverProxy();
params.extensions_activity = sync_client_->GetExtensionsActivity();
params.event_handler = GetJsEventHandler();
params.service_url = sync_service_url();
@@ -110,7 +134,7 @@ void SyncServiceBase::InitializeEngine() {
params.unrecoverable_error_handler = GetUnrecoverableErrorHandler();
params.report_unrecoverable_error_function =
base::Bind(ReportUnrecoverableError, channel_);
- params.saved_nigori_state = MoveSavedNigoriState();
+ params.saved_nigori_state = crypto_->TakeSavedNigoriState();
sync_prefs_.GetInvalidationVersions(&params.invalidation_versions);
engine_->Initialize(std::move(params));
@@ -145,4 +169,13 @@ bool SyncServiceBase::GetLocalSyncConfig(
return enable_local_sync_backend;
}
+void SyncServiceBase::ResetCryptoState() {
+ crypto_ = base::MakeUnique<SyncServiceCrypto>(
+ base::BindRepeating(&SyncServiceBase::NotifyObservers,
+ base::Unretained(this)),
+ base::BindRepeating(&SyncService::GetPreferredDataTypes,
+ base::Unretained(this)),
+ &sync_prefs_);
+}
+
} // namespace syncer
« no previous file with comments | « components/sync/driver/sync_service_base.h ('k') | components/sync/driver/sync_service_crypto.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698