screen_lock_manager_impl_unittest.cc 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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/components/phonehub/screen_lock_manager_impl.h"
  5. #include "ash/components/phonehub/pref_names.h"
  6. #include "components/prefs/testing_pref_service.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace ash {
  9. namespace phonehub {
  10. namespace {
  11. class FakeObserver : public ScreenLockManager::Observer {
  12. public:
  13. FakeObserver() = default;
  14. ~FakeObserver() override = default;
  15. size_t num_calls() const { return num_calls_; }
  16. // ScreenLockManager::Observer:
  17. void OnScreenLockChanged() override { ++num_calls_; }
  18. private:
  19. size_t num_calls_ = 0;
  20. };
  21. } // namespace
  22. class ScreenLockManagerImplTest : public testing::Test {
  23. protected:
  24. ScreenLockManagerImplTest() = default;
  25. ScreenLockManagerImplTest(const ScreenLockManagerImplTest&) = delete;
  26. ScreenLockManagerImplTest& operator=(const ScreenLockManagerImplTest&) =
  27. delete;
  28. ~ScreenLockManagerImplTest() override = default;
  29. // testing::Test:
  30. void SetUp() override {
  31. ScreenLockManagerImpl::RegisterPrefs(pref_service_.registry());
  32. }
  33. void TearDown() override { manager_->RemoveObserver(&fake_observer_); }
  34. void Initialize(ScreenLockManager::LockStatus expected_status) {
  35. pref_service_.SetInteger(prefs::kScreenLockStatus,
  36. static_cast<int>(expected_status));
  37. manager_ = std::make_unique<ScreenLockManagerImpl>(&pref_service_);
  38. manager_->AddObserver(&fake_observer_);
  39. }
  40. void VerifyScreenLockState(ScreenLockManager::LockStatus expected_status) {
  41. EXPECT_EQ(static_cast<int>(expected_status),
  42. pref_service_.GetInteger(prefs::kScreenLockStatus));
  43. EXPECT_EQ(expected_status, manager_->GetLockStatus());
  44. }
  45. void SetLockStatusInternal(ScreenLockManager::LockStatus status) {
  46. manager_->SetLockStatusInternal(status);
  47. }
  48. size_t GetNumObserverCalls() const { return fake_observer_.num_calls(); }
  49. private:
  50. TestingPrefServiceSimple pref_service_;
  51. FakeObserver fake_observer_;
  52. std::unique_ptr<ScreenLockManager> manager_;
  53. };
  54. TEST_F(ScreenLockManagerImplTest, ScreenLockStateChanged) {
  55. Initialize(ScreenLockManager::LockStatus::kUnknown);
  56. VerifyScreenLockState(ScreenLockManager::LockStatus::kUnknown);
  57. // Simulate getting a response back from the phone.
  58. SetLockStatusInternal(ScreenLockManager::LockStatus::kLockedOn);
  59. VerifyScreenLockState(ScreenLockManager::LockStatus::kLockedOn);
  60. EXPECT_EQ(1u, GetNumObserverCalls());
  61. SetLockStatusInternal(ScreenLockManager::LockStatus::kLockedOff);
  62. VerifyScreenLockState(ScreenLockManager::LockStatus::kLockedOff);
  63. EXPECT_EQ(2u, GetNumObserverCalls());
  64. }
  65. } // namespace phonehub
  66. } // namespace ash