| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/scoped_ptr.h" | 6 #include "base/scoped_ptr.h" |
| 7 #include "chrome/browser/automation/ui_controls.h" | 7 #include "chrome/browser/automation/ui_controls.h" |
| 8 #include "chrome/browser/chrome_thread.h" | 8 #include "chrome/browser/chrome_thread.h" |
| 9 #include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h" | 9 #include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h" |
| 10 #include "chrome/browser/chromeos/cros/mock_screen_lock_library.h" | 10 #include "chrome/browser/chromeos/cros/mock_screen_lock_library.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 | 25 |
| 26 class ScreenLockerTest : public CrosInProcessBrowserTest { | 26 class ScreenLockerTest : public CrosInProcessBrowserTest { |
| 27 public: | 27 public: |
| 28 ScreenLockerTest() {} | 28 ScreenLockerTest() {} |
| 29 | 29 |
| 30 protected: | 30 protected: |
| 31 | 31 |
| 32 // Test the no password mode with different unlock scheme given by | 32 // Test the no password mode with different unlock scheme given by |
| 33 // |unlock| function. | 33 // |unlock| function. |
| 34 void TestNoPassword(void (unlock)(views::Widget*)) { | 34 void TestNoPassword(void (unlock)(views::Widget*)) { |
| 35 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenUnlockRequested()) |
| 36 .Times(1) |
| 37 .RetiresOnSaturation(); |
| 38 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenLockCompleted()) |
| 39 .Times(1) |
| 40 .RetiresOnSaturation(); |
| 35 UserManager::Get()->OffTheRecordUserLoggedIn(); | 41 UserManager::Get()->OffTheRecordUserLoggedIn(); |
| 36 ScreenLocker::Show(); | 42 ScreenLocker::Show(); |
| 37 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); | 43 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); |
| 38 tester->EmulateWindowManagerReady(); | 44 tester->EmulateWindowManagerReady(); |
| 39 ui_test_utils::WaitForNotification( | 45 ui_test_utils::WaitForNotification( |
| 40 NotificationType::SCREEN_LOCK_STATE_CHANGED); | 46 NotificationType::SCREEN_LOCK_STATE_CHANGED); |
| 41 EXPECT_TRUE(tester->IsOpen()); | 47 EXPECT_TRUE(tester->IsOpen()); |
| 42 tester->InjectMockAuthenticator("", ""); | 48 tester->InjectMockAuthenticator("", ""); |
| 43 | 49 |
| 44 unlock(tester->GetWidget()); | 50 unlock(tester->GetWidget()); |
| 45 | 51 |
| 46 ui_test_utils::RunAllPendingInMessageLoop(); | 52 ui_test_utils::RunAllPendingInMessageLoop(); |
| 47 EXPECT_TRUE(tester->IsOpen()); | 53 EXPECT_TRUE(tester->IsOpen()); |
| 48 | 54 |
| 49 // Emulate LockScreen request from PowerManager (via SessionManager). | 55 // Emulate LockScreen request from PowerManager (via SessionManager). |
| 50 ScreenLocker::Hide(); | 56 ScreenLocker::Hide(); |
| 51 ui_test_utils::RunAllPendingInMessageLoop(); | 57 ui_test_utils::RunAllPendingInMessageLoop(); |
| 52 EXPECT_FALSE(tester->IsOpen()); | 58 EXPECT_FALSE(tester->IsOpen()); |
| 53 } | 59 } |
| 54 | 60 |
| 55 private: | 61 private: |
| 56 virtual void SetUpInProcessBrowserTestFixture() { | 62 virtual void SetUpInProcessBrowserTestFixture() { |
| 57 InitStatusAreaMocks(); | 63 InitStatusAreaMocks(); |
| 58 InitMockScreenLockLibrary(); | 64 InitMockScreenLockLibrary(); |
| 59 EXPECT_CALL(*mock_screen_lock_library_, AddObserver(testing::_)) | 65 EXPECT_CALL(*mock_screen_lock_library_, AddObserver(testing::_)) |
| 60 .Times(1) | 66 .Times(1) |
| 61 .RetiresOnSaturation(); | 67 .RetiresOnSaturation(); |
| 62 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenLockCompleted()) | |
| 63 .Times(1) | |
| 64 .RetiresOnSaturation(); | |
| 65 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenUnlockRequested()) | |
| 66 .Times(1) | |
| 67 .RetiresOnSaturation(); | |
| 68 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenUnlockCompleted()) | 68 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenUnlockCompleted()) |
| 69 .Times(1) | 69 .Times(1) |
| 70 .RetiresOnSaturation(); | 70 .RetiresOnSaturation(); |
| 71 // Expectations for the status are on the screen lock window. | 71 // Expectations for the status are on the screen lock window. |
| 72 SetStatusAreaMocksExpectations(); | 72 SetStatusAreaMocksExpectations(); |
| 73 // Expectations for the status area on the browser window. | 73 // Expectations for the status area on the browser window. |
| 74 SetStatusAreaMocksExpectations(); | 74 SetStatusAreaMocksExpectations(); |
| 75 } | 75 } |
| 76 | 76 |
| 77 virtual void SetUpCommandLine(CommandLine* command_line) { | 77 virtual void SetUpCommandLine(CommandLine* command_line) { |
| 78 command_line->AppendSwitchWithValue(switches::kLoginProfile, "user"); | 78 command_line->AppendSwitchWithValue(switches::kLoginProfile, "user"); |
| 79 command_line->AppendSwitch(switches::kNoFirstRun); | 79 command_line->AppendSwitch(switches::kNoFirstRun); |
| 80 } | 80 } |
| 81 | 81 |
| 82 DISALLOW_COPY_AND_ASSIGN(ScreenLockerTest); | 82 DISALLOW_COPY_AND_ASSIGN(ScreenLockerTest); |
| 83 }; | 83 }; |
| 84 | 84 |
| 85 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestBasic) { | 85 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestBasic) { |
| 86 EXPECT_CALL(*mock_input_method_library_, GetNumActiveInputMethods()) | 86 EXPECT_CALL(*mock_input_method_library_, GetNumActiveInputMethods()) |
| 87 .Times(1) | 87 .Times(1) |
| 88 .WillRepeatedly((testing::Return(0))) | 88 .WillRepeatedly((testing::Return(0))) |
| 89 .RetiresOnSaturation(); | 89 .RetiresOnSaturation(); |
| 90 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenUnlockRequested()) |
| 91 .Times(1) |
| 92 .RetiresOnSaturation(); |
| 93 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenLockCompleted()) |
| 94 .Times(1) |
| 95 .RetiresOnSaturation(); |
| 90 UserManager::Get()->UserLoggedIn("user"); | 96 UserManager::Get()->UserLoggedIn("user"); |
| 91 ScreenLocker::Show(); | 97 ScreenLocker::Show(); |
| 92 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); | 98 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); |
| 93 tester->EmulateWindowManagerReady(); | 99 tester->EmulateWindowManagerReady(); |
| 94 ui_test_utils::WaitForNotification( | 100 ui_test_utils::WaitForNotification( |
| 95 NotificationType::SCREEN_LOCK_STATE_CHANGED); | 101 NotificationType::SCREEN_LOCK_STATE_CHANGED); |
| 96 | 102 |
| 97 tester->InjectMockAuthenticator("user", "pass"); | 103 tester->InjectMockAuthenticator("user", "pass"); |
| 98 EXPECT_TRUE(tester->IsOpen()); | 104 EXPECT_TRUE(tester->IsOpen()); |
| 99 tester->EnterPassword("fail"); | 105 tester->EnterPassword("fail"); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 129 | 135 |
| 130 void KeyPress(views::Widget* widget) { | 136 void KeyPress(views::Widget* widget) { |
| 131 ui_controls::SendKeyPress(GTK_WINDOW(widget->GetNativeView()), | 137 ui_controls::SendKeyPress(GTK_WINDOW(widget->GetNativeView()), |
| 132 base::VKEY_SPACE, false, false, false, false); | 138 base::VKEY_SPACE, false, false, false, false); |
| 133 } | 139 } |
| 134 | 140 |
| 135 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestNoPasswordWithKeyPress) { | 141 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestNoPasswordWithKeyPress) { |
| 136 TestNoPassword(KeyPress); | 142 TestNoPassword(KeyPress); |
| 137 } | 143 } |
| 138 | 144 |
| 145 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestShowTwice) { |
| 146 EXPECT_CALL(*mock_screen_lock_library_, NotifyScreenLockCompleted()) |
| 147 .Times(2) |
| 148 .RetiresOnSaturation(); |
| 149 |
| 150 UserManager::Get()->UserLoggedIn("user"); |
| 151 ScreenLocker::Show(); |
| 152 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); |
| 153 tester->EmulateWindowManagerReady(); |
| 154 ui_test_utils::WaitForNotification( |
| 155 NotificationType::SCREEN_LOCK_STATE_CHANGED); |
| 156 EXPECT_TRUE(tester->IsOpen()); |
| 157 |
| 158 // Calling Show again simply send LockCompleted signal. |
| 159 ScreenLocker::Show(); |
| 160 EXPECT_TRUE(tester->IsOpen()); |
| 161 |
| 162 // Close the locker to match expectations. |
| 163 ScreenLocker::Hide(); |
| 164 ui_test_utils::RunAllPendingInMessageLoop(); |
| 165 EXPECT_FALSE(tester->IsOpen()); |
| 166 } |
| 167 |
| 139 } // namespace chromeos | 168 } // namespace chromeos |
| OLD | NEW |