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

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

Issue 2694923005: Appropriate handling for Cellular First devices. (Closed)
Patch Set: made a couple of tweaks 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 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698