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 <signal.h> | 7 #include <signal.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdlib.h> | 9 #include <stdlib.h> |
| 10 #include <sys/types.h> | 10 #include <sys/types.h> |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 139 histogram->AddTime(step_time); | 139 histogram->AddTime(step_time); |
| 140 } | 140 } |
| 141 | 141 |
| 142 bool IsRemoraRequisition() { | 142 bool IsRemoraRequisition() { |
| 143 return g_browser_process->platform_part() | 143 return g_browser_process->platform_part() |
| 144 ->browser_policy_connector_chromeos() | 144 ->browser_policy_connector_chromeos() |
| 145 ->GetDeviceCloudPolicyManager() | 145 ->GetDeviceCloudPolicyManager() |
| 146 ->IsRemoraRequisition(); | 146 ->IsRemoraRequisition(); |
| 147 } | 147 } |
| 148 | 148 |
| 149 bool IsSharkRequisition() { | |
| 150 return g_browser_process->platform_part() | |
| 151 ->browser_policy_connector_chromeos() | |
| 152 ->GetDeviceCloudPolicyManager() | |
| 153 ->IsSharkRequisition(); | |
| 154 } | |
| 155 | |
| 149 // Checks if a controller device ("Master") is detected during the bootstrapping | 156 // Checks if a controller device ("Master") is detected during the bootstrapping |
| 150 // or shark/remora setup process. | 157 // or shark/remora setup process. |
| 151 bool IsControllerDetected() { | 158 bool IsControllerDetected() { |
| 152 return g_browser_process->local_state()->GetBoolean( | 159 return g_browser_process->local_state()->GetBoolean( |
| 153 prefs::kOobeControllerDetected); | 160 prefs::kOobeControllerDetected); |
| 154 } | 161 } |
| 155 | 162 |
| 156 void SetControllerDetectedPref(bool value) { | 163 void SetControllerDetectedPref(bool value) { |
| 157 PrefService* prefs = g_browser_process->local_state(); | 164 PrefService* prefs = g_browser_process->local_state(); |
| 158 prefs->SetBoolean(prefs::kOobeControllerDetected, value); | 165 prefs->SetBoolean(prefs::kOobeControllerDetected, value); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 177 } | 184 } |
| 178 | 185 |
| 179 #if defined(GOOGLE_CHROME_BUILD) | 186 #if defined(GOOGLE_CHROME_BUILD) |
| 180 void InitializeCrashReporter() { | 187 void InitializeCrashReporter() { |
| 181 // The crash reporter initialization needs IO to complete. | 188 // The crash reporter initialization needs IO to complete. |
| 182 DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); | 189 DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
| 183 breakpad::InitCrashReporter(std::string()); | 190 breakpad::InitCrashReporter(std::string()); |
| 184 } | 191 } |
| 185 #endif | 192 #endif |
| 186 | 193 |
| 187 bool UseMDOobe() { | |
| 188 return !base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 189 chromeos::switches::kDisableMdOobe); | |
| 190 } | |
| 191 | |
| 192 } // namespace | 194 } // namespace |
| 193 | 195 |
| 194 namespace chromeos { | 196 namespace chromeos { |
| 195 | 197 |
| 196 const char WizardController::kNetworkScreenName[] = "network"; | 198 const char WizardController::kNetworkScreenName[] = "network"; |
| 197 const char WizardController::kLoginScreenName[] = "login"; | 199 const char WizardController::kLoginScreenName[] = "login"; |
| 198 const char WizardController::kUpdateScreenName[] = "update"; | 200 const char WizardController::kUpdateScreenName[] = "update"; |
| 199 const char WizardController::kUserImageScreenName[] = "image"; | 201 const char WizardController::kUserImageScreenName[] = "image"; |
| 200 const char WizardController::kEulaScreenName[] = "eula"; | 202 const char WizardController::kEulaScreenName[] = "eula"; |
| 201 const char WizardController::kEnableDebuggingScreenName[] = "debugging"; | 203 const char WizardController::kEnableDebuggingScreenName[] = "debugging"; |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 !IsControllerDetected() && | 314 !IsControllerDetected() && |
| 313 (first_screen_name.empty() || | 315 (first_screen_name.empty() || |
| 314 first_screen_name == WizardController::kTestNoScreenName)) { | 316 first_screen_name == WizardController::kTestNoScreenName)) { |
| 315 first_screen_name_ = screen_pref; | 317 first_screen_name_ = screen_pref; |
| 316 } | 318 } |
| 317 // We need to reset the kOobeControllerDetected pref to allow the user to have | 319 // We need to reset the kOobeControllerDetected pref to allow the user to have |
| 318 // the choice to setup the device manually. The pref will be set properly if | 320 // the choice to setup the device manually. The pref will be set properly if |
| 319 // an eligible controller is detected later. | 321 // an eligible controller is detected later. |
| 320 SetControllerDetectedPref(false); | 322 SetControllerDetectedPref(false); |
| 321 | 323 |
| 322 // If flag disappeared after restart, disable. | 324 // Show Material Design unless explicitly disabled or for an untested UX, |
| 323 if (!UseMDOobe()) | 325 // or when resuming an OOBE that had it disabled or unset. We use an if/else |
| 324 GetLocalState()->SetBoolean(prefs::kOobeMdMode, false); | 326 // here to try and not set state when it is the default value so it can |
| 327 // change and affect the OOBE again. | |
| 328 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 329 chromeos::switches::kDisableMdOobe)) | |
|
Alexander Alekseev
2016/09/18 11:50:45
Please, add {} as we have more than one branch her
| |
| 330 SetShowMdOobe(false); | |
| 331 else if ((screen_pref.empty() || | |
| 332 GetLocalState()->HasPrefPath(prefs::kOobeMdMode)) || | |
| 333 GetLocalState()->GetBoolean(prefs::kOobeMdMode)) | |
| 334 SetShowMdOobe(true); | |
| 335 | |
| 336 // TODO(drcrash): Remove this after testing (http://crbug.com/647411). | |
| 337 if (IsRemoraPairingOobe() || IsSharkRequisition() || IsRemoraRequisition()) { | |
| 338 SetShowMdOobe(false); | |
| 339 } | |
| 325 | 340 |
| 326 AdvanceToScreen(first_screen_name_); | 341 AdvanceToScreen(first_screen_name_); |
| 327 if (!IsMachineHWIDCorrect() && !StartupUtils::IsDeviceRegistered() && | 342 if (!IsMachineHWIDCorrect() && !StartupUtils::IsDeviceRegistered() && |
| 328 first_screen_name_.empty()) | 343 first_screen_name_.empty()) |
| 329 ShowWrongHWIDScreen(); | 344 ShowWrongHWIDScreen(); |
| 330 } | 345 } |
| 331 | 346 |
| 332 ErrorScreen* WizardController::GetErrorScreen() { | 347 ErrorScreen* WizardController::GetErrorScreen() { |
| 333 return oobe_ui_->GetErrorScreen(); | 348 return oobe_ui_->GetErrorScreen(); |
| 334 } | 349 } |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 534 } | 549 } |
| 535 | 550 |
| 536 void WizardController::ShowSupervisedUserCreationScreen() { | 551 void WizardController::ShowSupervisedUserCreationScreen() { |
| 537 VLOG(1) << "Showing Locally managed user creation screen screen."; | 552 VLOG(1) << "Showing Locally managed user creation screen screen."; |
| 538 SetStatusAreaVisible(true); | 553 SetStatusAreaVisible(true); |
| 539 SetCurrentScreen(GetScreen(kSupervisedUserCreationScreenName)); | 554 SetCurrentScreen(GetScreen(kSupervisedUserCreationScreenName)); |
| 540 } | 555 } |
| 541 | 556 |
| 542 void WizardController::ShowHIDDetectionScreen() { | 557 void WizardController::ShowHIDDetectionScreen() { |
| 543 VLOG(1) << "Showing HID discovery screen."; | 558 VLOG(1) << "Showing HID discovery screen."; |
| 559 // TODO(drcrash): Remove this after testing (http://crbug.com/647411). | |
| 560 SetShowMdOobe(false); // Disable the MD OOBE from there on. | |
| 544 SetStatusAreaVisible(true); | 561 SetStatusAreaVisible(true); |
| 545 SetCurrentScreen(GetScreen(kHIDDetectionScreenName)); | 562 SetCurrentScreen(GetScreen(kHIDDetectionScreenName)); |
| 546 MaybeStartListeningForSharkConnection(); | 563 MaybeStartListeningForSharkConnection(); |
| 547 } | 564 } |
| 548 | 565 |
| 549 void WizardController::ShowControllerPairingScreen() { | 566 void WizardController::ShowControllerPairingScreen() { |
| 550 VLOG(1) << "Showing controller pairing screen."; | 567 VLOG(1) << "Showing controller pairing screen."; |
| 551 SetStatusAreaVisible(false); | 568 SetStatusAreaVisible(false); |
| 552 SetCurrentScreen(GetScreen(kControllerPairingScreenName)); | 569 SetCurrentScreen(GetScreen(kControllerPairingScreenName)); |
| 553 } | 570 } |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 622 // should report some error message here and stay on the same screen. | 639 // should report some error message here and stay on the same screen. |
| 623 ShowLoginScreen(LoginScreenContext()); | 640 ShowLoginScreen(LoginScreenContext()); |
| 624 } | 641 } |
| 625 | 642 |
| 626 void WizardController::OnConnectionFailed() { | 643 void WizardController::OnConnectionFailed() { |
| 627 // TODO(dpolukhin): show error message after login screen is displayed. | 644 // TODO(dpolukhin): show error message after login screen is displayed. |
| 628 ShowLoginScreen(LoginScreenContext()); | 645 ShowLoginScreen(LoginScreenContext()); |
| 629 } | 646 } |
| 630 | 647 |
| 631 void WizardController::OnUpdateCompleted() { | 648 void WizardController::OnUpdateCompleted() { |
| 632 const bool is_shark = g_browser_process->platform_part() | 649 if (IsSharkRequisition() || IsBootstrappingMaster()) { |
| 633 ->browser_policy_connector_chromeos() | |
| 634 ->GetDeviceCloudPolicyManager() | |
| 635 ->IsSharkRequisition(); | |
| 636 if (is_shark || IsBootstrappingMaster()) { | |
| 637 ShowControllerPairingScreen(); | 650 ShowControllerPairingScreen(); |
| 638 } else if (IsControllerDetected()) { | 651 } else if (IsControllerDetected()) { |
| 639 ShowHostPairingScreen(); | 652 ShowHostPairingScreen(); |
| 640 } else { | 653 } else { |
| 641 ShowAutoEnrollmentCheckScreen(); | 654 ShowAutoEnrollmentCheckScreen(); |
| 642 } | 655 } |
| 643 } | 656 } |
| 644 | 657 |
| 645 void WizardController::OnEulaAccepted() { | 658 void WizardController::OnEulaAccepted() { |
| 646 time_eula_accepted_ = base::Time::Now(); | 659 time_eula_accepted_ = base::Time::Now(); |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 919 &WizardController::ShowCurrentScreen); | 932 &WizardController::ShowCurrentScreen); |
| 920 } else { | 933 } else { |
| 921 ShowCurrentScreen(); | 934 ShowCurrentScreen(); |
| 922 } | 935 } |
| 923 } | 936 } |
| 924 | 937 |
| 925 void WizardController::SetStatusAreaVisible(bool visible) { | 938 void WizardController::SetStatusAreaVisible(bool visible) { |
| 926 host_->SetStatusAreaVisible(visible); | 939 host_->SetStatusAreaVisible(visible); |
| 927 } | 940 } |
| 928 | 941 |
| 942 void WizardController::SetShowMdOobe(bool show) { | |
| 943 GetLocalState()->SetBoolean(prefs::kOobeMdMode, show); | |
| 944 } | |
| 945 | |
| 929 void WizardController::OnHIDScreenNecessityCheck(bool screen_needed) { | 946 void WizardController::OnHIDScreenNecessityCheck(bool screen_needed) { |
| 930 if (!oobe_ui_) | 947 if (!oobe_ui_) |
| 931 return; | 948 return; |
| 932 | 949 |
| 933 if (screen_needed) { | 950 if (screen_needed) { |
| 934 ShowHIDDetectionScreen(); | 951 ShowHIDDetectionScreen(); |
| 935 } else { | 952 } else { |
| 936 if (UseMDOobe()) | |
| 937 GetLocalState()->SetBoolean(prefs::kOobeMdMode, true); | |
| 938 | |
| 939 ShowNetworkScreen(); | 953 ShowNetworkScreen(); |
| 940 } | 954 } |
| 941 } | 955 } |
| 942 | 956 |
| 943 void WizardController::AdvanceToScreen(const std::string& screen_name) { | 957 void WizardController::AdvanceToScreen(const std::string& screen_name) { |
| 944 if (screen_name == kNetworkScreenName) { | 958 if (screen_name == kNetworkScreenName) { |
| 945 ShowNetworkScreen(); | 959 ShowNetworkScreen(); |
| 946 } else if (screen_name == kLoginScreenName) { | 960 } else if (screen_name == kLoginScreenName) { |
| 947 ShowLoginScreen(LoginScreenContext()); | 961 ShowLoginScreen(LoginScreenContext()); |
| 948 } else if (screen_name == kUpdateScreenName) { | 962 } else if (screen_name == kUpdateScreenName) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 984 time_oobe_started_ = base::Time::Now(); | 998 time_oobe_started_ = base::Time::Now(); |
| 985 if (IsRemoraPairingOobe() || IsControllerDetected()) { | 999 if (IsRemoraPairingOobe() || IsControllerDetected()) { |
| 986 ShowHostPairingScreen(); | 1000 ShowHostPairingScreen(); |
| 987 } else if (CanShowHIDDetectionScreen()) { | 1001 } else if (CanShowHIDDetectionScreen()) { |
| 988 hid_screen_ = GetScreen(kHIDDetectionScreenName); | 1002 hid_screen_ = GetScreen(kHIDDetectionScreenName); |
| 989 base::Callback<void(bool)> on_check = base::Bind( | 1003 base::Callback<void(bool)> on_check = base::Bind( |
| 990 &WizardController::OnHIDScreenNecessityCheck, | 1004 &WizardController::OnHIDScreenNecessityCheck, |
| 991 weak_factory_.GetWeakPtr()); | 1005 weak_factory_.GetWeakPtr()); |
| 992 oobe_ui_->GetHIDDetectionView()->CheckIsScreenRequired(on_check); | 1006 oobe_ui_->GetHIDDetectionView()->CheckIsScreenRequired(on_check); |
| 993 } else { | 1007 } else { |
| 994 if (UseMDOobe()) | |
| 995 GetLocalState()->SetBoolean(prefs::kOobeMdMode, true); | |
| 996 | |
| 997 ShowNetworkScreen(); | 1008 ShowNetworkScreen(); |
| 998 } | 1009 } |
| 999 } else { | 1010 } else { |
| 1000 ShowLoginScreen(LoginScreenContext()); | 1011 ShowLoginScreen(LoginScreenContext()); |
| 1001 } | 1012 } |
| 1002 } | 1013 } |
| 1003 } | 1014 } |
| 1004 | 1015 |
| 1005 /////////////////////////////////////////////////////////////////////////////// | 1016 /////////////////////////////////////////////////////////////////////////////// |
| 1006 // WizardController, BaseScreenDelegate overrides: | 1017 // WizardController, BaseScreenDelegate overrides: |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1421 : policy::EnrollmentConfig::MODE_MANUAL_REENROLLMENT; | 1432 : policy::EnrollmentConfig::MODE_MANUAL_REENROLLMENT; |
| 1422 } | 1433 } |
| 1423 | 1434 |
| 1424 EnrollmentScreen* screen = EnrollmentScreen::Get(this); | 1435 EnrollmentScreen* screen = EnrollmentScreen::Get(this); |
| 1425 screen->SetParameters(effective_config, shark_controller_.get()); | 1436 screen->SetParameters(effective_config, shark_controller_.get()); |
| 1426 SetStatusAreaVisible(true); | 1437 SetStatusAreaVisible(true); |
| 1427 SetCurrentScreen(screen); | 1438 SetCurrentScreen(screen); |
| 1428 } | 1439 } |
| 1429 | 1440 |
| 1430 } // namespace chromeos | 1441 } // namespace chromeos |
| OLD | NEW |