blob: 5ee17ef28f63e48b846a78bef7fb0c508e9602ec [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_SYNC_TEST_TEST_SYNC_USER_SETTINGS_H_
#define COMPONENTS_SYNC_TEST_TEST_SYNC_USER_SETTINGS_H_
#include <memory>
#include <string>
#include <vector>
#include "base/memory/raw_ptr.h"
#include "build/chromeos_buildflags.h"
#include "components/signin/public/base/gaia_id_hash.h"
#include "components/sync/base/data_type.h"
#include "components/sync/base/user_selectable_type.h"
#include "components/sync/service/sync_user_settings.h"
namespace syncer {
class TestSyncService;
// Test implementation of SyncUserSettings that mostly forwards calls to a
// TestSyncService.
class TestSyncUserSettings : public SyncUserSettings {
public:
explicit TestSyncUserSettings(TestSyncService* service);
~TestSyncUserSettings() override;
// SyncUserSettings implementation.
bool IsInitialSyncFeatureSetupComplete() const override;
#if !BUILDFLAG(IS_CHROMEOS_ASH)
void SetInitialSyncFeatureSetupComplete(
SyncFirstSetupCompleteSource source) override;
#endif // !BUILDFLAG(IS_CHROMEOS_ASH)
bool IsSyncEverythingEnabled() const override;
UserSelectableTypeSet GetSelectedTypes() const override;
bool IsTypeManagedByPolicy(UserSelectableType type) const override;
bool IsTypeManagedByCustodian(UserSelectableType type) const override;
SyncUserSettings::UserSelectableTypePrefState GetTypePrefStateForAccount(
UserSelectableType type) const override;
#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
int GetNumberOfAccountsWithPasswordsSelected() const override;
#endif
void SetSelectedTypes(bool sync_everything,
UserSelectableTypeSet types) override;
void SetSelectedType(UserSelectableType type, bool is_type_on) override;
void KeepAccountSettingsPrefsOnlyForUsers(
const std::vector<signin::GaiaIdHash>& available_gaia_ids) override;
DataTypeSet GetPreferredDataTypes() const;
UserSelectableTypeSet GetRegisteredSelectableTypes() const override;
#if BUILDFLAG(IS_CHROMEOS_ASH)
bool IsSyncFeatureDisabledViaDashboard() const override;
bool IsSyncAllOsTypesEnabled() const override;
UserSelectableOsTypeSet GetSelectedOsTypes() const override;
bool IsOsTypeManagedByPolicy(UserSelectableOsType type) const override;
void SetSelectedOsTypes(bool sync_all_os_types,
UserSelectableOsTypeSet types) override;
UserSelectableOsTypeSet GetRegisteredSelectableOsTypes() const override;
#endif
#if BUILDFLAG(IS_CHROMEOS_LACROS)
void SetAppsSyncEnabledByOs(bool apps_sync_enabled) override;
#endif
bool IsCustomPassphraseAllowed() const override;
bool IsEncryptEverythingEnabled() const override;
syncer::DataTypeSet GetAllEncryptedDataTypes() const override;
bool IsPassphraseRequired() const override;
bool IsPassphraseRequiredForPreferredDataTypes() const override;
bool IsPassphrasePromptMutedForCurrentProductVersion() const override;
void MarkPassphrasePromptMutedForCurrentProductVersion() override;
bool IsTrustedVaultKeyRequired() const override;
bool IsTrustedVaultKeyRequiredForPreferredDataTypes() const override;
bool IsTrustedVaultRecoverabilityDegraded() const override;
bool IsUsingExplicitPassphrase() const override;
base::Time GetExplicitPassphraseTime() const override;
std::optional<PassphraseType> GetPassphraseType() const override;
void SetEncryptionPassphrase(const std::string& passphrase) override;
bool SetDecryptionPassphrase(const std::string& passphrase) override;
void SetExplicitPassphraseDecryptionNigoriKey(
std::unique_ptr<Nigori> nigori) override;
std::unique_ptr<Nigori> GetExplicitPassphraseDecryptionNigoriKey()
const override;
void SetRegisteredSelectableTypes(UserSelectableTypeSet types);
void SetInitialSyncFeatureSetupComplete();
void ClearInitialSyncFeatureSetupComplete();
void SetTypeIsManaged(UserSelectableType type, bool managed);
#if BUILDFLAG(IS_CHROMEOS_ASH)
void SetOsTypeIsManaged(UserSelectableOsType type, bool managed);
#endif
void SetCustomPassphraseAllowed(bool allowed);
void SetPassphraseRequired();
void SetPassphraseRequired(const std::string& required_passphrase);
void SetTrustedVaultKeyRequired(bool required);
void SetTrustedVaultRecoverabilityDegraded(bool degraded);
void SetIsUsingExplicitPassphrase(bool enabled);
void SetPassphraseType(PassphraseType type);
void SetExplicitPassphraseTime(base::Time t);
#if BUILDFLAG(IS_CHROMEOS_ASH)
void SetSyncFeatureDisabledViaDashboard(bool disabled_via_dashboard);
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
const std::string& GetEncryptionPassphrase() const;
private:
bool IsEncryptedDatatypePreferred() const;
const raw_ptr<TestSyncService> service_;
UserSelectableTypeSet registered_selectable_types_ =
UserSelectableTypeSet::All();
#if BUILDFLAG(IS_CHROMEOS_ASH)
UserSelectableOsTypeSet selected_os_types_ = UserSelectableOsTypeSet::All();
UserSelectableOsTypeSet managed_os_types_;
#endif
UserSelectableTypeSet selected_types_ = UserSelectableTypeSet::All();
UserSelectableTypeSet managed_types_;
bool initial_sync_feature_setup_complete_ = true;
bool sync_everything_enabled_ = true;
#if BUILDFLAG(IS_CHROMEOS_ASH)
bool sync_all_os_types_enabled_ = true;
#endif
bool custom_passphrase_allowed_ = true;
bool passphrase_required_ = false;
bool trusted_vault_key_required_ = false;
bool trusted_vault_recoverability_degraded_ = false;
PassphraseType passphrase_type_ = PassphraseType::kKeystorePassphrase;
base::Time explicit_passphrase_time_;
std::string encryption_passphrase_;
#if BUILDFLAG(IS_CHROMEOS_ASH)
bool sync_feature_disabled_via_dashboard_ = false;
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
};
} // namespace syncer
#endif // COMPONENTS_SYNC_TEST_TEST_SYNC_USER_SETTINGS_H_