screen_lock_manager.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. #ifndef ASH_COMPONENTS_PHONEHUB_SCREEN_LOCK_MANAGER_H_
  5. #define ASH_COMPONENTS_PHONEHUB_SCREEN_LOCK_MANAGER_H_
  6. #include "base/observer_list.h"
  7. namespace ash {
  8. namespace phonehub {
  9. // Tracks the status of whether the user has enabled screen lock on their phone.
  10. class ScreenLockManager {
  11. public:
  12. // Status of screen lock. Numerical values are stored in prefs and should not
  13. // be changed or reused.
  14. enum class LockStatus {
  15. // Default screen lock status when the values is not synced from the phone
  16. // yet.
  17. kUnknown = 0,
  18. // Screen lock is not enabled.
  19. kLockedOff = 1,
  20. // Screen lock is enabled.
  21. kLockedOn = 2
  22. };
  23. class Observer : public base::CheckedObserver {
  24. public:
  25. ~Observer() override = default;
  26. // Called when screen lock has changed; use GetLockStatus()
  27. // for the new status.
  28. virtual void OnScreenLockChanged() = 0;
  29. };
  30. ScreenLockManager(const ScreenLockManager&) = delete;
  31. ScreenLockManager& operator=(const ScreenLockManager&) = delete;
  32. virtual ~ScreenLockManager();
  33. virtual LockStatus GetLockStatus() const = 0;
  34. void AddObserver(Observer* observer);
  35. void RemoveObserver(Observer* observer);
  36. protected:
  37. ScreenLockManager();
  38. void NotifyScreenLockChanged();
  39. private:
  40. friend class PhoneStatusProcessor;
  41. friend class ScreenLockManagerImplTest;
  42. virtual void SetLockStatusInternal(LockStatus lock_status) = 0;
  43. base::ObserverList<Observer> observer_list_;
  44. };
  45. } // namespace phonehub
  46. } // namespace ash
  47. #endif // ASH_COMPONENTS_PHONEHUB_SCREEN_LOCK_MANAGER_H_