| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h" | 8 #include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h" |
| 9 #include "chrome/browser/chromeos/cros/mock_network_library.h" | 9 #include "chrome/browser/chromeos/cros/mock_network_library.h" |
| 10 #include "chrome/browser/chromeos/login/mock_authenticator.h" | 10 #include "chrome/browser/chromeos/login/mock_authenticator.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 // Wait until the two conditions are met. | 57 // Wait until the two conditions are met. |
| 58 void Wait(bool locker_state, bool fullscreen) { | 58 void Wait(bool locker_state, bool fullscreen) { |
| 59 running_ = true; | 59 running_ = true; |
| 60 scoped_ptr<chromeos::test::ScreenLockerTester> | 60 scoped_ptr<chromeos::test::ScreenLockerTester> |
| 61 tester(chromeos::ScreenLocker::GetTester()); | 61 tester(chromeos::ScreenLocker::GetTester()); |
| 62 while (tester->IsLocked() != locker_state || | 62 while (tester->IsLocked() != locker_state || |
| 63 browser_->window()->IsFullscreen() != fullscreen) { | 63 browser_->window()->IsFullscreen() != fullscreen) { |
| 64 content::RunMessageLoop(); | 64 content::RunMessageLoop(); |
| 65 } | 65 } |
| 66 // Make sure all pending tasks are executed. | 66 // Make sure all pending tasks are executed. |
| 67 ui_test_utils::RunAllPendingInMessageLoop(); | 67 content::RunAllPendingInMessageLoop(); |
| 68 running_ = false; | 68 running_ = false; |
| 69 } | 69 } |
| 70 | 70 |
| 71 private: | 71 private: |
| 72 Browser* browser_; | 72 Browser* browser_; |
| 73 content::NotificationRegistrar registrar_; | 73 content::NotificationRegistrar registrar_; |
| 74 | 74 |
| 75 // Are we currently running the message loop? | 75 // Are we currently running the message loop? |
| 76 bool running_; | 76 bool running_; |
| 77 | 77 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 // Test to make sure that the widget is actually appearing and is of | 148 // Test to make sure that the widget is actually appearing and is of |
| 149 // reasonable size, preventing a regression of | 149 // reasonable size, preventing a regression of |
| 150 // http://code.google.com/p/chromium-os/issues/detail?id=5987 | 150 // http://code.google.com/p/chromium-os/issues/detail?id=5987 |
| 151 gfx::Rect lock_bounds = tester->GetChildWidget()->GetWindowBoundsInScreen(); | 151 gfx::Rect lock_bounds = tester->GetChildWidget()->GetWindowBoundsInScreen(); |
| 152 EXPECT_GT(lock_bounds.width(), 10); | 152 EXPECT_GT(lock_bounds.width(), 10); |
| 153 EXPECT_GT(lock_bounds.height(), 10); | 153 EXPECT_GT(lock_bounds.height(), 10); |
| 154 | 154 |
| 155 tester->InjectMockAuthenticator(UserManager::kStubUser, "pass"); | 155 tester->InjectMockAuthenticator(UserManager::kStubUser, "pass"); |
| 156 EXPECT_TRUE(tester->IsLocked()); | 156 EXPECT_TRUE(tester->IsLocked()); |
| 157 tester->EnterPassword("fail"); | 157 tester->EnterPassword("fail"); |
| 158 ui_test_utils::RunAllPendingInMessageLoop(); | 158 content::RunAllPendingInMessageLoop(); |
| 159 EXPECT_TRUE(tester->IsLocked()); | 159 EXPECT_TRUE(tester->IsLocked()); |
| 160 tester->EnterPassword("pass"); | 160 tester->EnterPassword("pass"); |
| 161 ui_test_utils::RunAllPendingInMessageLoop(); | 161 content::RunAllPendingInMessageLoop(); |
| 162 // Successful authentication simply send a unlock request to PowerManager. | 162 // Successful authentication simply send a unlock request to PowerManager. |
| 163 EXPECT_TRUE(tester->IsLocked()); | 163 EXPECT_TRUE(tester->IsLocked()); |
| 164 | 164 |
| 165 // Emulate LockScreen request from SessionManager. | 165 // Emulate LockScreen request from SessionManager. |
| 166 // TODO(oshima): Find out better way to handle this in mock. | 166 // TODO(oshima): Find out better way to handle this in mock. |
| 167 ScreenLocker::Hide(); | 167 ScreenLocker::Hide(); |
| 168 ui_test_utils::RunAllPendingInMessageLoop(); | 168 content::RunAllPendingInMessageLoop(); |
| 169 EXPECT_FALSE(tester->IsLocked()); | 169 EXPECT_FALSE(tester->IsLocked()); |
| 170 } | 170 } |
| 171 | 171 |
| 172 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestFullscreenExit) { | 172 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestFullscreenExit) { |
| 173 EXPECT_CALL(*mock_power_manager_client_, NotifyScreenLockCompleted()) | 173 EXPECT_CALL(*mock_power_manager_client_, NotifyScreenLockCompleted()) |
| 174 .Times(1) | 174 .Times(1) |
| 175 .RetiresOnSaturation(); | 175 .RetiresOnSaturation(); |
| 176 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); | 176 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); |
| 177 { | 177 { |
| 178 Waiter waiter(browser()); | 178 Waiter waiter(browser()); |
| 179 browser()->fullscreen_controller()->ToggleFullscreenMode(); | 179 browser()->fullscreen_controller()->ToggleFullscreenMode(); |
| 180 waiter.Wait(false /* not locked */, true /* full screen */); | 180 waiter.Wait(false /* not locked */, true /* full screen */); |
| 181 EXPECT_TRUE(browser()->window()->IsFullscreen()); | 181 EXPECT_TRUE(browser()->window()->IsFullscreen()); |
| 182 EXPECT_FALSE(tester->IsLocked()); | 182 EXPECT_FALSE(tester->IsLocked()); |
| 183 } | 183 } |
| 184 { | 184 { |
| 185 Waiter waiter(browser()); | 185 Waiter waiter(browser()); |
| 186 ScreenLocker::Show(); | 186 ScreenLocker::Show(); |
| 187 tester->EmulateWindowManagerReady(); | 187 tester->EmulateWindowManagerReady(); |
| 188 waiter.Wait(true /* locked */, false /* full screen */); | 188 waiter.Wait(true /* locked */, false /* full screen */); |
| 189 EXPECT_FALSE(browser()->window()->IsFullscreen()); | 189 EXPECT_FALSE(browser()->window()->IsFullscreen()); |
| 190 EXPECT_TRUE(tester->IsLocked()); | 190 EXPECT_TRUE(tester->IsLocked()); |
| 191 } | 191 } |
| 192 tester->InjectMockAuthenticator(UserManager::kStubUser, "pass"); | 192 tester->InjectMockAuthenticator(UserManager::kStubUser, "pass"); |
| 193 tester->EnterPassword("pass"); | 193 tester->EnterPassword("pass"); |
| 194 ui_test_utils::RunAllPendingInMessageLoop(); | 194 content::RunAllPendingInMessageLoop(); |
| 195 ScreenLocker::Hide(); | 195 ScreenLocker::Hide(); |
| 196 ui_test_utils::RunAllPendingInMessageLoop(); | 196 content::RunAllPendingInMessageLoop(); |
| 197 EXPECT_FALSE(tester->IsLocked()); | 197 EXPECT_FALSE(tester->IsLocked()); |
| 198 } | 198 } |
| 199 | 199 |
| 200 void SimulateKeyPress(views::Widget* widget, ui::KeyboardCode key_code) { | 200 void SimulateKeyPress(views::Widget* widget, ui::KeyboardCode key_code) { |
| 201 ui_controls::SendKeyPress(widget->GetNativeWindow(), | 201 ui_controls::SendKeyPress(widget->GetNativeWindow(), |
| 202 key_code, false, false, false, false); | 202 key_code, false, false, false, false); |
| 203 } | 203 } |
| 204 | 204 |
| 205 void UnlockKeyPress(views::Widget* widget) { | 205 void UnlockKeyPress(views::Widget* widget) { |
| 206 SimulateKeyPress(widget, ui::VKEY_SPACE); | 206 SimulateKeyPress(widget, ui::VKEY_SPACE); |
| 207 } | 207 } |
| 208 | 208 |
| 209 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestShowTwice) { | 209 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, TestShowTwice) { |
| 210 EXPECT_CALL(*mock_power_manager_client_, NotifyScreenLockCompleted()) | 210 EXPECT_CALL(*mock_power_manager_client_, NotifyScreenLockCompleted()) |
| 211 .Times(2) | 211 .Times(2) |
| 212 .RetiresOnSaturation(); | 212 .RetiresOnSaturation(); |
| 213 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); | 213 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); |
| 214 LockScreen(tester.get()); | 214 LockScreen(tester.get()); |
| 215 | 215 |
| 216 // Ensure there's a profile or this test crashes. | 216 // Ensure there's a profile or this test crashes. |
| 217 ProfileManager::GetDefaultProfile(); | 217 ProfileManager::GetDefaultProfile(); |
| 218 | 218 |
| 219 // Calling Show again simply send LockCompleted signal. | 219 // Calling Show again simply send LockCompleted signal. |
| 220 ScreenLocker::Show(); | 220 ScreenLocker::Show(); |
| 221 EXPECT_TRUE(tester->IsLocked()); | 221 EXPECT_TRUE(tester->IsLocked()); |
| 222 | 222 |
| 223 // Close the locker to match expectations. | 223 // Close the locker to match expectations. |
| 224 ScreenLocker::Hide(); | 224 ScreenLocker::Hide(); |
| 225 ui_test_utils::RunAllPendingInMessageLoop(); | 225 content::RunAllPendingInMessageLoop(); |
| 226 EXPECT_FALSE(tester->IsLocked()); | 226 EXPECT_FALSE(tester->IsLocked()); |
| 227 } | 227 } |
| 228 | 228 |
| 229 // TODO(flackr): Find out why the RenderView isn't getting the escape press | 229 // TODO(flackr): Find out why the RenderView isn't getting the escape press |
| 230 // and re-enable this test (currently this test is flaky). | 230 // and re-enable this test (currently this test is flaky). |
| 231 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, DISABLED_TestEscape) { | 231 IN_PROC_BROWSER_TEST_F(ScreenLockerTest, DISABLED_TestEscape) { |
| 232 EXPECT_CALL(*mock_power_manager_client_, NotifyScreenLockCompleted()) | 232 EXPECT_CALL(*mock_power_manager_client_, NotifyScreenLockCompleted()) |
| 233 .Times(1) | 233 .Times(1) |
| 234 .RetiresOnSaturation(); | 234 .RetiresOnSaturation(); |
| 235 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); | 235 scoped_ptr<test::ScreenLockerTester> tester(ScreenLocker::GetTester()); |
| 236 LockScreen(tester.get()); | 236 LockScreen(tester.get()); |
| 237 | 237 |
| 238 // Ensure there's a profile or this test crashes. | 238 // Ensure there's a profile or this test crashes. |
| 239 ProfileManager::GetDefaultProfile(); | 239 ProfileManager::GetDefaultProfile(); |
| 240 | 240 |
| 241 tester->SetPassword("password"); | 241 tester->SetPassword("password"); |
| 242 EXPECT_EQ("password", tester->GetPassword()); | 242 EXPECT_EQ("password", tester->GetPassword()); |
| 243 // Escape clears the password. | 243 // Escape clears the password. |
| 244 SimulateKeyPress(tester->GetWidget(), ui::VKEY_ESCAPE); | 244 SimulateKeyPress(tester->GetWidget(), ui::VKEY_ESCAPE); |
| 245 ui_test_utils::RunAllPendingInMessageLoop(); | 245 content::RunAllPendingInMessageLoop(); |
| 246 EXPECT_EQ("", tester->GetPassword()); | 246 EXPECT_EQ("", tester->GetPassword()); |
| 247 | 247 |
| 248 // Close the locker to match expectations. | 248 // Close the locker to match expectations. |
| 249 ScreenLocker::Hide(); | 249 ScreenLocker::Hide(); |
| 250 ui_test_utils::RunAllPendingInMessageLoop(); | 250 content::RunAllPendingInMessageLoop(); |
| 251 EXPECT_FALSE(tester->IsLocked()); | 251 EXPECT_FALSE(tester->IsLocked()); |
| 252 } | 252 } |
| 253 | 253 |
| 254 } // namespace chromeos | 254 } // namespace chromeos |
| OLD | NEW |