| 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 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 return; | 510 return; |
| 511 | 511 |
| 512 runner->Run(); | 512 runner->Run(); |
| 513 } | 513 } |
| 514 | 514 |
| 515 void ResetAutoEnrollmentCheckScreen() { | 515 void ResetAutoEnrollmentCheckScreen() { |
| 516 WizardController::default_controller()->screens_.erase( | 516 WizardController::default_controller()->screens_.erase( |
| 517 OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); | 517 OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); |
| 518 } | 518 } |
| 519 | 519 |
| 520 void TestControlFlowMain() { |
| 521 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); |
| 522 |
| 523 WaitUntilJSIsReady(); |
| 524 |
| 525 // Check visibility of the header bar. |
| 526 ASSERT_FALSE(JSExecuteBooleanExpression("$('login-header-bar').hidden")); |
| 527 |
| 528 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 529 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 530 OnExit(*mock_network_screen_, BaseScreenDelegate::NETWORK_CONNECTED); |
| 531 |
| 532 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); |
| 533 |
| 534 // Header bar should still be visible. |
| 535 ASSERT_FALSE(JSExecuteBooleanExpression("$('login-header-bar').hidden")); |
| 536 |
| 537 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); |
| 538 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); |
| 539 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); |
| 540 // Enable TimeZone resolve |
| 541 InitTimezoneResolver(); |
| 542 OnExit(*mock_eula_screen_, BaseScreenDelegate::EULA_ACCEPTED); |
| 543 EXPECT_TRUE(GetGeolocationProvider()); |
| 544 |
| 545 // Let update screen smooth time process (time = 0ms). |
| 546 content::RunAllPendingInMessageLoop(); |
| 547 |
| 548 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_UPDATE); |
| 549 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); |
| 550 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); |
| 551 OnExit(*mock_update_screen_, BaseScreenDelegate::UPDATE_INSTALLED); |
| 552 |
| 553 CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); |
| 554 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(0); |
| 555 EXPECT_CALL(*mock_eula_screen_, Show()).Times(0); |
| 556 OnExit(*mock_auto_enrollment_check_screen_, |
| 557 BaseScreenDelegate::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED); |
| 558 |
| 559 EXPECT_FALSE(ExistingUserController::current_controller() == NULL); |
| 560 EXPECT_EQ("ethernet,wifi,cellular", NetworkHandler::Get() |
| 561 ->network_state_handler() |
| 562 ->GetCheckPortalListForTest()); |
| 563 |
| 564 WaitUntilTimezoneResolved(); |
| 565 EXPECT_EQ( |
| 566 "America/Anchorage", |
| 567 base::UTF16ToUTF8(chromeos::system::TimezoneSettings::GetInstance() |
| 568 ->GetCurrentTimezoneID())); |
| 569 } |
| 570 |
| 520 linked_ptr<MockNetworkScreen> mock_network_screen_; | 571 linked_ptr<MockNetworkScreen> mock_network_screen_; |
| 521 MockOutShowHide<MockUpdateScreen, MockUpdateView>* mock_update_screen_; | 572 MockOutShowHide<MockUpdateScreen, MockUpdateView>* mock_update_screen_; |
| 522 MockOutShowHide<MockEulaScreen, MockEulaView>* mock_eula_screen_; | 573 MockOutShowHide<MockEulaScreen, MockEulaView>* mock_eula_screen_; |
| 523 MockOutShowHide<MockEnrollmentScreen, | 574 MockOutShowHide<MockEnrollmentScreen, |
| 524 MockEnrollmentScreenActor>* mock_enrollment_screen_; | 575 MockEnrollmentScreenActor>* mock_enrollment_screen_; |
| 525 MockOutShowHide<MockAutoEnrollmentCheckScreen, | 576 MockOutShowHide<MockAutoEnrollmentCheckScreen, |
| 526 MockAutoEnrollmentCheckScreenActor>* mock_auto_enrollment_check_screen_; | 577 MockAutoEnrollmentCheckScreenActor>* mock_auto_enrollment_check_screen_; |
| 527 MockOutShowHide<MockWrongHWIDScreen, MockWrongHWIDScreenActor>* | 578 MockOutShowHide<MockWrongHWIDScreen, MockWrongHWIDScreenActor>* |
| 528 mock_wrong_hwid_screen_; | 579 mock_wrong_hwid_screen_; |
| 529 MockOutShowHide<MockEnableDebuggingScreen, | 580 MockOutShowHide<MockEnableDebuggingScreen, |
| 530 MockEnableDebuggingScreenActor>* mock_enable_debugging_screen_; | 581 MockEnableDebuggingScreenActor>* mock_enable_debugging_screen_; |
| 531 std::unique_ptr<MockDeviceDisabledScreenActor> device_disabled_screen_actor_; | 582 std::unique_ptr<MockDeviceDisabledScreenActor> device_disabled_screen_actor_; |
| 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_, BaseScreenDelegate::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_, BaseScreenDelegate::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_, BaseScreenDelegate::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 BaseScreenDelegate::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 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1294 WizardController::default_controller()->AdvanceToScreen( | 1299 WizardController::default_controller()->AdvanceToScreen( |
| 1295 OobeScreen::SCREEN_OOBE_ENROLLMENT); | 1300 OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 1296 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); | 1301 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 1297 } | 1302 } |
| 1298 | 1303 |
| 1299 IN_PROC_BROWSER_TEST_F(WizardControllerOobeResumeTest, | 1304 IN_PROC_BROWSER_TEST_F(WizardControllerOobeResumeTest, |
| 1300 ControlFlowResumeInterruptedOobe) { | 1305 ControlFlowResumeInterruptedOobe) { |
| 1301 EXPECT_EQ(OobeScreen::SCREEN_OOBE_ENROLLMENT, GetFirstScreen()); | 1306 EXPECT_EQ(OobeScreen::SCREEN_OOBE_ENROLLMENT, GetFirstScreen()); |
| 1302 } | 1307 } |
| 1303 | 1308 |
| 1309 class WizardControllerCellularFirstTest : public WizardControllerFlowTest { |
| 1310 protected: |
| 1311 WizardControllerCellularFirstTest() {} |
| 1312 |
| 1313 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 1314 command_line->AppendSwitch(switches::kCellularFirst); |
| 1315 } |
| 1316 |
| 1317 private: |
| 1318 DISALLOW_COPY_AND_ASSIGN(WizardControllerCellularFirstTest); |
| 1319 }; |
| 1320 |
| 1321 IN_PROC_BROWSER_TEST_F(WizardControllerCellularFirstTest, CellularFirstFlow) { |
| 1322 TestControlFlowMain(); |
| 1323 } |
| 1324 |
| 1304 // TODO(dzhioev): Add test emaulating device with wrong HWID. | 1325 // TODO(dzhioev): Add test emaulating device with wrong HWID. |
| 1305 | 1326 |
| 1306 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 | 1327 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 |
| 1307 | 1328 |
| 1308 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when | 1329 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when |
| 1309 // UI and logic is ready. http://crbug.com/127016 | 1330 // UI and logic is ready. http://crbug.com/127016 |
| 1310 | 1331 |
| 1311 // TODO(dzhioev): Add tests for controller/host pairing flow. | 1332 // TODO(dzhioev): Add tests for controller/host pairing flow. |
| 1312 // http://crbug.com/375191 | 1333 // http://crbug.com/375191 |
| 1313 | 1334 |
| 1314 // TODO(khmel): Add tests for ARC OptIn flow. | 1335 // TODO(khmel): Add tests for ARC OptIn flow. |
| 1315 // http://crbug.com/651144 | 1336 // http://crbug.com/651144 |
| 1316 static_assert(BaseScreenDelegate::EXIT_CODES_COUNT == 25, | 1337 static_assert(BaseScreenDelegate::EXIT_CODES_COUNT == 25, |
| 1317 "tests for new control flow are missing"); | 1338 "tests for new control flow are missing"); |
| 1318 | 1339 |
| 1319 } // namespace chromeos | 1340 } // namespace chromeos |
| OLD | NEW |