| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/app_launch_controller.h" | 5 #include "chrome/browser/chromeos/login/app_launch_controller.h" |
| 6 | 6 |
| 7 #include "apps/app_window.h" | 7 #include "apps/app_window.h" |
| 8 #include "apps/app_window_registry.h" | 8 #include "apps/app_window_registry.h" |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 diagnostic_mode_(diagnostic_mode), | 112 diagnostic_mode_(diagnostic_mode), |
| 113 host_(host), | 113 host_(host), |
| 114 oobe_display_(oobe_display), | 114 oobe_display_(oobe_display), |
| 115 app_launch_splash_screen_actor_( | 115 app_launch_splash_screen_actor_( |
| 116 oobe_display_->GetAppLaunchSplashScreenActor()), | 116 oobe_display_->GetAppLaunchSplashScreenActor()), |
| 117 webui_visible_(false), | 117 webui_visible_(false), |
| 118 launcher_ready_(false), | 118 launcher_ready_(false), |
| 119 waiting_for_network_(false), | 119 waiting_for_network_(false), |
| 120 network_wait_timedout_(false), | 120 network_wait_timedout_(false), |
| 121 showing_network_dialog_(false), | 121 showing_network_dialog_(false), |
| 122 network_config_requested_(false), |
| 122 launch_splash_start_time_(0) { | 123 launch_splash_start_time_(0) { |
| 123 } | 124 } |
| 124 | 125 |
| 125 AppLaunchController::~AppLaunchController() { | 126 AppLaunchController::~AppLaunchController() { |
| 126 app_launch_splash_screen_actor_->SetDelegate(NULL); | 127 app_launch_splash_screen_actor_->SetDelegate(NULL); |
| 127 } | 128 } |
| 128 | 129 |
| 129 void AppLaunchController::StartAppLaunch() { | 130 void AppLaunchController::StartAppLaunch() { |
| 130 DVLOG(1) << "Starting kiosk mode..."; | 131 DVLOG(1) << "Starting kiosk mode..."; |
| 131 | 132 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 OnReadyToLaunch(); | 210 OnReadyToLaunch(); |
| 210 } | 211 } |
| 211 | 212 |
| 212 void AppLaunchController::OnCancelAppLaunch() { | 213 void AppLaunchController::OnCancelAppLaunch() { |
| 213 if (KioskAppManager::Get()->GetDisableBailoutShortcut()) | 214 if (KioskAppManager::Get()->GetDisableBailoutShortcut()) |
| 214 return; | 215 return; |
| 215 | 216 |
| 216 OnLaunchFailed(KioskAppLaunchError::USER_CANCEL); | 217 OnLaunchFailed(KioskAppLaunchError::USER_CANCEL); |
| 217 } | 218 } |
| 218 | 219 |
| 220 void AppLaunchController::OnNetworkConfigRequested(bool requested) { |
| 221 network_config_requested_ = requested; |
| 222 if (requested) |
| 223 MaybeShowNetworkConfigureUI(); |
| 224 else |
| 225 startup_app_launcher_->RestartLauncher(); |
| 226 } |
| 227 |
| 219 void AppLaunchController::OnNetworkStateChanged(bool online) { | 228 void AppLaunchController::OnNetworkStateChanged(bool online) { |
| 220 if (!waiting_for_network_) | 229 if (!waiting_for_network_) |
| 221 return; | 230 return; |
| 222 | 231 |
| 223 if (online) | 232 if (online && !network_config_requested_) |
| 224 startup_app_launcher_->ContinueWithNetworkReady(); | 233 startup_app_launcher_->ContinueWithNetworkReady(); |
| 225 else if (network_wait_timedout_) | 234 else if (network_wait_timedout_) |
| 226 MaybeShowNetworkConfigureUI(); | 235 MaybeShowNetworkConfigureUI(); |
| 227 } | 236 } |
| 228 | 237 |
| 229 void AppLaunchController::OnProfileLoaded(Profile* profile) { | 238 void AppLaunchController::OnProfileLoaded(Profile* profile) { |
| 230 DVLOG(1) << "Profile loaded... Starting app launch."; | 239 DVLOG(1) << "Profile loaded... Starting app launch."; |
| 231 profile_ = profile; | 240 profile_ = profile; |
| 232 | 241 |
| 233 kiosk_profile_loader_.reset(); | 242 kiosk_profile_loader_.reset(); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 return need_owner_auth_to_configure_network_callback_->Run(); | 302 return need_owner_auth_to_configure_network_callback_->Run(); |
| 294 | 303 |
| 295 policy::BrowserPolicyConnectorChromeOS* connector = | 304 policy::BrowserPolicyConnectorChromeOS* connector = |
| 296 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 305 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
| 297 return !connector->IsEnterpriseManaged(); | 306 return !connector->IsEnterpriseManaged(); |
| 298 } | 307 } |
| 299 | 308 |
| 300 void AppLaunchController::MaybeShowNetworkConfigureUI() { | 309 void AppLaunchController::MaybeShowNetworkConfigureUI() { |
| 301 if (CanConfigureNetwork()) { | 310 if (CanConfigureNetwork()) { |
| 302 if (NeedOwnerAuthToConfigureNetwork()) { | 311 if (NeedOwnerAuthToConfigureNetwork()) { |
| 303 app_launch_splash_screen_actor_->ToggleNetworkConfig(true); | 312 if (network_config_requested_) |
| 313 OnConfigureNetwork(); |
| 314 else |
| 315 app_launch_splash_screen_actor_->ToggleNetworkConfig(true); |
| 304 } else { | 316 } else { |
| 305 showing_network_dialog_ = true; | 317 showing_network_dialog_ = true; |
| 306 app_launch_splash_screen_actor_->ShowNetworkConfigureUI(); | 318 app_launch_splash_screen_actor_->ShowNetworkConfigureUI(); |
| 307 } | 319 } |
| 308 } else { | 320 } else { |
| 309 app_launch_splash_screen_actor_->UpdateAppLaunchState( | 321 app_launch_splash_screen_actor_->UpdateAppLaunchState( |
| 310 AppLaunchSplashScreenActor::APP_LAUNCH_STATE_NETWORK_WAIT_TIMEOUT); | 322 AppLaunchSplashScreenActor::APP_LAUNCH_STATE_NETWORK_WAIT_TIMEOUT); |
| 311 } | 323 } |
| 312 } | 324 } |
| 313 | 325 |
| 314 void AppLaunchController::InitializeNetwork() { | 326 void AppLaunchController::InitializeNetwork() { |
| 315 // Show the network configration dialog if network is not initialized | 327 // Show the network configuration dialog if network is not initialized |
| 316 // after a brief wait time. | 328 // after a brief wait time. |
| 317 waiting_for_network_ = true; | 329 waiting_for_network_ = true; |
| 318 network_wait_timer_.Start( | 330 network_wait_timer_.Start( |
| 319 FROM_HERE, | 331 FROM_HERE, |
| 320 base::TimeDelta::FromSeconds(network_wait_time_), | 332 base::TimeDelta::FromSeconds(network_wait_time_), |
| 321 this, &AppLaunchController::OnNetworkWaitTimedout); | 333 this, &AppLaunchController::OnNetworkWaitTimedout); |
| 322 | 334 |
| 323 app_launch_splash_screen_actor_->UpdateAppLaunchState( | 335 app_launch_splash_screen_actor_->UpdateAppLaunchState( |
| 324 AppLaunchSplashScreenActor::APP_LAUNCH_STATE_PREPARING_NETWORK); | 336 AppLaunchSplashScreenActor::APP_LAUNCH_STATE_PREPARING_NETWORK); |
| 325 } | 337 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 350 // configuration dialog if it is being shown. | 362 // configuration dialog if it is being shown. |
| 351 if (showing_network_dialog_) { | 363 if (showing_network_dialog_) { |
| 352 app_launch_splash_screen_actor_->Show(app_id_); | 364 app_launch_splash_screen_actor_->Show(app_id_); |
| 353 showing_network_dialog_ = false; | 365 showing_network_dialog_ = false; |
| 354 launch_splash_start_time_ = base::TimeTicks::Now().ToInternalValue(); | 366 launch_splash_start_time_ = base::TimeTicks::Now().ToInternalValue(); |
| 355 } | 367 } |
| 356 } | 368 } |
| 357 | 369 |
| 358 void AppLaunchController::OnReadyToLaunch() { | 370 void AppLaunchController::OnReadyToLaunch() { |
| 359 launcher_ready_ = true; | 371 launcher_ready_ = true; |
| 372 |
| 373 if (network_config_requested_) |
| 374 return; |
| 375 |
| 360 if (!webui_visible_) | 376 if (!webui_visible_) |
| 361 return; | 377 return; |
| 362 | 378 |
| 363 if (splash_wait_timer_.IsRunning()) | 379 if (splash_wait_timer_.IsRunning()) |
| 364 return; | 380 return; |
| 365 | 381 |
| 366 const int64 time_taken_ms = (base::TimeTicks::Now() - | 382 const int64 time_taken_ms = (base::TimeTicks::Now() - |
| 367 base::TimeTicks::FromInternalValue(launch_splash_start_time_)). | 383 base::TimeTicks::FromInternalValue(launch_splash_start_time_)). |
| 368 InMilliseconds(); | 384 InMilliseconds(); |
| 369 | 385 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 395 LOG(ERROR) << "Kiosk launch failed. Will now shut down." | 411 LOG(ERROR) << "Kiosk launch failed. Will now shut down." |
| 396 << ", error=" << error; | 412 << ", error=" << error; |
| 397 DCHECK_NE(KioskAppLaunchError::NONE, error); | 413 DCHECK_NE(KioskAppLaunchError::NONE, error); |
| 398 | 414 |
| 399 // Saves the error and ends the session to go back to login screen. | 415 // Saves the error and ends the session to go back to login screen. |
| 400 KioskAppLaunchError::Save(error); | 416 KioskAppLaunchError::Save(error); |
| 401 chrome::AttemptUserExit(); | 417 chrome::AttemptUserExit(); |
| 402 CleanUp(); | 418 CleanUp(); |
| 403 } | 419 } |
| 404 | 420 |
| 421 bool AppLaunchController::IsShowingNetworkConfigScreen() { |
| 422 return network_config_requested_; |
| 423 } |
| 424 |
| 405 } // namespace chromeos | 425 } // namespace chromeos |
| OLD | NEW |