fast_pair_pref_enabled_provider.cc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2021 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/quick_pair/feature_status_tracker/fast_pair_pref_enabled_provider.h"
  5. #include "ash/constants/ash_pref_names.h"
  6. #include "ash/shell.h"
  7. #include "base/scoped_observation.h"
  8. #include "components/prefs/pref_change_registrar.h"
  9. #include "components/prefs/pref_registry_simple.h"
  10. #include "components/prefs/pref_service.h"
  11. namespace ash {
  12. namespace quick_pair {
  13. FastPairPrefEnabledProvider::FastPairPrefEnabledProvider() {
  14. session_observation_.Observe(Shell::Get()->session_controller());
  15. }
  16. FastPairPrefEnabledProvider::~FastPairPrefEnabledProvider() = default;
  17. // static
  18. void FastPairPrefEnabledProvider::RegisterProfilePrefs(
  19. PrefRegistrySimple* registry) {
  20. registry->RegisterBooleanPref(prefs::kFastPairEnabled,
  21. /*default_value=*/true);
  22. }
  23. // Only called when there exists a last active user prefs. Caller ensures
  24. // that prefs is never null.
  25. void FastPairPrefEnabledProvider::OnActiveUserPrefServiceChanged(
  26. PrefService* prefs) {
  27. pref_change_registrar_.reset();
  28. pref_change_registrar_ = std::make_unique<PrefChangeRegistrar>();
  29. pref_change_registrar_->Init(prefs);
  30. pref_change_registrar_->Add(
  31. prefs::kFastPairEnabled,
  32. base::BindRepeating(&FastPairPrefEnabledProvider::OnFastPairPrefChanged,
  33. base::Unretained(this)));
  34. OnFastPairPrefChanged();
  35. }
  36. void FastPairPrefEnabledProvider::OnFastPairPrefChanged() {
  37. SetEnabledAndInvokeCallback(
  38. pref_change_registrar_->prefs()->GetBoolean(prefs::kFastPairEnabled));
  39. }
  40. } // namespace quick_pair
  41. } // namespace ash