| 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 "chrome/browser/chromeos/login/wizard_controller.h" | 5 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 6 | 6 |
| 7 #include "ash/common/accessibility_types.h" | 7 #include "ash/common/accessibility_types.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 return; | 509 return; |
| 510 | 510 |
| 511 runner->Run(); | 511 runner->Run(); |
| 512 } | 512 } |
| 513 | 513 |
| 514 void ResetAutoEnrollmentCheckScreen() { | 514 void ResetAutoEnrollmentCheckScreen() { |
| 515 WizardController::default_controller()->screens_.erase( | 515 WizardController::default_controller()->screens_.erase( |
| 516 OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); | 516 OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); |
| 517 } | 517 } |
| 518 | 518 |
| 519 void TestControlFlowMain() { |
| 520 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); |
| 521 |
| 522 WaitUntilJSIsReady(); |
| 523 |
| 524 // Check visibility of the header bar. |
| 525 ASSERT_FALSE(JSExecuteBooleanExpression("$('login-header-bar').hidden")); |
| 526 |
| 527 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 528 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 529 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); |
| 530 |
| 531 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); |
| 532 |
| 533 // Header bar should still be visible. |
| 534 ASSERT_FALSE(JSExecuteBooleanExpression("$('login-header-bar').hidden")); |
| 535 |
| 536 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); |
| 537 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); |
| 538 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); |
| 539 // Enable TimeZone resolve |
| 540 InitTimezoneResolver(); |
| 541 OnExit(*mock_eula_screen_, ScreenExitCode::EULA_ACCEPTED); |
| 542 EXPECT_TRUE(GetGeolocationProvider()); |
| 543 |
| 544 // Let update screen smooth time process (time = 0ms). |
| 545 content::RunAllPendingInMessageLoop(); |
| 546 |
| 547 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_UPDATE); |
| 548 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); |
| 549 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); |
| 550 OnExit(*mock_update_screen_, ScreenExitCode::UPDATE_INSTALLED); |
| 551 |
| 552 CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); |
| 553 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(0); |
| 554 EXPECT_CALL(*mock_eula_screen_, Show()).Times(0); |
| 555 OnExit(*mock_auto_enrollment_check_screen_, |
| 556 ScreenExitCode::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED); |
| 557 |
| 558 EXPECT_FALSE(ExistingUserController::current_controller() == NULL); |
| 559 EXPECT_EQ("ethernet,wifi,cellular", NetworkHandler::Get() |
| 560 ->network_state_handler() |
| 561 ->GetCheckPortalListForTest()); |
| 562 |
| 563 WaitUntilTimezoneResolved(); |
| 564 EXPECT_EQ( |
| 565 "America/Anchorage", |
| 566 base::UTF16ToUTF8(chromeos::system::TimezoneSettings::GetInstance() |
| 567 ->GetCurrentTimezoneID())); |
| 568 } |
| 569 |
| 519 linked_ptr<MockNetworkScreen> mock_network_screen_; | 570 linked_ptr<MockNetworkScreen> mock_network_screen_; |
| 520 MockOutShowHide<MockUpdateScreen, MockUpdateView>* mock_update_screen_; | 571 MockOutShowHide<MockUpdateScreen, MockUpdateView>* mock_update_screen_; |
| 521 MockOutShowHide<MockEulaScreen, MockEulaView>* mock_eula_screen_; | 572 MockOutShowHide<MockEulaScreen, MockEulaView>* mock_eula_screen_; |
| 522 MockOutShowHide<MockEnrollmentScreen, MockEnrollmentScreenView>* | 573 MockOutShowHide<MockEnrollmentScreen, MockEnrollmentScreenView>* |
| 523 mock_enrollment_screen_; | 574 mock_enrollment_screen_; |
| 524 MockOutShowHide<MockAutoEnrollmentCheckScreen, | 575 MockOutShowHide<MockAutoEnrollmentCheckScreen, |
| 525 MockAutoEnrollmentCheckScreenView>* | 576 MockAutoEnrollmentCheckScreenView>* |
| 526 mock_auto_enrollment_check_screen_; | 577 mock_auto_enrollment_check_screen_; |
| 527 MockOutShowHide<MockWrongHWIDScreen, MockWrongHWIDScreenView>* | 578 MockOutShowHide<MockWrongHWIDScreen, MockWrongHWIDScreenView>* |
| 528 mock_wrong_hwid_screen_; | 579 mock_wrong_hwid_screen_; |
| 529 MockOutShowHide<MockEnableDebuggingScreen, MockEnableDebuggingScreenView>* | 580 MockOutShowHide<MockEnableDebuggingScreen, MockEnableDebuggingScreenView>* |
| 530 mock_enable_debugging_screen_; | 581 mock_enable_debugging_screen_; |
| 531 std::unique_ptr<MockDeviceDisabledScreenView> device_disabled_screen_view_; | 582 std::unique_ptr<MockDeviceDisabledScreenView> device_disabled_screen_view_; |
| 532 | 583 |
| 533 private: | 584 private: |
| 534 NetworkPortalDetectorTestImpl* network_portal_detector_; | 585 NetworkPortalDetectorTestImpl* network_portal_detector_; |
| 535 | 586 |
| 536 // Use a test factory as a fallback so we don't have to deal with other | 587 // Use a test factory as a fallback so we don't have to deal with other |
| 537 // requests. | 588 // requests. |
| 538 std::unique_ptr<WizardControllerTestURLFetcherFactory> | 589 std::unique_ptr<WizardControllerTestURLFetcherFactory> |
| 539 fallback_fetcher_factory_; | 590 fallback_fetcher_factory_; |
| 540 std::unique_ptr<net::FakeURLFetcherFactory> fetcher_factory_; | 591 std::unique_ptr<net::FakeURLFetcherFactory> fetcher_factory_; |
| 541 | 592 |
| 542 DISALLOW_COPY_AND_ASSIGN(WizardControllerFlowTest); | 593 DISALLOW_COPY_AND_ASSIGN(WizardControllerFlowTest); |
| 543 }; | 594 }; |
| 544 | 595 |
| 545 IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowMain) { | 596 IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowMain) { |
| 546 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); | 597 TestControlFlowMain(); |
| 547 | |
| 548 WaitUntilJSIsReady(); | |
| 549 | |
| 550 // Check visibility of the header bar. | |
| 551 ASSERT_FALSE(JSExecuteBooleanExpression("$('login-header-bar').hidden")); | |
| 552 | |
| 553 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | |
| 554 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | |
| 555 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); | |
| 556 | |
| 557 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); | |
| 558 | |
| 559 // Header bar should still be visible. | |
| 560 ASSERT_FALSE(JSExecuteBooleanExpression("$('login-header-bar').hidden")); | |
| 561 | |
| 562 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); | |
| 563 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); | |
| 564 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); | |
| 565 // Enable TimeZone resolve | |
| 566 InitTimezoneResolver(); | |
| 567 OnExit(*mock_eula_screen_, ScreenExitCode::EULA_ACCEPTED); | |
| 568 EXPECT_TRUE(GetGeolocationProvider()); | |
| 569 | |
| 570 // Let update screen smooth time process (time = 0ms). | |
| 571 content::RunAllPendingInMessageLoop(); | |
| 572 | |
| 573 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_UPDATE); | |
| 574 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); | |
| 575 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); | |
| 576 OnExit(*mock_update_screen_, ScreenExitCode::UPDATE_INSTALLED); | |
| 577 | |
| 578 CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); | |
| 579 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(0); | |
| 580 EXPECT_CALL(*mock_eula_screen_, Show()).Times(0); | |
| 581 OnExit(*mock_auto_enrollment_check_screen_, | |
| 582 ScreenExitCode::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED); | |
| 583 | |
| 584 EXPECT_FALSE(ExistingUserController::current_controller() == NULL); | |
| 585 EXPECT_EQ("ethernet,wifi,cellular", | |
| 586 NetworkHandler::Get()->network_state_handler() | |
| 587 ->GetCheckPortalListForTest()); | |
| 588 | |
| 589 WaitUntilTimezoneResolved(); | |
| 590 EXPECT_EQ("America/Anchorage", | |
| 591 base::UTF16ToUTF8(chromeos::system::TimezoneSettings::GetInstance() | |
| 592 ->GetCurrentTimezoneID())); | |
| 593 } | 598 } |
| 594 | 599 |
| 595 // This test verifies that if WizardController fails to apply a non-critical | 600 // This test verifies that if WizardController fails to apply a non-critical |
| 596 // update before the OOBE is marked complete, it allows the user to proceed to | 601 // update before the OOBE is marked complete, it allows the user to proceed to |
| 597 // log in. | 602 // log in. |
| 598 IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, | 603 IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, |
| 599 ControlFlowErrorUpdateNonCriticalUpdate) { | 604 ControlFlowErrorUpdateNonCriticalUpdate) { |
| 600 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); | 605 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); |
| 601 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(0); | 606 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(0); |
| 602 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | 607 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1292 WizardController::default_controller()->AdvanceToScreen( | 1297 WizardController::default_controller()->AdvanceToScreen( |
| 1293 OobeScreen::SCREEN_OOBE_ENROLLMENT); | 1298 OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 1294 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); | 1299 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 1295 } | 1300 } |
| 1296 | 1301 |
| 1297 IN_PROC_BROWSER_TEST_F(WizardControllerOobeResumeTest, | 1302 IN_PROC_BROWSER_TEST_F(WizardControllerOobeResumeTest, |
| 1298 ControlFlowResumeInterruptedOobe) { | 1303 ControlFlowResumeInterruptedOobe) { |
| 1299 EXPECT_EQ(OobeScreen::SCREEN_OOBE_ENROLLMENT, GetFirstScreen()); | 1304 EXPECT_EQ(OobeScreen::SCREEN_OOBE_ENROLLMENT, GetFirstScreen()); |
| 1300 } | 1305 } |
| 1301 | 1306 |
| 1307 class WizardControllerCellularFirstTest : public WizardControllerFlowTest { |
| 1308 protected: |
| 1309 WizardControllerCellularFirstTest() {} |
| 1310 |
| 1311 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 1312 command_line->AppendSwitch(switches::kCellularFirst); |
| 1313 } |
| 1314 |
| 1315 private: |
| 1316 DISALLOW_COPY_AND_ASSIGN(WizardControllerCellularFirstTest); |
| 1317 }; |
| 1318 |
| 1319 IN_PROC_BROWSER_TEST_F(WizardControllerCellularFirstTest, CellularFirstFlow) { |
| 1320 TestControlFlowMain(); |
| 1321 } |
| 1322 |
| 1302 // TODO(dzhioev): Add test emaulating device with wrong HWID. | 1323 // TODO(dzhioev): Add test emaulating device with wrong HWID. |
| 1303 | 1324 |
| 1304 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 | 1325 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 |
| 1305 | 1326 |
| 1306 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when | 1327 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when |
| 1307 // UI and logic is ready. http://crbug.com/127016 | 1328 // UI and logic is ready. http://crbug.com/127016 |
| 1308 | 1329 |
| 1309 // TODO(dzhioev): Add tests for controller/host pairing flow. | 1330 // TODO(dzhioev): Add tests for controller/host pairing flow. |
| 1310 // http://crbug.com/375191 | 1331 // http://crbug.com/375191 |
| 1311 | 1332 |
| 1312 // TODO(khmel): Add tests for ARC OptIn flow. | 1333 // TODO(khmel): Add tests for ARC OptIn flow. |
| 1313 // http://crbug.com/651144 | 1334 // http://crbug.com/651144 |
| 1314 static_assert(static_cast<int>(ScreenExitCode::EXIT_CODES_COUNT) == 25, | 1335 static_assert(static_cast<int>(ScreenExitCode::EXIT_CODES_COUNT) == 25, |
| 1315 "tests for new control flow are missing"); | 1336 "tests for new control flow are missing"); |
| 1316 | 1337 |
| 1317 } // namespace chromeos | 1338 } // namespace chromeos |
| OLD | NEW |