fake_feature_state_manager.cc 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ash/services/multidevice_setup/fake_feature_state_manager.h"
  5. namespace ash {
  6. namespace multidevice_setup {
  7. namespace {
  8. // Each feature's default value is kUnavailableNoVerifiedHost_NoEligibleHosts
  9. // until proven otherwise.
  10. FeatureStateManager::FeatureStatesMap GenerateInitialDefaultCachedStateMap() {
  11. return FeatureStateManager::FeatureStatesMap{
  12. {mojom::Feature::kBetterTogetherSuite,
  13. mojom::FeatureState::kUnavailableNoVerifiedHost_NoEligibleHosts},
  14. {mojom::Feature::kInstantTethering,
  15. mojom::FeatureState::kUnavailableNoVerifiedHost_NoEligibleHosts},
  16. {mojom::Feature::kMessages,
  17. mojom::FeatureState::kUnavailableNoVerifiedHost_NoEligibleHosts},
  18. {mojom::Feature::kSmartLock,
  19. mojom::FeatureState::kUnavailableNoVerifiedHost_NoEligibleHosts}};
  20. }
  21. } // namespace
  22. FakeFeatureStateManager::FakeFeatureStateManager()
  23. : feature_states_map_(GenerateInitialDefaultCachedStateMap()) {}
  24. FakeFeatureStateManager::~FakeFeatureStateManager() = default;
  25. mojom::FeatureState FakeFeatureStateManager::GetFeatureState(
  26. mojom::Feature feature) {
  27. return feature_states_map_[feature];
  28. }
  29. void FakeFeatureStateManager::SetFeatureState(mojom::Feature feature,
  30. mojom::FeatureState state) {
  31. if (feature_states_map_[feature] == state)
  32. return;
  33. feature_states_map_[feature] = state;
  34. NotifyFeatureStatesChange(feature_states_map_);
  35. }
  36. void FakeFeatureStateManager::SetFeatureStates(
  37. const FeatureStatesMap& feature_states_map) {
  38. if (feature_states_map_ == feature_states_map)
  39. return;
  40. feature_states_map_ = feature_states_map;
  41. NotifyFeatureStatesChange(feature_states_map_);
  42. }
  43. FeatureStateManager::FeatureStatesMap
  44. FakeFeatureStateManager::GetFeatureStates() {
  45. return feature_states_map_;
  46. }
  47. void FakeFeatureStateManager::PerformSetFeatureEnabledState(
  48. mojom::Feature feature,
  49. bool enabled) {
  50. if (enabled)
  51. SetFeatureState(feature, mojom::FeatureState::kEnabledByUser);
  52. else
  53. SetFeatureState(feature, mojom::FeatureState::kDisabledByUser);
  54. }
  55. FakeFeatureStateManagerObserver::FakeFeatureStateManagerObserver() = default;
  56. FakeFeatureStateManagerObserver::~FakeFeatureStateManagerObserver() = default;
  57. void FakeFeatureStateManagerObserver::OnFeatureStatesChange(
  58. const FeatureStateManager::FeatureStatesMap& feature_states_map) {
  59. feature_state_updates_.emplace_back(feature_states_map);
  60. }
  61. } // namespace multidevice_setup
  62. } // namespace ash