Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(541)

Side by Side Diff: chrome/browser/chromeos/login/wizard_controller.cc

Issue 863263006: Migrating UpdateScreen to ScreenContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: small fixes Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 #include "components/pairing/bluetooth_host_pairing_controller.h" 78 #include "components/pairing/bluetooth_host_pairing_controller.h"
79 #include "components/pairing/shark_connection_listener.h" 79 #include "components/pairing/shark_connection_listener.h"
80 #include "components/user_manager/user_manager.h" 80 #include "components/user_manager/user_manager.h"
81 #include "content/public/browser/browser_thread.h" 81 #include "content/public/browser/browser_thread.h"
82 #include "content/public/browser/notification_types.h" 82 #include "content/public/browser/notification_types.h"
83 #include "ui/base/accelerators/accelerator.h" 83 #include "ui/base/accelerators/accelerator.h"
84 84
85 using content::BrowserThread; 85 using content::BrowserThread;
86 86
87 namespace { 87 namespace {
88 // If reboot didn't happen, ask user to reboot device manually.
89 const int kWaitForRebootTimeSec = 3;
90
91 // Interval in ms which is used for smooth screen showing. 88 // Interval in ms which is used for smooth screen showing.
92 static int kShowDelayMs = 400; 89 static int kShowDelayMs = 400;
93 90
94 // Total timezone resolving process timeout. 91 // Total timezone resolving process timeout.
95 const unsigned int kResolveTimeZoneTimeoutSeconds = 60; 92 const unsigned int kResolveTimeZoneTimeoutSeconds = 60;
96 93
97 // Stores the list of all screens that should be shown when resuming OOBE. 94 // Stores the list of all screens that should be shown when resuming OOBE.
98 const char *kResumableScreens[] = { 95 const char *kResumableScreens[] = {
99 chromeos::WizardController::kNetworkScreenName, 96 chromeos::WizardController::kNetworkScreenName,
100 chromeos::WizardController::kUpdateScreenName, 97 chromeos::WizardController::kUpdateScreenName,
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 bool WizardController::skip_post_login_screens_ = false; 184 bool WizardController::skip_post_login_screens_ = false;
188 185
189 // static 186 // static
190 bool WizardController::zero_delay_enabled_ = false; 187 bool WizardController::zero_delay_enabled_ = false;
191 188
192 /////////////////////////////////////////////////////////////////////////////// 189 ///////////////////////////////////////////////////////////////////////////////
193 // WizardController, public: 190 // WizardController, public:
194 191
195 PrefService* WizardController::local_state_for_testing_ = NULL; 192 PrefService* WizardController::local_state_for_testing_ = NULL;
196 193
197 WizardController::WizardController(chromeos::LoginDisplayHost* host, 194 WizardController::WizardController(LoginDisplayHost* host,
198 chromeos::OobeDisplay* oobe_display) 195 OobeDisplay* oobe_display)
199 : current_screen_(NULL), 196 : current_screen_(NULL),
200 previous_screen_(NULL), 197 previous_screen_(NULL),
201 #if defined(GOOGLE_CHROME_BUILD) 198 #if defined(GOOGLE_CHROME_BUILD)
202 is_official_build_(true), 199 is_official_build_(true),
203 #else 200 #else
204 is_official_build_(false), 201 is_official_build_(false),
205 #endif 202 #endif
206 is_out_of_box_(false), 203 is_out_of_box_(false),
207 host_(host), 204 host_(host),
208 oobe_display_(oobe_display), 205 oobe_display_(oobe_display),
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 first_screen_name == WizardController::kTestNoScreenName)) { 270 first_screen_name == WizardController::kTestNoScreenName)) {
274 first_screen_name_ = screen_pref; 271 first_screen_name_ = screen_pref;
275 } 272 }
276 273
277 AdvanceToScreen(first_screen_name_); 274 AdvanceToScreen(first_screen_name_);
278 if (!IsMachineHWIDCorrect() && !StartupUtils::IsDeviceRegistered() && 275 if (!IsMachineHWIDCorrect() && !StartupUtils::IsDeviceRegistered() &&
279 first_screen_name_.empty()) 276 first_screen_name_.empty())
280 ShowWrongHWIDScreen(); 277 ShowWrongHWIDScreen();
281 } 278 }
282 279
283 chromeos::ErrorScreen* WizardController::GetErrorScreen() { 280 ErrorScreen* WizardController::GetErrorScreen() {
284 return static_cast<chromeos::ErrorScreen*>(GetScreen(kErrorScreenName)); 281 return static_cast<ErrorScreen*>(GetScreen(kErrorScreenName));
285 } 282 }
286 283
287 BaseScreen* WizardController::CreateScreen(const std::string& screen_name) { 284 BaseScreen* WizardController::CreateScreen(const std::string& screen_name) {
288 if (screen_name == kNetworkScreenName) { 285 if (screen_name == kNetworkScreenName) {
289 scoped_ptr<NetworkScreen> screen(new chromeos::NetworkScreen( 286 scoped_ptr<NetworkScreen> screen(
290 this, this, oobe_display_->GetNetworkView())); 287 new NetworkScreen(this, this, oobe_display_->GetNetworkView()));
291 screen->Initialize(nullptr /* context */); 288 screen->Initialize(nullptr /* context */);
292 return screen.release(); 289 return screen.release();
293 } else if (screen_name == kErrorScreenName) { 290 } else if (screen_name == kErrorScreenName) {
294 return new chromeos::ErrorScreen(this, 291 return new ErrorScreen(this, oobe_display_->GetErrorScreenActor());
295 oobe_display_->GetErrorScreenActor());
296 } else if (screen_name == kUpdateScreenName) { 292 } else if (screen_name == kUpdateScreenName) {
297 chromeos::UpdateScreen* result = 293 scoped_ptr<UpdateScreen> screen(new UpdateScreen(
298 new chromeos::UpdateScreen(this, 294 this, oobe_display_->GetUpdateView(), remora_controller_.get()));
299 oobe_display_->GetUpdateScreenActor(), 295 screen->Initialize(nullptr /* context */);
300 remora_controller_.get()); 296 return screen.release();
301 result->SetRebootCheckDelay(kWaitForRebootTimeSec);
302 return result;
303 } else if (screen_name == kUserImageScreenName) { 297 } else if (screen_name == kUserImageScreenName) {
304 return new chromeos::UserImageScreen(this, 298 return new UserImageScreen(this, oobe_display_->GetUserImageView());
305 oobe_display_->GetUserImageView());
306 } else if (screen_name == kEulaScreenName) { 299 } else if (screen_name == kEulaScreenName) {
307 return new chromeos::EulaScreen(this, this, oobe_display_->GetEulaView()); 300 return new EulaScreen(this, this, oobe_display_->GetEulaView());
308 } else if (screen_name == kEnrollmentScreenName) { 301 } else if (screen_name == kEnrollmentScreenName) {
309 return new chromeos::EnrollmentScreen( 302 return new EnrollmentScreen(this,
310 this, oobe_display_->GetEnrollmentScreenActor()); 303 oobe_display_->GetEnrollmentScreenActor());
311 } else if (screen_name == kResetScreenName) { 304 } else if (screen_name == kResetScreenName) {
312 return new chromeos::ResetScreen(this, 305 return new ResetScreen(this, oobe_display_->GetResetScreenActor());
313 oobe_display_->GetResetScreenActor());
314 } else if (screen_name == kEnableDebuggingScreenName) { 306 } else if (screen_name == kEnableDebuggingScreenName) {
315 return new chromeos::EnableDebuggingScreen( 307 return new EnableDebuggingScreen(
316 this, 308 this, oobe_display_->GetEnableDebuggingScreenActor());
317 oobe_display_->GetEnableDebuggingScreenActor());
318 } else if (screen_name == kKioskEnableScreenName) { 309 } else if (screen_name == kKioskEnableScreenName) {
319 return new chromeos::KioskEnableScreen( 310 return new KioskEnableScreen(this,
320 this, oobe_display_->GetKioskEnableScreenActor()); 311 oobe_display_->GetKioskEnableScreenActor());
321 } else if (screen_name == kKioskAutolaunchScreenName) { 312 } else if (screen_name == kKioskAutolaunchScreenName) {
322 return new chromeos::KioskAutolaunchScreen( 313 return new KioskAutolaunchScreen(
323 this, oobe_display_->GetKioskAutolaunchScreenActor()); 314 this, oobe_display_->GetKioskAutolaunchScreenActor());
324 } else if (screen_name == kTermsOfServiceScreenName) { 315 } else if (screen_name == kTermsOfServiceScreenName) {
325 return new chromeos::TermsOfServiceScreen( 316 return new TermsOfServiceScreen(
326 this, oobe_display_->GetTermsOfServiceScreenActor()); 317 this, oobe_display_->GetTermsOfServiceScreenActor());
327 } else if (screen_name == kWrongHWIDScreenName) { 318 } else if (screen_name == kWrongHWIDScreenName) {
328 return new chromeos::WrongHWIDScreen( 319 return new WrongHWIDScreen(this, oobe_display_->GetWrongHWIDScreenActor());
329 this, oobe_display_->GetWrongHWIDScreenActor());
330 } else if (screen_name == kSupervisedUserCreationScreenName) { 320 } else if (screen_name == kSupervisedUserCreationScreenName) {
331 return new chromeos::SupervisedUserCreationScreen( 321 return new SupervisedUserCreationScreen(
332 this, oobe_display_->GetSupervisedUserCreationScreenActor()); 322 this, oobe_display_->GetSupervisedUserCreationScreenActor());
333 } else if (screen_name == kHIDDetectionScreenName) { 323 } else if (screen_name == kHIDDetectionScreenName) {
334 return new chromeos::HIDDetectionScreen( 324 return new HIDDetectionScreen(this,
335 this, oobe_display_->GetHIDDetectionScreenActor()); 325 oobe_display_->GetHIDDetectionScreenActor());
336 } else if (screen_name == kAutoEnrollmentCheckScreenName) { 326 } else if (screen_name == kAutoEnrollmentCheckScreenName) {
337 return new chromeos::AutoEnrollmentCheckScreen( 327 return new AutoEnrollmentCheckScreen(
338 this, oobe_display_->GetAutoEnrollmentCheckScreenActor()); 328 this, oobe_display_->GetAutoEnrollmentCheckScreenActor());
339 } else if (screen_name == kControllerPairingScreenName) { 329 } else if (screen_name == kControllerPairingScreenName) {
340 if (!shark_controller_) { 330 if (!shark_controller_) {
341 shark_controller_.reset( 331 shark_controller_.reset(
342 new pairing_chromeos::BluetoothControllerPairingController()); 332 new pairing_chromeos::BluetoothControllerPairingController());
343 } 333 }
344 return new ControllerPairingScreen( 334 return new ControllerPairingScreen(
345 this, 335 this,
346 this, 336 this,
347 oobe_display_->GetControllerPairingScreenActor(), 337 oobe_display_->GetControllerPairingScreenActor(),
348 shark_controller_.get()); 338 shark_controller_.get());
349 } else if (screen_name == kHostPairingScreenName) { 339 } else if (screen_name == kHostPairingScreenName) {
350 if (!remora_controller_) { 340 if (!remora_controller_) {
351 remora_controller_.reset( 341 remora_controller_.reset(
352 new pairing_chromeos::BluetoothHostPairingController()); 342 new pairing_chromeos::BluetoothHostPairingController());
353 remora_controller_->StartPairing(); 343 remora_controller_->StartPairing();
354 } 344 }
355 return new HostPairingScreen(this, 345 return new HostPairingScreen(this,
356 this, 346 this,
357 oobe_display_->GetHostPairingScreenActor(), 347 oobe_display_->GetHostPairingScreenActor(),
358 remora_controller_.get()); 348 remora_controller_.get());
359 } else if (screen_name == kDeviceDisabledScreenName) { 349 } else if (screen_name == kDeviceDisabledScreenName) {
360 return new chromeos::DeviceDisabledScreen( 350 return new DeviceDisabledScreen(
361 this, oobe_display_->GetDeviceDisabledScreenActor()); 351 this, oobe_display_->GetDeviceDisabledScreenActor());
362 } 352 }
363 353
364 return NULL; 354 return NULL;
365 } 355 }
366 356
367 void WizardController::ShowNetworkScreen() { 357 void WizardController::ShowNetworkScreen() {
368 VLOG(1) << "Showing network screen."; 358 VLOG(1) << "Showing network screen.";
369 // Hide the status area initially; it only appears after OOBE first animates 359 // Hide the status area initially; it only appears after OOBE first animates
370 // in. Keep it visible if the user goes back to the existing network screen. 360 // in. Keep it visible if the user goes back to the existing network screen.
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 "OOBE.BootToSignInCompleted", 639 "OOBE.BootToSignInCompleted",
650 delta, 640 delta,
651 base::TimeDelta::FromMilliseconds(10), 641 base::TimeDelta::FromMilliseconds(10),
652 base::TimeDelta::FromMinutes(30), 642 base::TimeDelta::FromMinutes(30),
653 100); 643 100);
654 time_oobe_started_ = base::Time(); 644 time_oobe_started_ = base::Time();
655 } 645 }
656 646
657 // Launch browser and delete login host controller. 647 // Launch browser and delete login host controller.
658 BrowserThread::PostTask( 648 BrowserThread::PostTask(
659 BrowserThread::UI, 649 BrowserThread::UI, FROM_HERE,
660 FROM_HERE, 650 base::Bind(&LoginUtils::DoBrowserLaunch,
661 base::Bind(&chromeos::LoginUtils::DoBrowserLaunch, 651 base::Unretained(LoginUtils::Get()),
662 base::Unretained(chromeos::LoginUtils::Get()),
663 ProfileManager::GetActiveUserProfile(), host_)); 652 ProfileManager::GetActiveUserProfile(), host_));
664 host_ = NULL; 653 host_ = NULL;
665 } 654 }
666 655
667 void WizardController::OnUserImageSkipped() { 656 void WizardController::OnUserImageSkipped() {
668 OnUserImageSelected(); 657 OnUserImageSelected();
669 } 658 }
670 659
671 void WizardController::OnEnrollmentDone() { 660 void WizardController::OnEnrollmentDone() {
672 // If the enrollment screen was shown as part of OOBE, OOBE is considered 661 // If the enrollment screen was shown as part of OOBE, OOBE is considered
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 } else { 914 } else {
926 ShowNetworkScreen(); 915 ShowNetworkScreen();
927 } 916 }
928 } else { 917 } else {
929 ShowLoginScreen(LoginScreenContext()); 918 ShowLoginScreen(LoginScreenContext());
930 } 919 }
931 } 920 }
932 } 921 }
933 922
934 /////////////////////////////////////////////////////////////////////////////// 923 ///////////////////////////////////////////////////////////////////////////////
935 // WizardController, chromeos::BaseScreenDelegate overrides: 924 // WizardController, BaseScreenDelegate overrides:
936 void WizardController::OnExit(BaseScreen& /* screen */, 925 void WizardController::OnExit(BaseScreen& /* screen */,
937 ExitCodes exit_code, 926 ExitCodes exit_code,
938 const ::login::ScreenContext* /* context */) { 927 const ::login::ScreenContext* /* context */) {
939 VLOG(1) << "Wizard screen exit code: " << exit_code; 928 VLOG(1) << "Wizard screen exit code: " << exit_code;
940 std::string previous_screen_id = current_screen_->GetName(); 929 std::string previous_screen_id = current_screen_->GetName();
941 if (IsOOBEStepToTrack(previous_screen_id)) { 930 if (IsOOBEStepToTrack(previous_screen_id)) {
942 RecordUMAHistogramForOOBEStepCompletionTime( 931 RecordUMAHistogramForOOBEStepCompletionTime(
943 previous_screen_id, 932 previous_screen_id,
944 base::Time::Now() - screen_show_times_[previous_screen_id]); 933 base::Time::Now() - screen_show_times_[previous_screen_id]);
945 } 934 }
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 1175
1187 if (timezone->status != TimeZoneResponseData::OK) { 1176 if (timezone->status != TimeZoneResponseData::OK) {
1188 LOG(WARNING) << "Resolve TimeZone: failed to resolve timezone."; 1177 LOG(WARNING) << "Resolve TimeZone: failed to resolve timezone.";
1189 return; 1178 return;
1190 } 1179 }
1191 1180
1192 policy::BrowserPolicyConnectorChromeOS* connector = 1181 policy::BrowserPolicyConnectorChromeOS* connector =
1193 g_browser_process->platform_part()->browser_policy_connector_chromeos(); 1182 g_browser_process->platform_part()->browser_policy_connector_chromeos();
1194 if (connector->IsEnterpriseManaged()) { 1183 if (connector->IsEnterpriseManaged()) {
1195 std::string policy_timezone; 1184 std::string policy_timezone;
1196 if (chromeos::CrosSettings::Get()->GetString( 1185 if (CrosSettings::Get()->GetString(kSystemTimezonePolicy,
1197 chromeos::kSystemTimezonePolicy, &policy_timezone) && 1186 &policy_timezone) &&
1198 !policy_timezone.empty()) { 1187 !policy_timezone.empty()) {
1199 VLOG(1) << "Resolve TimeZone: TimeZone settings are overridden" 1188 VLOG(1) << "Resolve TimeZone: TimeZone settings are overridden"
1200 << " by DevicePolicy."; 1189 << " by DevicePolicy.";
1201 return; 1190 return;
1202 } 1191 }
1203 } 1192 }
1204 1193
1205 if (!timezone->timeZoneId.empty()) { 1194 if (!timezone->timeZoneId.empty()) {
1206 VLOG(1) << "Resolve TimeZone: setting timezone to '" << timezone->timeZoneId 1195 VLOG(1) << "Resolve TimeZone: setting timezone to '" << timezone->timeZoneId
1207 << "'"; 1196 << "'";
1208 1197
1209 chromeos::system::TimezoneSettings::GetInstance()->SetTimezoneFromID( 1198 system::TimezoneSettings::GetInstance()->SetTimezoneFromID(
1210 base::UTF8ToUTF16(timezone->timeZoneId)); 1199 base::UTF8ToUTF16(timezone->timeZoneId));
1211 } 1200 }
1212 } 1201 }
1213 1202
1214 TimeZoneProvider* WizardController::GetTimezoneProvider() { 1203 TimeZoneProvider* WizardController::GetTimezoneProvider() {
1215 if (!timezone_provider_) { 1204 if (!timezone_provider_) {
1216 timezone_provider_.reset( 1205 timezone_provider_.reset(
1217 new TimeZoneProvider(g_browser_process->system_request_context(), 1206 new TimeZoneProvider(g_browser_process->system_request_context(),
1218 DefaultTimezoneProviderURL())); 1207 DefaultTimezoneProviderURL()));
1219 } 1208 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 } 1291 }
1303 1292
1304 EnrollmentScreen* screen = EnrollmentScreen::Get(this); 1293 EnrollmentScreen* screen = EnrollmentScreen::Get(this);
1305 screen->SetParameters(effective_config, shark_controller_.get(), 1294 screen->SetParameters(effective_config, shark_controller_.get(),
1306 remora_controller_.get()); 1295 remora_controller_.get());
1307 SetStatusAreaVisible(true); 1296 SetStatusAreaVisible(true);
1308 SetCurrentScreen(screen); 1297 SetCurrentScreen(screen);
1309 } 1298 }
1310 1299
1311 } // namespace chromeos 1300 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698