Chromium Code Reviews| Index: chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc |
| diff --git a/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc |
| index 1068d19f9cf271d3999093da0fd071e903b0a344..9b820f890481306c100aa043e3628891ec6cd07e 100644 |
| --- a/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc |
| +++ b/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc |
| @@ -43,7 +43,9 @@ AppLaunchSplashScreenHandler::AppLaunchSplashScreenHandler( |
| show_on_init_(false), |
| state_(APP_LAUNCH_STATE_LOADING_AUTH_FILE), |
| network_state_informer_(network_state_informer), |
| - error_screen_actor_(error_screen_actor) { |
| + error_screen_actor_(error_screen_actor), |
| + online_state_(false), |
| + network_config_requested_(false) { |
| network_state_informer_->AddObserver(this); |
| } |
| @@ -101,6 +103,10 @@ void AppLaunchSplashScreenHandler::RegisterMessages() { |
| &AppLaunchSplashScreenHandler::HandleConfigureNetwork); |
| AddCallback("cancelAppLaunch", |
| &AppLaunchSplashScreenHandler::HandleCancelAppLaunch); |
| + AddCallback("continueAppLaunch", |
| + &AppLaunchSplashScreenHandler::HandleContinueAppLaunch); |
| + AddCallback("networkConfigRequest", |
| + &AppLaunchSplashScreenHandler::HandleNetworkConfigRequested); |
| } |
| void AppLaunchSplashScreenHandler::PrepareToShow() { |
| @@ -133,8 +139,11 @@ void AppLaunchSplashScreenHandler::SetDelegate( |
| void AppLaunchSplashScreenHandler::ShowNetworkConfigureUI() { |
| NetworkStateInformer::State state = network_state_informer_->state(); |
| if (state == NetworkStateInformer::ONLINE) { |
| - delegate_->OnNetworkStateChanged(true); |
| - return; |
| + online_state_ = true; |
| + if (!network_config_requested_) { |
| + delegate_->OnNetworkStateChanged(true); |
| + return; |
| + } |
| } |
| const std::string network_path = network_state_informer_->network_path(); |
| @@ -162,6 +171,11 @@ void AppLaunchSplashScreenHandler::ShowNetworkConfigureUI() { |
| ErrorScreen::ERROR_STATE_OFFLINE, network_name); |
| break; |
| } |
| + case NetworkStateInformer::ONLINE: { |
| + error_screen_actor_->SetErrorState( |
| + ErrorScreen::ERROR_STATE_KIOSK_ONLINE, network_name); |
| + break; |
| + } |
| default: |
| error_screen_actor_->SetErrorState( |
| ErrorScreen::ERROR_STATE_OFFLINE, network_name); |
| @@ -195,8 +209,12 @@ void AppLaunchSplashScreenHandler::UpdateState( |
| return; |
| } |
| - NetworkStateInformer::State state = network_state_informer_->state(); |
| - delegate_->OnNetworkStateChanged(state == NetworkStateInformer::ONLINE); |
| + bool new_online_state = |
| + network_state_informer_->state() == NetworkStateInformer::ONLINE; |
| + if (new_online_state != online_state_) |
| + ShowNetworkConfigureUI(); |
|
xiyuan
2014/03/25 05:21:19
This would by-pass the owner auth check or policy
zel
2014/03/25 22:26:32
Done.
|
| + |
| + online_state_ = new_online_state; |
| } |
| void AppLaunchSplashScreenHandler::PopulateAppInfo( |
| @@ -253,4 +271,22 @@ void AppLaunchSplashScreenHandler::HandleCancelAppLaunch() { |
| LOG(WARNING) << "No delegate set to handle cancel app launch"; |
| } |
| +void AppLaunchSplashScreenHandler::HandleNetworkConfigRequested() { |
| + if (delegate_) { |
| + network_config_requested_ = true; |
| + delegate_->OnNetworkConfigRequested(true); |
| + } else { |
| + LOG(WARNING) << "No delegate set to handle cancel app launch"; |
|
xiyuan
2014/03/25 05:21:19
The message needs to be updated.
|
| + } |
| +} |
| + |
| +void AppLaunchSplashScreenHandler::HandleContinueAppLaunch() { |
| + DCHECK(online_state_); |
| + if (delegate_ && online_state_) { |
| + network_config_requested_ = false; |
| + delegate_->OnNetworkConfigRequested(false); |
| + delegate_->OnNetworkStateChanged(true); |
| + } |
| +} |
| + |
| } // namespace chromeos |