blob: e3b8fc6befa4b1b2914116681cfd13530a8ac8bf [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/services/multidevice_setup/fake_feature_state_manager.h"
namespace chromeos {
namespace multidevice_setup {
namespace {
// Each feature's default value is kUnavailableNoVerifiedHost until proven
// otherwise.
FeatureStateManager::FeatureStatesMap GenerateInitialDefaultCachedStateMap() {
return FeatureStateManager::FeatureStatesMap{
{mojom::Feature::kBetterTogetherSuite,
mojom::FeatureState::kUnavailableNoVerifiedHost},
{mojom::Feature::kInstantTethering,
mojom::FeatureState::kUnavailableNoVerifiedHost},
{mojom::Feature::kMessages,
mojom::FeatureState::kUnavailableNoVerifiedHost},
{mojom::Feature::kSmartLock,
mojom::FeatureState::kUnavailableNoVerifiedHost}};
}
} // namespace
FakeFeatureStateManager::FakeFeatureStateManager()
: feature_states_map_(GenerateInitialDefaultCachedStateMap()) {}
FakeFeatureStateManager::~FakeFeatureStateManager() = default;
void FakeFeatureStateManager::SetFeatureState(mojom::Feature feature,
mojom::FeatureState state) {
if (feature_states_map_[feature] == state)
return;
feature_states_map_[feature] = state;
NotifyFeatureStatesChange(feature_states_map_);
}
void FakeFeatureStateManager::SetFeatureStates(
const FeatureStatesMap& feature_states_map) {
if (feature_states_map_ == feature_states_map)
return;
feature_states_map_ = feature_states_map;
NotifyFeatureStatesChange(feature_states_map_);
}
FeatureStateManager::FeatureStatesMap
FakeFeatureStateManager::GetFeatureStates() {
return feature_states_map_;
}
void FakeFeatureStateManager::PerformSetFeatureEnabledState(
mojom::Feature feature,
bool enabled) {
if (enabled)
SetFeatureState(feature, mojom::FeatureState::kEnabledByUser);
else
SetFeatureState(feature, mojom::FeatureState::kDisabledByUser);
}
FakeFeatureStateManagerObserver::FakeFeatureStateManagerObserver() = default;
FakeFeatureStateManagerObserver::~FakeFeatureStateManagerObserver() = default;
void FakeFeatureStateManagerObserver::OnFeatureStatesChange(
const FeatureStateManager::FeatureStatesMap& feature_states_map) {
feature_state_updates_.emplace_back(feature_states_map);
}
} // namespace multidevice_setup
} // namespace chromeos