| 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(¶ms.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
|
|
|