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 <stdlib.h> | 8 #include <stdlib.h> |
9 #include <sys/types.h> | 9 #include <sys/types.h> |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "base/values.h" | 23 #include "base/values.h" |
24 #include "chrome/browser/browser_process.h" | 24 #include "chrome/browser/browser_process.h" |
25 #include "chrome/browser/chromeos/cros/cros_library.h" | 25 #include "chrome/browser/chromeos/cros/cros_library.h" |
26 #include "chrome/browser/chromeos/cros/cryptohome_library.h" | 26 #include "chrome/browser/chromeos/cros/cryptohome_library.h" |
27 #include "chrome/browser/chromeos/customization_document.h" | 27 #include "chrome/browser/chromeos/customization_document.h" |
28 #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_screen.
h" | 28 #include "chrome/browser/chromeos/login/enrollment/enterprise_enrollment_screen.
h" |
29 #include "chrome/browser/chromeos/login/eula_screen.h" | 29 #include "chrome/browser/chromeos/login/eula_screen.h" |
30 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 30 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
31 #include "chrome/browser/chromeos/login/helper.h" | 31 #include "chrome/browser/chromeos/login/helper.h" |
32 #include "chrome/browser/chromeos/login/html_page_screen.h" | 32 #include "chrome/browser/chromeos/login/html_page_screen.h" |
| 33 #include "chrome/browser/chromeos/login/hwid_checker.h" |
33 #include "chrome/browser/chromeos/login/login_display_host.h" | 34 #include "chrome/browser/chromeos/login/login_display_host.h" |
34 #include "chrome/browser/chromeos/login/login_utils.h" | 35 #include "chrome/browser/chromeos/login/login_utils.h" |
35 #include "chrome/browser/chromeos/login/network_screen.h" | 36 #include "chrome/browser/chromeos/login/network_screen.h" |
36 #include "chrome/browser/chromeos/login/oobe_display.h" | 37 #include "chrome/browser/chromeos/login/oobe_display.h" |
37 #include "chrome/browser/chromeos/login/registration_screen.h" | 38 #include "chrome/browser/chromeos/login/registration_screen.h" |
38 #include "chrome/browser/chromeos/login/reset_screen.h" | 39 #include "chrome/browser/chromeos/login/reset_screen.h" |
39 #include "chrome/browser/chromeos/login/terms_of_service_screen.h" | 40 #include "chrome/browser/chromeos/login/terms_of_service_screen.h" |
40 #include "chrome/browser/chromeos/login/update_screen.h" | 41 #include "chrome/browser/chromeos/login/update_screen.h" |
41 #include "chrome/browser/chromeos/login/user_image_screen.h" | 42 #include "chrome/browser/chromeos/login/user_image_screen.h" |
42 #include "chrome/browser/chromeos/login/user_manager.h" | 43 #include "chrome/browser/chromeos/login/user_manager.h" |
| 44 #include "chrome/browser/chromeos/login/wrong_hwid_screen.h" |
43 #include "chrome/browser/chromeos/settings/cros_settings.h" | 45 #include "chrome/browser/chromeos/settings/cros_settings.h" |
44 #include "chrome/browser/chromeos/settings/cros_settings_names.h" | 46 #include "chrome/browser/chromeos/settings/cros_settings_names.h" |
45 #include "chrome/browser/profiles/profile.h" | 47 #include "chrome/browser/profiles/profile.h" |
46 #include "chrome/browser/profiles/profile_manager.h" | 48 #include "chrome/browser/profiles/profile_manager.h" |
47 #include "chrome/browser/ui/options/options_util.h" | 49 #include "chrome/browser/ui/options/options_util.h" |
48 #include "chrome/common/chrome_notification_types.h" | 50 #include "chrome/common/chrome_notification_types.h" |
49 #include "chrome/common/pref_names.h" | 51 #include "chrome/common/pref_names.h" |
50 #include "chromeos/dbus/dbus_thread_manager.h" | 52 #include "chromeos/dbus/dbus_thread_manager.h" |
51 #include "chromeos/dbus/session_manager_client.h" | 53 #include "chromeos/dbus/session_manager_client.h" |
52 #include "content/public/browser/browser_thread.h" | 54 #include "content/public/browser/browser_thread.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 const char WizardController::kNetworkScreenName[] = "network"; | 114 const char WizardController::kNetworkScreenName[] = "network"; |
113 const char WizardController::kLoginScreenName[] = "login"; | 115 const char WizardController::kLoginScreenName[] = "login"; |
114 const char WizardController::kUpdateScreenName[] = "update"; | 116 const char WizardController::kUpdateScreenName[] = "update"; |
115 const char WizardController::kUserImageScreenName[] = "image"; | 117 const char WizardController::kUserImageScreenName[] = "image"; |
116 const char WizardController::kEulaScreenName[] = "eula"; | 118 const char WizardController::kEulaScreenName[] = "eula"; |
117 const char WizardController::kRegistrationScreenName[] = "register"; | 119 const char WizardController::kRegistrationScreenName[] = "register"; |
118 const char WizardController::kHTMLPageScreenName[] = "html"; | 120 const char WizardController::kHTMLPageScreenName[] = "html"; |
119 const char WizardController::kEnterpriseEnrollmentScreenName[] = "enroll"; | 121 const char WizardController::kEnterpriseEnrollmentScreenName[] = "enroll"; |
120 const char WizardController::kResetScreenName[] = "reset"; | 122 const char WizardController::kResetScreenName[] = "reset"; |
121 const char WizardController::kTermsOfServiceScreenName[] = "tos"; | 123 const char WizardController::kTermsOfServiceScreenName[] = "tos"; |
| 124 const char WizardController::kWrongHWIDScreenName[] = "wrong-hwid"; |
122 | 125 |
123 // Passing this parameter as a "first screen" initiates full OOBE flow. | 126 // Passing this parameter as a "first screen" initiates full OOBE flow. |
124 const char WizardController::kOutOfBoxScreenName[] = "oobe"; | 127 const char WizardController::kOutOfBoxScreenName[] = "oobe"; |
125 | 128 |
126 // Special test value that commands not to create any window yet. | 129 // Special test value that commands not to create any window yet. |
127 const char WizardController::kTestNoScreenName[] = "test:nowindow"; | 130 const char WizardController::kTestNoScreenName[] = "test:nowindow"; |
128 | 131 |
129 // Initialize default controller. | 132 // Initialize default controller. |
130 // static | 133 // static |
131 WizardController* WizardController::default_controller_ = NULL; | 134 WizardController* WizardController::default_controller_ = NULL; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 bool oobe_complete = IsOobeCompleted(); | 178 bool oobe_complete = IsOobeCompleted(); |
176 if (!oobe_complete || first_screen_name == kOutOfBoxScreenName) { | 179 if (!oobe_complete || first_screen_name == kOutOfBoxScreenName) { |
177 is_out_of_box_ = true; | 180 is_out_of_box_ = true; |
178 } | 181 } |
179 | 182 |
180 AdvanceToScreen(first_screen_name); | 183 AdvanceToScreen(first_screen_name); |
181 content::NotificationService::current()->Notify( | 184 content::NotificationService::current()->Notify( |
182 chrome::NOTIFICATION_WIZARD_FIRST_SCREEN_SHOWN, | 185 chrome::NOTIFICATION_WIZARD_FIRST_SCREEN_SHOWN, |
183 content::NotificationService::AllSources(), | 186 content::NotificationService::AllSources(), |
184 content::NotificationService::NoDetails()); | 187 content::NotificationService::NoDetails()); |
| 188 if (!IsMachineHWIDCorrect() && !IsDeviceRegistered() && |
| 189 first_screen_name.empty()) |
| 190 ShowWrongHWIDScreen(); |
185 } | 191 } |
186 | 192 |
187 chromeos::NetworkScreen* WizardController::GetNetworkScreen() { | 193 chromeos::NetworkScreen* WizardController::GetNetworkScreen() { |
188 if (!network_screen_.get()) | 194 if (!network_screen_.get()) |
189 network_screen_.reset(new chromeos::NetworkScreen( | 195 network_screen_.reset(new chromeos::NetworkScreen( |
190 this, oobe_display_->GetNetworkScreenActor())); | 196 this, oobe_display_->GetNetworkScreenActor())); |
191 return network_screen_.get(); | 197 return network_screen_.get(); |
192 } | 198 } |
193 | 199 |
194 chromeos::UpdateScreen* WizardController::GetUpdateScreen() { | 200 chromeos::UpdateScreen* WizardController::GetUpdateScreen() { |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 | 270 |
265 chromeos::TermsOfServiceScreen* WizardController::GetTermsOfServiceScreen() { | 271 chromeos::TermsOfServiceScreen* WizardController::GetTermsOfServiceScreen() { |
266 if (!terms_of_service_screen_.get()) { | 272 if (!terms_of_service_screen_.get()) { |
267 terms_of_service_screen_.reset( | 273 terms_of_service_screen_.reset( |
268 new chromeos::TermsOfServiceScreen( | 274 new chromeos::TermsOfServiceScreen( |
269 this, oobe_display_->GetTermsOfServiceScreenActor())); | 275 this, oobe_display_->GetTermsOfServiceScreenActor())); |
270 } | 276 } |
271 return terms_of_service_screen_.get(); | 277 return terms_of_service_screen_.get(); |
272 } | 278 } |
273 | 279 |
| 280 chromeos::WrongHWIDScreen* WizardController::GetWrongHWIDScreen() { |
| 281 if (!wrong_hwid_screen_.get()) { |
| 282 wrong_hwid_screen_.reset( |
| 283 new chromeos::WrongHWIDScreen( |
| 284 this, oobe_display_->GetWrongHWIDScreenActor())); |
| 285 } |
| 286 return wrong_hwid_screen_.get(); |
| 287 } |
| 288 |
274 void WizardController::ShowNetworkScreen() { | 289 void WizardController::ShowNetworkScreen() { |
275 VLOG(1) << "Showing network screen."; | 290 VLOG(1) << "Showing network screen."; |
276 SetStatusAreaVisible(false); | 291 SetStatusAreaVisible(false); |
277 SetCurrentScreen(GetNetworkScreen()); | 292 SetCurrentScreen(GetNetworkScreen()); |
278 } | 293 } |
279 | 294 |
280 void WizardController::ShowLoginScreen() { | 295 void WizardController::ShowLoginScreen() { |
281 if (!time_eula_accepted_.is_null()) { | 296 if (!time_eula_accepted_.is_null()) { |
282 base::TimeDelta delta = base::Time::Now() - time_eula_accepted_; | 297 base::TimeDelta delta = base::Time::Now() - time_eula_accepted_; |
283 UMA_HISTOGRAM_MEDIUM_TIMES("OOBE.EULAToSignInTime", delta); | 298 UMA_HISTOGRAM_MEDIUM_TIMES("OOBE.EULAToSignInTime", delta); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 prefs::kTermsOfServiceURL)) { | 391 prefs::kTermsOfServiceURL)) { |
377 ShowUserImageScreen(); | 392 ShowUserImageScreen(); |
378 return; | 393 return; |
379 } | 394 } |
380 | 395 |
381 VLOG(1) << "Showing Terms of Service screen."; | 396 VLOG(1) << "Showing Terms of Service screen."; |
382 SetStatusAreaVisible(true); | 397 SetStatusAreaVisible(true); |
383 SetCurrentScreen(GetTermsOfServiceScreen()); | 398 SetCurrentScreen(GetTermsOfServiceScreen()); |
384 } | 399 } |
385 | 400 |
| 401 void WizardController::ShowWrongHWIDScreen() { |
| 402 VLOG(1) << "Showing wrong HWID screen."; |
| 403 SetStatusAreaVisible(false); |
| 404 SetCurrentScreen(GetWrongHWIDScreen()); |
| 405 } |
| 406 |
386 void WizardController::SkipToLoginForTesting() { | 407 void WizardController::SkipToLoginForTesting() { |
387 MarkEulaAccepted(); | 408 MarkEulaAccepted(); |
388 PerformPostEulaActions(); | 409 PerformPostEulaActions(); |
389 PerformPostUpdateActions(); | 410 PerformPostUpdateActions(); |
390 ShowLoginScreen(); | 411 ShowLoginScreen(); |
391 } | 412 } |
392 | 413 |
393 void WizardController::SkipPostLoginScreensForTesting() { | 414 void WizardController::SkipPostLoginScreensForTesting() { |
394 skip_post_login_screens_ = true; | 415 skip_post_login_screens_ = true; |
395 } | 416 } |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 ShowLoginScreen(); | 574 ShowLoginScreen(); |
554 } | 575 } |
555 | 576 |
556 void WizardController::OnResetCanceled() { | 577 void WizardController::OnResetCanceled() { |
557 if (previous_screen_) | 578 if (previous_screen_) |
558 SetCurrentScreen(previous_screen_); | 579 SetCurrentScreen(previous_screen_); |
559 else | 580 else |
560 ShowLoginScreen(); | 581 ShowLoginScreen(); |
561 } | 582 } |
562 | 583 |
| 584 void WizardController::OnWrongHWIDWarningSkipped() { |
| 585 if (previous_screen_) |
| 586 SetCurrentScreen(previous_screen_); |
| 587 else |
| 588 ShowLoginScreen(); |
| 589 } |
| 590 |
563 void WizardController::OnEnterpriseAutoEnrollmentDone() { | 591 void WizardController::OnEnterpriseAutoEnrollmentDone() { |
564 VLOG(1) << "Automagic enrollment done, resuming previous signin"; | 592 VLOG(1) << "Automagic enrollment done, resuming previous signin"; |
565 ResumeLoginScreen(); | 593 ResumeLoginScreen(); |
566 } | 594 } |
567 | 595 |
568 void WizardController::OnOOBECompleted() { | 596 void WizardController::OnOOBECompleted() { |
569 PerformPostUpdateActions(); | 597 PerformPostUpdateActions(); |
570 ShowLoginScreen(); | 598 ShowLoginScreen(); |
571 } | 599 } |
572 | 600 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
666 OnRegistrationSuccess(); | 694 OnRegistrationSuccess(); |
667 } | 695 } |
668 } else if (screen_name == kResetScreenName) { | 696 } else if (screen_name == kResetScreenName) { |
669 ShowResetScreen(); | 697 ShowResetScreen(); |
670 } else if (screen_name == kHTMLPageScreenName) { | 698 } else if (screen_name == kHTMLPageScreenName) { |
671 ShowHTMLPageScreen(); | 699 ShowHTMLPageScreen(); |
672 } else if (screen_name == kEnterpriseEnrollmentScreenName) { | 700 } else if (screen_name == kEnterpriseEnrollmentScreenName) { |
673 ShowEnterpriseEnrollmentScreen(); | 701 ShowEnterpriseEnrollmentScreen(); |
674 } else if (screen_name == kTermsOfServiceScreenName) { | 702 } else if (screen_name == kTermsOfServiceScreenName) { |
675 ShowTermsOfServiceScreen(); | 703 ShowTermsOfServiceScreen(); |
| 704 } else if (screen_name == kWrongHWIDScreenName) { |
| 705 ShowWrongHWIDScreen(); |
676 } else if (screen_name != kTestNoScreenName) { | 706 } else if (screen_name != kTestNoScreenName) { |
677 if (is_out_of_box_) { | 707 if (is_out_of_box_) { |
678 ShowNetworkScreen(); | 708 ShowNetworkScreen(); |
679 } else { | 709 } else { |
680 ShowLoginScreen(); | 710 ShowLoginScreen(); |
681 } | 711 } |
682 } | 712 } |
683 } | 713 } |
684 | 714 |
685 // static | 715 // static |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
833 OnResetCanceled(); | 863 OnResetCanceled(); |
834 break; | 864 break; |
835 case ENTERPRISE_AUTO_MAGIC_ENROLLMENT_COMPLETED: | 865 case ENTERPRISE_AUTO_MAGIC_ENROLLMENT_COMPLETED: |
836 OnEnterpriseAutoEnrollmentDone(); | 866 OnEnterpriseAutoEnrollmentDone(); |
837 break; | 867 break; |
838 case TERMS_OF_SERVICE_DECLINED: | 868 case TERMS_OF_SERVICE_DECLINED: |
839 OnTermsOfServiceDeclined(); | 869 OnTermsOfServiceDeclined(); |
840 break; | 870 break; |
841 case TERMS_OF_SERVICE_ACCEPTED: | 871 case TERMS_OF_SERVICE_ACCEPTED: |
842 OnTermsOfServiceAccepted(); | 872 OnTermsOfServiceAccepted(); |
| 873 case WRONG_HWID_WARNING_SKIPPED: |
| 874 OnWrongHWIDWarningSkipped(); |
843 break; | 875 break; |
844 default: | 876 default: |
845 NOTREACHED(); | 877 NOTREACHED(); |
846 } | 878 } |
847 } | 879 } |
848 | 880 |
849 void WizardController::OnSetUserNamePassword(const std::string& username, | 881 void WizardController::OnSetUserNamePassword(const std::string& username, |
850 const std::string& password) { | 882 const std::string& password) { |
851 username_ = username; | 883 username_ = username; |
852 password_ = password; | 884 password_ = password; |
(...skipping 12 matching lines...) Expand all Loading... |
865 return zero_delay_enabled_; | 897 return zero_delay_enabled_; |
866 } | 898 } |
867 | 899 |
868 // static | 900 // static |
869 void WizardController::SetZeroDelays() { | 901 void WizardController::SetZeroDelays() { |
870 kShowDelayMs = 0; | 902 kShowDelayMs = 0; |
871 zero_delay_enabled_ = true; | 903 zero_delay_enabled_ = true; |
872 } | 904 } |
873 | 905 |
874 } // namespace chromeos | 906 } // namespace chromeos |
OLD | NEW |