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 <stdlib.h> | 8 #include <stdlib.h> |
| 9 #include <sys/types.h> | 9 #include <sys/types.h> |
| 10 | 10 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 48 #include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h" | 48 #include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h" |
| 49 #include "chrome/browser/chromeos/login/startup_utils.h" | 49 #include "chrome/browser/chromeos/login/startup_utils.h" |
| 50 #include "chrome/browser/chromeos/login/ui/login_display_host.h" | 50 #include "chrome/browser/chromeos/login/ui/login_display_host.h" |
| 51 #include "chrome/browser/chromeos/login/ui/oobe_display.h" | 51 #include "chrome/browser/chromeos/login/ui/oobe_display.h" |
| 52 #include "chrome/browser/chromeos/login/users/user_manager.h" | 52 #include "chrome/browser/chromeos/login/users/user_manager.h" |
| 53 #include "chrome/browser/chromeos/net/delay_network_call.h" | 53 #include "chrome/browser/chromeos/net/delay_network_call.h" |
| 54 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 54 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 55 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" | 55 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" |
| 56 #include "chrome/browser/chromeos/settings/cros_settings.h" | 56 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 57 #include "chrome/browser/chromeos/timezone/timezone_provider.h" | 57 #include "chrome/browser/chromeos/timezone/timezone_provider.h" |
| 58 #include "chrome/browser/lifetime/application_lifetime.h" | |
| 58 #include "chrome/browser/profiles/profile.h" | 59 #include "chrome/browser/profiles/profile.h" |
| 59 #include "chrome/browser/profiles/profile_manager.h" | 60 #include "chrome/browser/profiles/profile_manager.h" |
| 60 #include "chrome/browser/ui/options/options_util.h" | 61 #include "chrome/browser/ui/options/options_util.h" |
| 61 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" | 62 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" |
| 62 #include "chrome/common/chrome_constants.h" | 63 #include "chrome/common/chrome_constants.h" |
| 63 #include "chrome/common/pref_names.h" | 64 #include "chrome/common/pref_names.h" |
| 64 #include "chromeos/audio/cras_audio_handler.h" | 65 #include "chromeos/audio/cras_audio_handler.h" |
| 65 #include "chromeos/chromeos_constants.h" | 66 #include "chromeos/chromeos_constants.h" |
| 66 #include "chromeos/chromeos_switches.h" | 67 #include "chromeos/chromeos_switches.h" |
| 67 #include "chromeos/dbus/dbus_thread_manager.h" | 68 #include "chromeos/dbus/dbus_thread_manager.h" |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 197 #if defined(GOOGLE_CHROME_BUILD) | 198 #if defined(GOOGLE_CHROME_BUILD) |
| 198 is_official_build_(true), | 199 is_official_build_(true), |
| 199 #else | 200 #else |
| 200 is_official_build_(false), | 201 is_official_build_(false), |
| 201 #endif | 202 #endif |
| 202 is_out_of_box_(false), | 203 is_out_of_box_(false), |
| 203 host_(host), | 204 host_(host), |
| 204 oobe_display_(oobe_display), | 205 oobe_display_(oobe_display), |
| 205 usage_statistics_reporting_(true), | 206 usage_statistics_reporting_(true), |
| 206 skip_update_enroll_after_eula_(false), | 207 skip_update_enroll_after_eula_(false), |
| 208 enrollment_recovery_(ShouldRecoverEnrollment()), | |
| 207 login_screen_started_(false), | 209 login_screen_started_(false), |
| 208 user_image_screen_return_to_previous_hack_(false), | 210 user_image_screen_return_to_previous_hack_(false), |
| 209 timezone_resolved_(false), | 211 timezone_resolved_(false), |
| 210 weak_factory_(this) { | 212 weak_factory_(this) { |
| 211 DCHECK(default_controller_ == NULL); | 213 DCHECK(default_controller_ == NULL); |
| 212 default_controller_ = this; | 214 default_controller_ = this; |
| 213 AccessibilityManager* accessibility_manager = AccessibilityManager::Get(); | 215 AccessibilityManager* accessibility_manager = AccessibilityManager::Get(); |
| 214 CHECK(accessibility_manager); | 216 CHECK(accessibility_manager); |
| 215 accessibility_subscription_ = accessibility_manager->RegisterCallback( | 217 accessibility_subscription_ = accessibility_manager->RegisterCallback( |
| 216 base::Bind(&WizardController::OnAccessibilityStatusChanged, | 218 base::Bind(&WizardController::OnAccessibilityStatusChanged, |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 486 | 488 |
| 487 bool is_auto_enrollment = false; | 489 bool is_auto_enrollment = false; |
| 488 std::string user; | 490 std::string user; |
| 489 if (screen_parameters_.get()) { | 491 if (screen_parameters_.get()) { |
| 490 screen_parameters_->GetBoolean("is_auto_enrollment", &is_auto_enrollment); | 492 screen_parameters_->GetBoolean("is_auto_enrollment", &is_auto_enrollment); |
| 491 screen_parameters_->GetString("user", &user); | 493 screen_parameters_->GetString("user", &user); |
| 492 } | 494 } |
| 493 | 495 |
| 494 EnrollmentScreenActor::EnrollmentMode mode = | 496 EnrollmentScreenActor::EnrollmentMode mode = |
| 495 EnrollmentScreenActor::ENROLLMENT_MODE_MANUAL; | 497 EnrollmentScreenActor::ENROLLMENT_MODE_MANUAL; |
| 496 if (is_auto_enrollment) | 498 EnrollmentScreen* screen = GetEnrollmentScreen(); |
| 499 std::string enrollment_domain = GetForcedEnrollmentDomain(); | |
| 500 if (is_auto_enrollment) { | |
| 497 mode = EnrollmentScreenActor::ENROLLMENT_MODE_AUTO; | 501 mode = EnrollmentScreenActor::ENROLLMENT_MODE_AUTO; |
| 498 else if (ShouldAutoStartEnrollment() && !CanExitEnrollment()) | 502 } else if (ShouldAutoStartEnrollment() && !CanExitEnrollment()) { |
| 499 mode = EnrollmentScreenActor::ENROLLMENT_MODE_FORCED; | 503 mode = EnrollmentScreenActor::ENROLLMENT_MODE_FORCED; |
| 500 else if (ShouldRecoverEnrollment()) | 504 } else if (enrollment_recovery_) { |
| 501 mode = EnrollmentScreenActor::ENROLLMENT_MODE_FORCED; | 505 mode = EnrollmentScreenActor::ENROLLMENT_MODE_FORCED; |
| 506 enrollment_domain = GetEnrollmentRecoveryDomain(); | |
| 507 } | |
| 502 | 508 |
| 503 EnrollmentScreen* screen = GetEnrollmentScreen(); | 509 screen->SetParameters(mode, enrollment_domain, user); |
| 504 screen->SetParameters(mode, GetForcedEnrollmentDomain(), user); | |
| 505 SetCurrentScreen(screen); | 510 SetCurrentScreen(screen); |
| 506 } | 511 } |
| 507 | 512 |
| 508 void WizardController::ShowResetScreen() { | 513 void WizardController::ShowResetScreen() { |
| 509 VLOG(1) << "Showing reset screen."; | 514 VLOG(1) << "Showing reset screen."; |
| 510 SetStatusAreaVisible(false); | 515 SetStatusAreaVisible(false); |
| 511 SetCurrentScreen(GetResetScreen()); | 516 SetCurrentScreen(GetResetScreen()); |
| 512 } | 517 } |
| 513 | 518 |
| 514 void WizardController::ShowKioskEnableScreen() { | 519 void WizardController::ShowKioskEnableScreen() { |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 724 host_ = NULL; | 729 host_ = NULL; |
| 725 } | 730 } |
| 726 | 731 |
| 727 void WizardController::OnUserImageSkipped() { | 732 void WizardController::OnUserImageSkipped() { |
| 728 OnUserImageSelected(); | 733 OnUserImageSelected(); |
| 729 } | 734 } |
| 730 | 735 |
| 731 void WizardController::OnEnrollmentDone() { | 736 void WizardController::OnEnrollmentDone() { |
| 732 // Mark OOBE as completed only if enterprise enrollment was part of the | 737 // Mark OOBE as completed only if enterprise enrollment was part of the |
| 733 // forced flow (i.e. app kiosk). | 738 // forced flow (i.e. app kiosk). |
| 734 if (ShouldAutoStartEnrollment() || ShouldRecoverEnrollment()) | 739 if (ShouldAutoStartEnrollment() || enrollment_recovery_) |
| 735 PerformOOBECompletedActions(); | 740 PerformOOBECompletedActions(); |
| 736 | 741 |
| 737 // TODO(mnissler): Unify the logic for auto-login for Public Sessions and | 742 // TODO(mnissler): Unify the logic for auto-login for Public Sessions and |
| 738 // Kiosk Apps and make this code cover both cases: http://crbug.com/234694. | 743 // Kiosk Apps and make this code cover both cases: http://crbug.com/234694. |
| 739 if (KioskAppManager::Get()->IsAutoLaunchEnabled()) | 744 if (KioskAppManager::Get()->IsAutoLaunchEnabled()) |
| 740 AutoLaunchKioskApp(); | 745 AutoLaunchKioskApp(); |
| 741 else | 746 else |
| 742 ShowLoginScreen(LoginScreenContext()); | 747 ShowLoginScreen(LoginScreenContext()); |
| 743 } | 748 } |
| 744 | 749 |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 769 else | 774 else |
| 770 ShowLoginScreen(LoginScreenContext()); | 775 ShowLoginScreen(LoginScreenContext()); |
| 771 } | 776 } |
| 772 | 777 |
| 773 void WizardController::OnAutoEnrollmentDone() { | 778 void WizardController::OnAutoEnrollmentDone() { |
| 774 VLOG(1) << "Automagic enrollment done, resuming previous signin"; | 779 VLOG(1) << "Automagic enrollment done, resuming previous signin"; |
| 775 ResumeLoginScreen(); | 780 ResumeLoginScreen(); |
| 776 } | 781 } |
| 777 | 782 |
| 778 void WizardController::OnOOBECompleted() { | 783 void WizardController::OnOOBECompleted() { |
| 779 if (ShouldAutoStartEnrollment() || ShouldRecoverEnrollment()) { | 784 if (ShouldAutoStartEnrollment() || enrollment_recovery_) { |
| 780 ShowEnrollmentScreen(); | 785 ShowEnrollmentScreen(); |
| 781 } else { | 786 } else { |
| 782 PerformOOBECompletedActions(); | 787 PerformOOBECompletedActions(); |
| 783 ShowLoginScreen(LoginScreenContext()); | 788 ShowLoginScreen(LoginScreenContext()); |
| 784 } | 789 } |
| 785 } | 790 } |
| 786 | 791 |
| 787 void WizardController::OnTermsOfServiceDeclined() { | 792 void WizardController::OnTermsOfServiceDeclined() { |
| 788 // If the user declines the Terms of Service, end the session and return to | 793 // If the user declines the Terms of Service, end the session and return to |
| 789 // the login screen. | 794 // the login screen. |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 837 host_->PrewarmAuthentication(); | 842 host_->PrewarmAuthentication(); |
| 838 NetworkPortalDetector::Get()->Enable(true); | 843 NetworkPortalDetector::Get()->Enable(true); |
| 839 } | 844 } |
| 840 | 845 |
| 841 void WizardController::PerformOOBECompletedActions() { | 846 void WizardController::PerformOOBECompletedActions() { |
| 842 UMA_HISTOGRAM_COUNTS_100( | 847 UMA_HISTOGRAM_COUNTS_100( |
| 843 "HIDDetection.TimesDialogShownPerOOBECompleted", | 848 "HIDDetection.TimesDialogShownPerOOBECompleted", |
| 844 GetLocalState()->GetInteger(prefs::kTimesHIDDialogShown)); | 849 GetLocalState()->GetInteger(prefs::kTimesHIDDialogShown)); |
| 845 GetLocalState()->ClearPref(prefs::kTimesHIDDialogShown); | 850 GetLocalState()->ClearPref(prefs::kTimesHIDDialogShown); |
| 846 StartupUtils::MarkOobeCompleted(); | 851 StartupUtils::MarkOobeCompleted(); |
| 852 | |
| 853 if (enrollment_recovery_) | |
| 854 chrome::AttemptRestart(); | |
| 847 } | 855 } |
| 848 | 856 |
| 849 void WizardController::SetCurrentScreen(WizardScreen* new_current) { | 857 void WizardController::SetCurrentScreen(WizardScreen* new_current) { |
| 850 SetCurrentScreenSmooth(new_current, false); | 858 SetCurrentScreenSmooth(new_current, false); |
| 851 } | 859 } |
| 852 | 860 |
| 853 void WizardController::ShowCurrentScreen() { | 861 void WizardController::ShowCurrentScreen() { |
| 854 // ShowCurrentScreen may get called by smooth_show_timer_ even after | 862 // ShowCurrentScreen may get called by smooth_show_timer_ even after |
| 855 // flow has been switched to sign in screen (ExistingUserController). | 863 // flow has been switched to sign in screen (ExistingUserController). |
| 856 if (!oobe_display_) | 864 if (!oobe_display_) |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1135 // static | 1143 // static |
| 1136 bool WizardController::ShouldRecoverEnrollment() { | 1144 bool WizardController::ShouldRecoverEnrollment() { |
| 1137 policy::BrowserPolicyConnectorChromeOS* connector = | 1145 policy::BrowserPolicyConnectorChromeOS* connector = |
| 1138 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 1146 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
| 1139 policy::DeviceCloudPolicyInitializer* dcp_initializer = | 1147 policy::DeviceCloudPolicyInitializer* dcp_initializer = |
| 1140 connector->GetDeviceCloudPolicyInitializer(); | 1148 connector->GetDeviceCloudPolicyInitializer(); |
| 1141 return dcp_initializer && dcp_initializer->ShouldRecoverEnrollment(); | 1149 return dcp_initializer && dcp_initializer->ShouldRecoverEnrollment(); |
| 1142 } | 1150 } |
| 1143 | 1151 |
| 1144 // static | 1152 // static |
| 1153 std::string WizardController::GetEnrollmentRecoveryDomain() { | |
| 1154 policy::BrowserPolicyConnectorChromeOS* connector = | |
| 1155 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | |
| 1156 policy::DeviceCloudPolicyInitializer* dcp_initializer = | |
| 1157 connector->GetDeviceCloudPolicyInitializer(); | |
| 1158 if (!dcp_initializer) return std::string(); | |
|
pastarmovj
2014/07/15 08:44:10
nit: line break.
Thiemo Nagel
2014/07/16 09:55:32
Done.
| |
| 1159 return dcp_initializer->GetEnrollmentRecoveryDomain(); | |
| 1160 } | |
| 1161 | |
| 1162 // static | |
| 1145 bool WizardController::CanExitEnrollment() { | 1163 bool WizardController::CanExitEnrollment() { |
| 1146 policy::BrowserPolicyConnectorChromeOS* connector = | 1164 policy::BrowserPolicyConnectorChromeOS* connector = |
| 1147 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 1165 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
| 1148 CHECK(connector); | 1166 CHECK(connector); |
| 1149 return connector->GetDeviceCloudPolicyInitializer()->CanExitEnrollment(); | 1167 return connector->GetDeviceCloudPolicyInitializer()->CanExitEnrollment(); |
| 1150 } | 1168 } |
| 1151 | 1169 |
| 1152 // static | 1170 // static |
| 1153 std::string WizardController::GetForcedEnrollmentDomain() { | 1171 std::string WizardController::GetForcedEnrollmentDomain() { |
| 1154 policy::BrowserPolicyConnectorChromeOS* connector = | 1172 policy::BrowserPolicyConnectorChromeOS* connector = |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1256 bool WizardController::SetOnTimeZoneResolvedForTesting( | 1274 bool WizardController::SetOnTimeZoneResolvedForTesting( |
| 1257 const base::Closure& callback) { | 1275 const base::Closure& callback) { |
| 1258 if (timezone_resolved_) | 1276 if (timezone_resolved_) |
| 1259 return false; | 1277 return false; |
| 1260 | 1278 |
| 1261 on_timezone_resolved_for_testing_ = callback; | 1279 on_timezone_resolved_for_testing_ = callback; |
| 1262 return true; | 1280 return true; |
| 1263 } | 1281 } |
| 1264 | 1282 |
| 1265 } // namespace chromeos | 1283 } // namespace chromeos |
| OLD | NEW |