Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: chrome/browser/chromeos/login/wizard_controller_browsertest.cc

Issue 2694923005: Appropriate handling for Cellular First devices. (Closed)
Patch Set: rebased Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698