shelf_locking_manager_unittest.cc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright 2016 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/shelf/shelf_locking_manager.h"
  5. #include "ash/shelf/shelf.h"
  6. #include "ash/test/ash_test_base.h"
  7. namespace ash {
  8. namespace {
  9. // Tests the shelf behavior when the screen or session is locked.
  10. class ShelfLockingManagerTest : public AshTestBase {
  11. public:
  12. ShelfLockingManagerTest() = default;
  13. ShelfLockingManagerTest(const ShelfLockingManagerTest&) = delete;
  14. ShelfLockingManagerTest& operator=(const ShelfLockingManagerTest&) = delete;
  15. ShelfLockingManager* GetShelfLockingManager() {
  16. return GetPrimaryShelf()->GetShelfLockingManagerForTesting();
  17. }
  18. void SetScreenLocked(bool locked) {
  19. GetShelfLockingManager()->OnLockStateChanged(locked);
  20. }
  21. void SetSessionState(session_manager::SessionState state) {
  22. GetShelfLockingManager()->OnSessionStateChanged(state);
  23. }
  24. };
  25. // Makes sure shelf alignment is correct for lock screen.
  26. TEST_F(ShelfLockingManagerTest, AlignmentLockedWhileScreenLocked) {
  27. Shelf* shelf = GetPrimaryShelf();
  28. EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
  29. shelf->SetAlignment(ShelfAlignment::kLeft);
  30. EXPECT_EQ(ShelfAlignment::kLeft, shelf->alignment());
  31. SetScreenLocked(true);
  32. EXPECT_EQ(ShelfAlignment::kBottomLocked, shelf->alignment());
  33. SetScreenLocked(false);
  34. EXPECT_EQ(ShelfAlignment::kLeft, shelf->alignment());
  35. }
  36. // Makes sure shelf alignment is correct for login and add user screens.
  37. TEST_F(ShelfLockingManagerTest, AlignmentLockedWhileSessionLocked) {
  38. Shelf* shelf = GetPrimaryShelf();
  39. EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
  40. shelf->SetAlignment(ShelfAlignment::kRight);
  41. EXPECT_EQ(ShelfAlignment::kRight, shelf->alignment());
  42. SetSessionState(session_manager::SessionState::LOGIN_PRIMARY);
  43. EXPECT_EQ(ShelfAlignment::kBottomLocked, shelf->alignment());
  44. SetSessionState(session_manager::SessionState::ACTIVE);
  45. EXPECT_EQ(ShelfAlignment::kRight, shelf->alignment());
  46. SetSessionState(session_manager::SessionState::LOGIN_SECONDARY);
  47. EXPECT_EQ(ShelfAlignment::kBottomLocked, shelf->alignment());
  48. SetSessionState(session_manager::SessionState::ACTIVE);
  49. EXPECT_EQ(ShelfAlignment::kRight, shelf->alignment());
  50. }
  51. // Makes sure shelf alignment changes are stored, not set, while locked.
  52. TEST_F(ShelfLockingManagerTest, AlignmentChangesDeferredWhileLocked) {
  53. Shelf* shelf = GetPrimaryShelf();
  54. EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
  55. SetScreenLocked(true);
  56. EXPECT_EQ(ShelfAlignment::kBottomLocked, shelf->alignment());
  57. shelf->SetAlignment(ShelfAlignment::kRight);
  58. EXPECT_EQ(ShelfAlignment::kBottomLocked, shelf->alignment());
  59. SetScreenLocked(false);
  60. EXPECT_EQ(ShelfAlignment::kRight, shelf->alignment());
  61. }
  62. } // namespace
  63. } // namespace ash