Chromium Code Reviews| 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" |
| 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 |
| 187 // Can't be in anonymous namespace because it needs to be a friend of | |
| 188 // WizardController to access the AutoEnrollmentController. | |
| 189 void WaitForAutoEnrollmentState(policy::AutoEnrollmentState state) { | |
| 190 base::RunLoop loop; | |
| 191 std::unique_ptr<AutoEnrollmentController::ProgressCallbackList::Subscription> | |
| 192 progress_subscription( | |
| 193 WizardController::default_controller() | |
| 194 ->GetAutoEnrollmentController() | |
| 195 ->RegisterProgressCallback( | |
| 196 base::Bind(&QuitLoopOnAutoEnrollmentProgress, state, &loop))); | |
| 197 loop.Run(); | |
| 198 } | |
| 199 | |
| 197 using ::testing::_; | 200 using ::testing::_; |
| 198 | 201 |
| 199 template <class T, class H> | 202 template <class T, class H> |
| 200 class MockOutShowHide : public T { | 203 class MockOutShowHide : public T { |
| 201 public: | 204 public: |
| 202 template <class P> explicit MockOutShowHide(P p) : T(p) {} | 205 template <class P> explicit MockOutShowHide(P p) : T(p) {} |
| 203 template <class P> | 206 template <class P> |
| 204 MockOutShowHide(P p, H* view) : T(p, view), view_(view) {} | 207 MockOutShowHide(P p, H* view) : T(p, view), view_(view) {} |
| 205 template <class P, class Q> | 208 template <class P, class Q> |
| 206 MockOutShowHide(P p, Q q, H* view) : T(p, q, view), view_(view) {} | 209 MockOutShowHide(P p, Q q, H* view) : T(p, q, view), view_(view) {} |
| (...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 900 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); | 903 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 901 OnExit(*mock_enrollment_screen_, | 904 OnExit(*mock_enrollment_screen_, |
| 902 ScreenExitCode::ENTERPRISE_ENROLLMENT_COMPLETED); | 905 ScreenExitCode::ENTERPRISE_ENROLLMENT_COMPLETED); |
| 903 | 906 |
| 904 EXPECT_TRUE(StartupUtils::IsOobeCompleted()); | 907 EXPECT_TRUE(StartupUtils::IsOobeCompleted()); |
| 905 } | 908 } |
| 906 | 909 |
| 907 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, | 910 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, |
| 908 ControlFlowNoForcedReEnrollmentOnFirstBoot) { | 911 ControlFlowNoForcedReEnrollmentOnFirstBoot) { |
| 909 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey); | 912 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey); |
| 910 EXPECT_NE( | 913 EXPECT_NE(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, |
| 911 policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, | 914 WizardController::default_controller() |
| 912 LoginDisplayHost::default_host()->GetAutoEnrollmentController()->state()); | 915 ->GetAutoEnrollmentController() |
| 916 ->state()); | |
| 913 | 917 |
| 914 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); | 918 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); |
| 915 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | 919 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 916 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | 920 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 917 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); | 921 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); |
| 918 | 922 |
| 919 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); | 923 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); |
| 920 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); | 924 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); |
| 921 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); | 925 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); |
| 922 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); | 926 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); |
| 923 OnExit(*mock_eula_screen_, ScreenExitCode::EULA_ACCEPTED); | 927 OnExit(*mock_eula_screen_, ScreenExitCode::EULA_ACCEPTED); |
| 924 | 928 |
| 925 // Let update screen smooth time process (time = 0ms). | 929 // Let update screen smooth time process (time = 0ms). |
| 926 content::RunAllPendingInMessageLoop(); | 930 content::RunAllPendingInMessageLoop(); |
| 927 | 931 |
| 928 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_UPDATE); | 932 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_UPDATE); |
| 929 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); | 933 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); |
| 930 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); | 934 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); |
| 931 OnExit(*mock_update_screen_, ScreenExitCode::UPDATE_INSTALLED); | 935 OnExit(*mock_update_screen_, ScreenExitCode::UPDATE_INSTALLED); |
| 932 | 936 |
| 933 CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); | 937 CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); |
| 934 mock_auto_enrollment_check_screen_->RealShow(); | 938 mock_auto_enrollment_check_screen_->RealShow(); |
| 935 EXPECT_EQ( | 939 EXPECT_EQ(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, |
| 936 policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, | 940 WizardController::default_controller() |
| 937 LoginDisplayHost::default_host()->GetAutoEnrollmentController()->state()); | 941 ->GetAutoEnrollmentController() |
| 942 ->state()); | |
| 938 } | 943 } |
| 939 | 944 |
| 940 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, | 945 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, |
| 941 ControlFlowDeviceDisabled) { | 946 ControlFlowDeviceDisabled) { |
| 942 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); | 947 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_NETWORK); |
| 943 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | 948 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 944 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | 949 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 945 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); | 950 OnExit(*mock_network_screen_, ScreenExitCode::NETWORK_CONNECTED); |
| 946 | 951 |
| 947 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); | 952 CheckCurrentScreen(OobeScreen::SCREEN_OOBE_EULA); |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1318 } | 1323 } |
| 1319 | 1324 |
| 1320 private: | 1325 private: |
| 1321 DISALLOW_COPY_AND_ASSIGN(WizardControllerCellularFirstTest); | 1326 DISALLOW_COPY_AND_ASSIGN(WizardControllerCellularFirstTest); |
| 1322 }; | 1327 }; |
| 1323 | 1328 |
| 1324 IN_PROC_BROWSER_TEST_F(WizardControllerCellularFirstTest, CellularFirstFlow) { | 1329 IN_PROC_BROWSER_TEST_F(WizardControllerCellularFirstTest, CellularFirstFlow) { |
| 1325 TestControlFlowMain(); | 1330 TestControlFlowMain(); |
| 1326 } | 1331 } |
| 1327 | 1332 |
| 1328 // TODO(dzhioev): Add test emaulating device with wrong HWID. | 1333 // TODO(dzhioev): Add test emulating device with wrong HWID. |
|
achuithb
2017/03/24 01:33:29
Just drop this TODO since there's no bug id
Thiemo Nagel
2017/04/12 14:30:40
Imho, missing a bug number or referencing a person
achuithb
2017/04/19 19:04:42
Perhaps the right thing to do would be to file a b
| |
| 1329 | 1334 |
| 1330 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 | 1335 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 |
| 1331 | 1336 |
| 1332 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when | 1337 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when |
| 1333 // UI and logic is ready. http://crbug.com/127016 | 1338 // UI and logic is ready. http://crbug.com/127016 |
| 1334 | 1339 |
| 1335 // TODO(dzhioev): Add tests for controller/host pairing flow. | 1340 // TODO(dzhioev): Add tests for controller/host pairing flow. |
|
achuithb
2017/03/24 01:33:29
dzhioev, nkostylev, merkulova don't work in chromi
Thiemo Nagel
2017/04/12 14:30:40
See above.
achuithb
2017/04/19 19:04:42
Acknowledged.
| |
| 1336 // http://crbug.com/375191 | 1341 // http://crbug.com/375191 |
| 1337 | 1342 |
| 1338 // TODO(khmel): Add tests for ARC OptIn flow. | 1343 // TODO(khmel): Add tests for ARC OptIn flow. |
| 1339 // http://crbug.com/651144 | 1344 // http://crbug.com/651144 |
| 1340 static_assert(static_cast<int>(ScreenExitCode::EXIT_CODES_COUNT) == 25, | 1345 static_assert(static_cast<int>(ScreenExitCode::EXIT_CODES_COUNT) == 25, |
| 1341 "tests for new control flow are missing"); | 1346 "tests for new control flow are missing"); |
| 1342 | 1347 |
| 1343 } // namespace chromeos | 1348 } // namespace chromeos |
| OLD | NEW |