| 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/accessibility_types.h" | 7 #include "ash/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" |
| 11 #include "base/run_loop.h" | 11 #include "base/run_loop.h" |
| 12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 14 #include "chrome/browser/browser_process.h" | 14 #include "chrome/browser/browser_process.h" |
| 15 #include "chrome/browser/browser_shutdown.h" | 15 #include "chrome/browser/browser_shutdown.h" |
| 16 #include "chrome/browser/chrome_notification_types.h" | 16 #include "chrome/browser/chrome_notification_types.h" |
| 17 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" | 17 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" |
| 18 #include "chrome/browser/chromeos/base/locale_util.h" | 18 #include "chrome/browser/chromeos/base/locale_util.h" |
| 19 #include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h" |
| 19 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h" | 20 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h" |
| 20 #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.
h" | 21 #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.
h" |
| 21 #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_sc
reen.h" | 22 #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_sc
reen.h" |
| 22 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h" | 23 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h" |
| 23 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 24 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 24 #include "chrome/browser/chromeos/login/oobe_screen.h" | 25 #include "chrome/browser/chromeos/login/oobe_screen.h" |
| 25 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h" | 26 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h" |
| 26 #include "chrome/browser/chromeos/login/screens/error_screen.h" | 27 #include "chrome/browser/chromeos/login/screens/error_screen.h" |
| 27 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h" | 28 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h" |
| 28 #include "chrome/browser/chromeos/login/screens/mock_device_disabled_screen_view
.h" | 29 #include "chrome/browser/chromeos/login/screens/mock_device_disabled_screen_view
.h" |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 } | 175 } |
| 175 | 176 |
| 176 void QuitLoopOnAutoEnrollmentProgress( | 177 void QuitLoopOnAutoEnrollmentProgress( |
| 177 policy::AutoEnrollmentState expected_state, | 178 policy::AutoEnrollmentState expected_state, |
| 178 base::RunLoop* loop, | 179 base::RunLoop* loop, |
| 179 policy::AutoEnrollmentState actual_state) { | 180 policy::AutoEnrollmentState actual_state) { |
| 180 if (expected_state == actual_state) | 181 if (expected_state == actual_state) |
| 181 loop->Quit(); | 182 loop->Quit(); |
| 182 } | 183 } |
| 183 | 184 |
| 184 void WaitForAutoEnrollmentState(policy::AutoEnrollmentState state) { | |
| 185 base::RunLoop loop; | |
| 186 AutoEnrollmentController* auto_enrollment_controller = | |
| 187 LoginDisplayHost::default_host()->GetAutoEnrollmentController(); | |
| 188 std::unique_ptr<AutoEnrollmentController::ProgressCallbackList::Subscription> | |
| 189 progress_subscription( | |
| 190 auto_enrollment_controller->RegisterProgressCallback( | |
| 191 base::Bind(&QuitLoopOnAutoEnrollmentProgress, state, &loop))); | |
| 192 loop.Run(); | |
| 193 } | |
| 194 | |
| 195 } // namespace | 185 } // namespace |
| 196 | 186 |
| 197 using ::testing::_; | 187 using ::testing::_; |
| 198 | 188 |
| 199 template <class T, class H> | 189 template <class T, class H> |
| 200 class MockOutShowHide : public T { | 190 class MockOutShowHide : public T { |
| 201 public: | 191 public: |
| 202 template <class P> explicit MockOutShowHide(P p) : T(p) {} | 192 template <class P> explicit MockOutShowHide(P p) : T(p) {} |
| 203 template <class P> | 193 template <class P> |
| 204 MockOutShowHide(P p, H* view) : T(p, view), view_(view) {} | 194 MockOutShowHide(P p, H* view) : T(p, view), view_(view) {} |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 class WizardControllerDeviceStateTest : public WizardControllerFlowTest { | 811 class WizardControllerDeviceStateTest : public WizardControllerFlowTest { |
| 822 protected: | 812 protected: |
| 823 WizardControllerDeviceStateTest() | 813 WizardControllerDeviceStateTest() |
| 824 : install_attributes_(ScopedStubInstallAttributes::CreateUnset()) { | 814 : install_attributes_(ScopedStubInstallAttributes::CreateUnset()) { |
| 825 fake_statistics_provider_.SetMachineStatistic( | 815 fake_statistics_provider_.SetMachineStatistic( |
| 826 system::kSerialNumberKey, "test"); | 816 system::kSerialNumberKey, "test"); |
| 827 fake_statistics_provider_.SetMachineStatistic( | 817 fake_statistics_provider_.SetMachineStatistic( |
| 828 system::kActivateDateKey, "2000-01"); | 818 system::kActivateDateKey, "2000-01"); |
| 829 } | 819 } |
| 830 | 820 |
| 821 static void WaitForAutoEnrollmentState(policy::AutoEnrollmentState state) { |
| 822 base::RunLoop loop; |
| 823 std::unique_ptr< |
| 824 AutoEnrollmentController::ProgressCallbackList::Subscription> |
| 825 progress_subscription( |
| 826 WizardController::default_controller() |
| 827 ->GetAutoEnrollmentController() |
| 828 ->RegisterProgressCallback(base::Bind( |
| 829 &QuitLoopOnAutoEnrollmentProgress, state, &loop))); |
| 830 loop.Run(); |
| 831 } |
| 832 |
| 831 void SetUpCommandLine(base::CommandLine* command_line) override { | 833 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 832 WizardControllerFlowTest::SetUpCommandLine(command_line); | 834 WizardControllerFlowTest::SetUpCommandLine(command_line); |
| 833 | 835 |
| 834 command_line->AppendSwitchASCII( | 836 command_line->AppendSwitchASCII( |
| 835 switches::kEnterpriseEnableForcedReEnrollment, | 837 switches::kEnterpriseEnableForcedReEnrollment, |
| 836 chromeos::AutoEnrollmentController::kForcedReEnrollmentAlways); | 838 chromeos::AutoEnrollmentController::kForcedReEnrollmentAlways); |
| 837 command_line->AppendSwitchASCII( | 839 command_line->AppendSwitchASCII( |
| 838 switches::kEnterpriseEnrollmentInitialModulus, "1"); | 840 switches::kEnterpriseEnrollmentInitialModulus, "1"); |
| 839 command_line->AppendSwitchASCII( | 841 command_line->AppendSwitchASCII( |
| 840 switches::kEnterpriseEnrollmentModulusLimit, "2"); | 842 switches::kEnterpriseEnrollmentModulusLimit, "2"); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 900 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); | 902 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 901 OnExit(*mock_enrollment_screen_, | 903 OnExit(*mock_enrollment_screen_, |
| 902 ScreenExitCode::ENTERPRISE_ENROLLMENT_COMPLETED); | 904 ScreenExitCode::ENTERPRISE_ENROLLMENT_COMPLETED); |
| 903 | 905 |
| 904 EXPECT_TRUE(StartupUtils::IsOobeCompleted()); | 906 EXPECT_TRUE(StartupUtils::IsOobeCompleted()); |
| 905 } | 907 } |
| 906 | 908 |
| 907 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, | 909 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, |
| 908 ControlFlowNoForcedReEnrollmentOnFirstBoot) { | 910 ControlFlowNoForcedReEnrollmentOnFirstBoot) { |
| 909 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey); | 911 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey); |
| 910 EXPECT_NE( | 912 EXPECT_NE(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, |
| 911 policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, | 913 WizardController::default_controller() |
| 912 LoginDisplayHost::default_host()->GetAutoEnrollmentController()->state()); | 914 ->GetAutoEnrollmentController() |
| 915 ->state()); |
| 913 | 916 |
| 914 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); | 917 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); |
| 915 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | 918 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 916 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | 919 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 917 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); | 920 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); |
| 918 | 921 |
| 919 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); | 922 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); |
| 920 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); | 923 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); |
| 921 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); | 924 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); |
| 922 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); | 925 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); |
| 923 OnExit(*mock_eula_screen_, ScreenExitCode::EULA_ACCEPTED); | 926 OnExit(*mock_eula_screen_, ScreenExitCode::EULA_ACCEPTED); |
| 924 | 927 |
| 925 // Let update screen smooth time process (time = 0ms). | 928 // Let update screen smooth time process (time = 0ms). |
| 926 content::RunAllPendingInMessageLoop(); | 929 content::RunAllPendingInMessageLoop(); |
| 927 | 930 |
| 928 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_UPDATE); | 931 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_UPDATE); |
| 929 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); | 932 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); |
| 930 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); | 933 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); |
| 931 OnExit(*mock_update_screen_, ScreenExitCode::UPDATE_INSTALLED); | 934 OnExit(*mock_update_screen_, ScreenExitCode::UPDATE_INSTALLED); |
| 932 | 935 |
| 933 CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); | 936 CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); |
| 934 mock_auto_enrollment_check_screen_->RealShow(); | 937 mock_auto_enrollment_check_screen_->RealShow(); |
| 935 EXPECT_EQ( | 938 EXPECT_EQ(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, |
| 936 policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, | 939 WizardController::default_controller() |
| 937 LoginDisplayHost::default_host()->GetAutoEnrollmentController()->state()); | 940 ->GetAutoEnrollmentController() |
| 941 ->state()); |
| 938 } | 942 } |
| 939 | 943 |
| 940 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, | 944 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, |
| 941 ControlFlowDeviceDisabled) { | 945 ControlFlowDeviceDisabled) { |
| 942 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); | 946 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); |
| 943 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | 947 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 944 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | 948 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 945 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); | 949 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); |
| 946 | 950 |
| 947 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); | 951 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1318 } | 1322 } |
| 1319 | 1323 |
| 1320 private: | 1324 private: |
| 1321 DISALLOW_COPY_AND_ASSIGN(WizardControllerCellularFirstTest); | 1325 DISALLOW_COPY_AND_ASSIGN(WizardControllerCellularFirstTest); |
| 1322 }; | 1326 }; |
| 1323 | 1327 |
| 1324 IN_PROC_BROWSER_TEST_F(WizardControllerCellularFirstTest, CellularFirstFlow) { | 1328 IN_PROC_BROWSER_TEST_F(WizardControllerCellularFirstTest, CellularFirstFlow) { |
| 1325 TestControlFlowMain(); | 1329 TestControlFlowMain(); |
| 1326 } | 1330 } |
| 1327 | 1331 |
| 1328 // TODO(dzhioev): Add test emaulating device with wrong HWID. | 1332 // TODO(dzhioev): Add test emulating device with wrong HWID. |
| 1329 | 1333 |
| 1330 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 | 1334 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 |
| 1331 | 1335 |
| 1332 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when | 1336 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when |
| 1333 // UI and logic is ready. http://crbug.com/127016 | 1337 // UI and logic is ready. http://crbug.com/127016 |
| 1334 | 1338 |
| 1335 // TODO(dzhioev): Add tests for controller/host pairing flow. | 1339 // TODO(dzhioev): Add tests for controller/host pairing flow. |
| 1336 // http://crbug.com/375191 | 1340 // http://crbug.com/375191 |
| 1337 | 1341 |
| 1338 // TODO(khmel): Add tests for ARC OptIn flow. | 1342 // TODO(khmel): Add tests for ARC OptIn flow. |
| 1339 // http://crbug.com/651144 | 1343 // http://crbug.com/651144 |
| 1340 | 1344 |
| 1341 // TODO(fukino): Add tests for encryption migration UI. | 1345 // TODO(fukino): Add tests for encryption migration UI. |
| 1342 // http://crbug.com/706017 | 1346 // http://crbug.com/706017 |
| 1343 static_assert(static_cast<int>(ScreenExitCode::EXIT_CODES_COUNT) == 27, | 1347 static_assert(static_cast<int>(ScreenExitCode::EXIT_CODES_COUNT) == 27, |
| 1344 "tests for new control flow are missing"); | 1348 "tests for new control flow are missing"); |
| 1345 | 1349 |
| 1346 } // namespace chromeos | 1350 } // namespace chromeos |
| OLD | NEW |