| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/system/tiles/tray_tiles.h" | 5 #include "ash/system/tiles/tray_tiles.h" |
| 6 | 6 |
| 7 #include "ash/session/session_state_delegate.h" | |
| 8 #include "ash/shell_port.h" | |
| 9 #include "ash/system/tiles/tiles_default_view.h" | 7 #include "ash/system/tiles/tiles_default_view.h" |
| 10 #include "ash/test/ash_test_base.h" | 8 #include "ash/test/ash_test_base.h" |
| 9 #include "ash/test/test_session_controller_client.h" |
| 11 #include "ui/views/controls/button/custom_button.h" | 10 #include "ui/views/controls/button/custom_button.h" |
| 12 #include "ui/views/view.h" | 11 #include "ui/views/view.h" |
| 13 | 12 |
| 13 using views::Button; |
| 14 |
| 14 namespace ash { | 15 namespace ash { |
| 15 | 16 |
| 16 class TrayTilesTest : public test::AshTestBase { | 17 // Tests manually control their session state. |
| 18 class TrayTilesTest : public test::NoSessionAshTestBase { |
| 17 public: | 19 public: |
| 18 TrayTilesTest() {} | 20 TrayTilesTest() {} |
| 19 ~TrayTilesTest() override {} | 21 ~TrayTilesTest() override {} |
| 20 | 22 |
| 21 void SetUp() override { | 23 void SetUp() override { |
| 22 test::AshTestBase::SetUp(); | 24 test::NoSessionAshTestBase::SetUp(); |
| 23 tray_tiles_.reset(new TrayTiles(GetPrimarySystemTray())); | 25 tray_tiles_.reset(new TrayTiles(GetPrimarySystemTray())); |
| 24 } | 26 } |
| 25 | 27 |
| 26 void TearDown() override { | 28 void TearDown() override { |
| 27 tray_tiles_.reset(); | 29 tray_tiles_.reset(); |
| 28 test::AshTestBase::TearDown(); | 30 test::NoSessionAshTestBase::TearDown(); |
| 29 } | 31 } |
| 30 | 32 |
| 31 views::CustomButton* GetSettingsButton() { | 33 views::CustomButton* GetSettingsButton() { |
| 32 return tray_tiles()->default_view_->settings_button_; | 34 return tray_tiles()->default_view_->settings_button_; |
| 33 } | 35 } |
| 34 | 36 |
| 35 views::CustomButton* GetHelpButton() { | 37 views::CustomButton* GetHelpButton() { |
| 36 return tray_tiles()->default_view_->help_button_; | 38 return tray_tiles()->default_view_->help_button_; |
| 37 } | 39 } |
| 38 | 40 |
| 39 views::CustomButton* GetLockButton() { | 41 views::CustomButton* GetLockButton() { |
| 40 return tray_tiles()->default_view_->lock_button_; | 42 return tray_tiles()->default_view_->lock_button_; |
| 41 } | 43 } |
| 42 | 44 |
| 43 views::CustomButton* GetPowerButton() { | 45 views::CustomButton* GetPowerButton() { |
| 44 return tray_tiles()->default_view_->power_button_; | 46 return tray_tiles()->default_view_->power_button_; |
| 45 } | 47 } |
| 46 | 48 |
| 47 TrayTiles* tray_tiles() { return tray_tiles_.get(); } | 49 TrayTiles* tray_tiles() { return tray_tiles_.get(); } |
| 48 | 50 |
| 49 private: | 51 private: |
| 50 std::unique_ptr<TrayTiles> tray_tiles_; | 52 std::unique_ptr<TrayTiles> tray_tiles_; |
| 51 | 53 |
| 52 DISALLOW_COPY_AND_ASSIGN(TrayTilesTest); | 54 DISALLOW_COPY_AND_ASSIGN(TrayTilesTest); |
| 53 }; | 55 }; |
| 54 | 56 |
| 55 TEST_F(TrayTilesTest, ButtonStatesWithAddingUser) { | 57 // Settings buttons are disabled before login. |
| 58 TEST_F(TrayTilesTest, ButtonStatesNotLoggedIn) { |
| 59 std::unique_ptr<views::View> default_view( |
| 60 tray_tiles()->CreateDefaultViewForTesting()); |
| 61 EXPECT_EQ(Button::STATE_DISABLED, GetSettingsButton()->state()); |
| 62 EXPECT_EQ(Button::STATE_DISABLED, GetHelpButton()->state()); |
| 63 EXPECT_EQ(Button::STATE_DISABLED, GetLockButton()->state()); |
| 64 EXPECT_EQ(Button::STATE_NORMAL, GetPowerButton()->state()); |
| 65 } |
| 66 |
| 67 // All buttons are enabled after login. |
| 68 TEST_F(TrayTilesTest, ButtonStatesLoggedIn) { |
| 69 SetSessionStarted(true); |
| 70 std::unique_ptr<views::View> default_view( |
| 71 tray_tiles()->CreateDefaultViewForTesting()); |
| 72 EXPECT_EQ(Button::STATE_NORMAL, GetSettingsButton()->state()); |
| 73 EXPECT_EQ(Button::STATE_NORMAL, GetHelpButton()->state()); |
| 74 EXPECT_EQ(Button::STATE_NORMAL, GetLockButton()->state()); |
| 75 EXPECT_EQ(Button::STATE_NORMAL, GetPowerButton()->state()); |
| 76 } |
| 77 |
| 78 // Settings buttons are disabled at the lock screen. |
| 79 TEST_F(TrayTilesTest, ButtonStatesLockScreen) { |
| 80 BlockUserSession(BLOCKED_BY_LOCK_SCREEN); |
| 81 std::unique_ptr<views::View> default_view( |
| 82 tray_tiles()->CreateDefaultViewForTesting()); |
| 83 EXPECT_EQ(Button::STATE_DISABLED, GetSettingsButton()->state()); |
| 84 EXPECT_EQ(Button::STATE_DISABLED, GetHelpButton()->state()); |
| 85 EXPECT_EQ(Button::STATE_DISABLED, GetLockButton()->state()); |
| 86 EXPECT_EQ(Button::STATE_NORMAL, GetPowerButton()->state()); |
| 87 } |
| 88 |
| 89 // Settings buttons are disabled when adding a second multiprofile user. |
| 90 TEST_F(TrayTilesTest, ButtonStatesAddingUser) { |
| 56 SetUserAddingScreenRunning(true); | 91 SetUserAddingScreenRunning(true); |
| 57 std::unique_ptr<views::View> default_view( | 92 std::unique_ptr<views::View> default_view( |
| 58 tray_tiles()->CreateDefaultViewForTesting(LoginStatus::USER)); | 93 tray_tiles()->CreateDefaultViewForTesting()); |
| 59 EXPECT_EQ(GetSettingsButton()->state(), views::Button::STATE_DISABLED); | 94 EXPECT_EQ(Button::STATE_DISABLED, GetSettingsButton()->state()); |
| 60 EXPECT_EQ(GetHelpButton()->state(), views::Button::STATE_DISABLED); | 95 EXPECT_EQ(Button::STATE_DISABLED, GetHelpButton()->state()); |
| 61 EXPECT_EQ(GetLockButton()->state(), views::Button::STATE_DISABLED); | 96 EXPECT_EQ(Button::STATE_DISABLED, GetLockButton()->state()); |
| 62 EXPECT_EQ(GetPowerButton()->state(), views::Button::STATE_NORMAL); | 97 EXPECT_EQ(Button::STATE_NORMAL, GetPowerButton()->state()); |
| 63 } | 98 } |
| 64 | 99 |
| 65 TEST_F(TrayTilesTest, ButtonStatesWithLoginStatusNotLoggedIn) { | 100 // Settings buttons are disabled when adding a supervised user. |
| 101 TEST_F(TrayTilesTest, ButtonStatesSupervisedUserFlow) { |
| 102 // Simulate a supervised user session with disabled settings. |
| 103 const bool enable_settings = false; |
| 104 GetSessionControllerClient()->AddUserSession("foo@example.com", |
| 105 enable_settings); |
| 66 std::unique_ptr<views::View> default_view( | 106 std::unique_ptr<views::View> default_view( |
| 67 tray_tiles()->CreateDefaultViewForTesting(LoginStatus::NOT_LOGGED_IN)); | 107 tray_tiles()->CreateDefaultViewForTesting()); |
| 68 EXPECT_EQ(GetSettingsButton()->state(), views::Button::STATE_DISABLED); | 108 EXPECT_EQ(Button::STATE_DISABLED, GetSettingsButton()->state()); |
| 69 EXPECT_EQ(GetHelpButton()->state(), views::Button::STATE_DISABLED); | 109 EXPECT_EQ(Button::STATE_DISABLED, GetHelpButton()->state()); |
| 70 EXPECT_EQ(GetLockButton()->state(), views::Button::STATE_DISABLED); | 110 EXPECT_EQ(Button::STATE_DISABLED, GetLockButton()->state()); |
| 71 EXPECT_EQ(GetPowerButton()->state(), views::Button::STATE_NORMAL); | 111 EXPECT_EQ(Button::STATE_NORMAL, GetPowerButton()->state()); |
| 72 } | |
| 73 | |
| 74 TEST_F(TrayTilesTest, ButtonStatesWithLoginStatusLocked) { | |
| 75 std::unique_ptr<views::View> default_view( | |
| 76 tray_tiles()->CreateDefaultViewForTesting(LoginStatus::LOCKED)); | |
| 77 EXPECT_EQ(GetSettingsButton()->state(), views::Button::STATE_DISABLED); | |
| 78 EXPECT_EQ(GetHelpButton()->state(), views::Button::STATE_DISABLED); | |
| 79 EXPECT_EQ(GetLockButton()->state(), views::Button::STATE_DISABLED); | |
| 80 EXPECT_EQ(GetPowerButton()->state(), views::Button::STATE_NORMAL); | |
| 81 } | |
| 82 | |
| 83 TEST_F(TrayTilesTest, ButtonStatesWithLoginStatusUser) { | |
| 84 std::unique_ptr<views::View> default_view( | |
| 85 tray_tiles()->CreateDefaultViewForTesting(LoginStatus::USER)); | |
| 86 EXPECT_EQ(GetSettingsButton()->state(), views::Button::STATE_NORMAL); | |
| 87 EXPECT_EQ(GetHelpButton()->state(), views::Button::STATE_NORMAL); | |
| 88 EXPECT_EQ(GetLockButton()->state(), views::Button::STATE_NORMAL); | |
| 89 EXPECT_EQ(GetPowerButton()->state(), views::Button::STATE_NORMAL); | |
| 90 } | 112 } |
| 91 | 113 |
| 92 } // namespace ash | 114 } // namespace ash |
| OLD | NEW |