| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ash/sync/sync_mojo_service_ash.h" |
| |
| #include "base/feature_list.h" |
| #include "chrome/browser/ash/sync/sync_explicit_passphrase_client_ash.h" |
| #include "chrome/browser/ash/sync/sync_user_settings_client_ash.h" |
| #include "chrome/browser/ash/sync/synced_session_client_ash.h" |
| #include "components/sync/base/features.h" |
| |
| namespace ash { |
| |
| SyncMojoServiceAsh::SyncMojoServiceAsh(syncer::SyncService* sync_service) { |
| if (base::FeatureList::IsEnabled( |
| syncer::kSyncChromeOSExplicitPassphraseSharing)) { |
| explicit_passphrase_client_ = |
| std::make_unique<SyncExplicitPassphraseClientAsh>(sync_service); |
| } |
| if (base::FeatureList::IsEnabled(syncer::kSyncChromeOSAppsToggleSharing)) { |
| user_settings_client_ = |
| std::make_unique<SyncUserSettingsClientAsh>(sync_service); |
| } |
| if (base::FeatureList::IsEnabled(syncer::kChromeOSSyncedSessionSharing)) { |
| synced_session_client_ = std::make_unique<SyncedSessionClientAsh>(); |
| } |
| } |
| |
| SyncMojoServiceAsh::~SyncMojoServiceAsh() = default; |
| |
| void SyncMojoServiceAsh::BindReceiver( |
| mojo::PendingReceiver<crosapi::mojom::SyncService> receiver) { |
| receivers_.Add(this, std::move(receiver)); |
| } |
| |
| void SyncMojoServiceAsh::Shutdown() { |
| receivers_.Clear(); |
| user_settings_client_ = nullptr; |
| explicit_passphrase_client_ = nullptr; |
| synced_session_client_ = nullptr; |
| } |
| |
| void SyncMojoServiceAsh::BindExplicitPassphraseClient( |
| mojo::PendingReceiver<crosapi::mojom::SyncExplicitPassphraseClient> |
| receiver) { |
| // Null if feature is disabled. |
| if (explicit_passphrase_client_) { |
| explicit_passphrase_client_->BindReceiver(std::move(receiver)); |
| } |
| } |
| |
| void SyncMojoServiceAsh::BindUserSettingsClient( |
| mojo::PendingReceiver<crosapi::mojom::SyncUserSettingsClient> receiver) { |
| // Null if feature is disabled. |
| if (user_settings_client_) { |
| user_settings_client_->BindReceiver(std::move(receiver)); |
| } |
| } |
| |
| void SyncMojoServiceAsh::DEPRECATED_BindSyncedSessionClient( |
| mojo::PendingReceiver<crosapi::mojom::SyncedSessionClient> receiver) { |
| NOTIMPLEMENTED(); |
| } |
| |
| void SyncMojoServiceAsh::CreateSyncedSessionClient( |
| CreateSyncedSessionClientCallback callback) { |
| if (!base::FeatureList::IsEnabled(syncer::kChromeOSSyncedSessionSharing)) { |
| std::move(callback).Run(mojo::NullRemote()); |
| return; |
| } |
| |
| std::move(callback).Run(synced_session_client_->CreateRemote()); |
| } |
| |
| } // namespace ash |