| 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/ui/webui/chromeos/login/enrollment_screen_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "ash/common/system/chromeos/devicetype_utils.h" | 9 #include "ash/common/system/chromeos/devicetype_utils.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 107 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
| 108 return connector->GetEnterpriseDomain(); | 108 return connector->GetEnterpriseDomain(); |
| 109 } | 109 } |
| 110 | 110 |
| 111 } // namespace | 111 } // namespace |
| 112 | 112 |
| 113 // EnrollmentScreenHandler, public ------------------------------ | 113 // EnrollmentScreenHandler, public ------------------------------ |
| 114 | 114 |
| 115 EnrollmentScreenHandler::EnrollmentScreenHandler( | 115 EnrollmentScreenHandler::EnrollmentScreenHandler( |
| 116 const scoped_refptr<NetworkStateInformer>& network_state_informer, | 116 const scoped_refptr<NetworkStateInformer>& network_state_informer, |
| 117 NetworkErrorModel* network_error_model) | 117 ErrorScreen* error_screen) |
| 118 : BaseScreenHandler(kJsScreenPath), | 118 : BaseScreenHandler(kJsScreenPath), |
| 119 controller_(NULL), | |
| 120 show_on_init_(false), | |
| 121 first_show_(true), | |
| 122 observe_network_failure_(false), | |
| 123 network_state_informer_(network_state_informer), | 119 network_state_informer_(network_state_informer), |
| 124 network_error_model_(network_error_model), | 120 error_screen_(error_screen), |
| 125 histogram_helper_(new ErrorScreensHistogramHelper("Enrollment")), | 121 histogram_helper_(new ErrorScreensHistogramHelper("Enrollment")), |
| 126 weak_ptr_factory_(this) { | 122 weak_ptr_factory_(this) { |
| 127 set_async_assets_load_id( | 123 set_async_assets_load_id( |
| 128 GetOobeScreenName(OobeScreen::SCREEN_OOBE_ENROLLMENT)); | 124 GetOobeScreenName(OobeScreen::SCREEN_OOBE_ENROLLMENT)); |
| 129 DCHECK(network_state_informer_.get()); | 125 DCHECK(network_state_informer_.get()); |
| 130 DCHECK(network_error_model_); | 126 DCHECK(error_screen_); |
| 131 network_state_informer_->AddObserver(this); | 127 network_state_informer_->AddObserver(this); |
| 132 } | 128 } |
| 133 | 129 |
| 134 EnrollmentScreenHandler::~EnrollmentScreenHandler() { | 130 EnrollmentScreenHandler::~EnrollmentScreenHandler() { |
| 135 network_state_informer_->RemoveObserver(this); | 131 network_state_informer_->RemoveObserver(this); |
| 136 } | 132 } |
| 137 | 133 |
| 138 // EnrollmentScreenHandler, WebUIMessageHandler implementation -- | 134 // EnrollmentScreenHandler, WebUIMessageHandler implementation -- |
| 139 | 135 |
| 140 void EnrollmentScreenHandler::RegisterMessages() { | 136 void EnrollmentScreenHandler::RegisterMessages() { |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 builder->Add("adLoginUser", IDS_AD_LOGIN_USER); | 399 builder->Add("adLoginUser", IDS_AD_LOGIN_USER); |
| 404 builder->Add("adLoginPassword", IDS_AD_LOGIN_PASSWORD); | 400 builder->Add("adLoginPassword", IDS_AD_LOGIN_PASSWORD); |
| 405 } | 401 } |
| 406 | 402 |
| 407 bool EnrollmentScreenHandler::IsOnEnrollmentScreen() const { | 403 bool EnrollmentScreenHandler::IsOnEnrollmentScreen() const { |
| 408 return (GetCurrentScreen() == OobeScreen::SCREEN_OOBE_ENROLLMENT); | 404 return (GetCurrentScreen() == OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 409 } | 405 } |
| 410 | 406 |
| 411 bool EnrollmentScreenHandler::IsEnrollmentScreenHiddenByError() const { | 407 bool EnrollmentScreenHandler::IsEnrollmentScreenHiddenByError() const { |
| 412 return (GetCurrentScreen() == OobeScreen::SCREEN_ERROR_MESSAGE && | 408 return (GetCurrentScreen() == OobeScreen::SCREEN_ERROR_MESSAGE && |
| 413 network_error_model_->GetParentScreen() == | 409 error_screen_->GetParentScreen() == |
| 414 OobeScreen::SCREEN_OOBE_ENROLLMENT); | 410 OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 415 } | 411 } |
| 416 | 412 |
| 417 void EnrollmentScreenHandler::UpdateState(NetworkError::ErrorReason reason) { | 413 void EnrollmentScreenHandler::UpdateState(NetworkError::ErrorReason reason) { |
| 418 UpdateStateInternal(reason, false); | 414 UpdateStateInternal(reason, false); |
| 419 } | 415 } |
| 420 | 416 |
| 421 // TODO(rsorokin): This function is mostly copied from SigninScreenHandler and | 417 // TODO(rsorokin): This function is mostly copied from SigninScreenHandler and |
| 422 // should be refactored in the future. | 418 // should be refactored in the future. |
| 423 void EnrollmentScreenHandler::UpdateStateInternal( | 419 void EnrollmentScreenHandler::UpdateStateInternal( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 436 const bool is_online = (state == NetworkStateInformer::ONLINE); | 432 const bool is_online = (state == NetworkStateInformer::ONLINE); |
| 437 const bool is_behind_captive_portal = | 433 const bool is_behind_captive_portal = |
| 438 (state == NetworkStateInformer::CAPTIVE_PORTAL); | 434 (state == NetworkStateInformer::CAPTIVE_PORTAL); |
| 439 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; | 435 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; |
| 440 | 436 |
| 441 LOG(WARNING) << "EnrollmentScreenHandler::UpdateState(): " | 437 LOG(WARNING) << "EnrollmentScreenHandler::UpdateState(): " |
| 442 << "state=" << NetworkStateInformer::StatusString(state) << ", " | 438 << "state=" << NetworkStateInformer::StatusString(state) << ", " |
| 443 << "reason=" << NetworkError::ErrorReasonString(reason); | 439 << "reason=" << NetworkError::ErrorReasonString(reason); |
| 444 | 440 |
| 445 if (is_online || !is_behind_captive_portal) | 441 if (is_online || !is_behind_captive_portal) |
| 446 network_error_model_->HideCaptivePortal(); | 442 error_screen_->HideCaptivePortal(); |
| 447 | 443 |
| 448 if (is_frame_error) { | 444 if (is_frame_error) { |
| 449 LOG(WARNING) << "Retry page load"; | 445 LOG(WARNING) << "Retry page load"; |
| 450 // TODO(rsorokin): Too many consecutive reloads. | 446 // TODO(rsorokin): Too many consecutive reloads. |
| 451 CallJS("doReload"); | 447 CallJS("doReload"); |
| 452 } | 448 } |
| 453 | 449 |
| 454 if (!is_online || is_frame_error) | 450 if (!is_online || is_frame_error) |
| 455 SetupAndShowOfflineMessage(state, reason); | 451 SetupAndShowOfflineMessage(state, reason); |
| 456 else | 452 else |
| 457 HideOfflineMessage(state, reason); | 453 HideOfflineMessage(state, reason); |
| 458 } | 454 } |
| 459 | 455 |
| 460 void EnrollmentScreenHandler::SetupAndShowOfflineMessage( | 456 void EnrollmentScreenHandler::SetupAndShowOfflineMessage( |
| 461 NetworkStateInformer::State state, | 457 NetworkStateInformer::State state, |
| 462 NetworkError::ErrorReason reason) { | 458 NetworkError::ErrorReason reason) { |
| 463 const std::string network_path = network_state_informer_->network_path(); | 459 const std::string network_path = network_state_informer_->network_path(); |
| 464 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); | 460 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); |
| 465 const bool is_proxy_error = IsProxyError(state, reason); | 461 const bool is_proxy_error = IsProxyError(state, reason); |
| 466 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; | 462 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; |
| 467 | 463 |
| 468 if (is_proxy_error) { | 464 if (is_proxy_error) { |
| 469 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PROXY, | 465 error_screen_->SetErrorState(NetworkError::ERROR_STATE_PROXY, |
| 470 std::string()); | 466 std::string()); |
| 471 } else if (is_behind_captive_portal) { | 467 } else if (is_behind_captive_portal) { |
| 472 // Do not bother a user with obsessive captive portal showing. This | 468 // Do not bother a user with obsessive captive portal showing. This |
| 473 // check makes captive portal being shown only once: either when error | 469 // check makes captive portal being shown only once: either when error |
| 474 // screen is shown for the first time or when switching from another | 470 // screen is shown for the first time or when switching from another |
| 475 // error screen (offline, proxy). | 471 // error screen (offline, proxy). |
| 476 if (IsOnEnrollmentScreen() || (network_error_model_->GetErrorState() != | 472 if (IsOnEnrollmentScreen() || |
| 477 NetworkError::ERROR_STATE_PORTAL)) { | 473 (error_screen_->GetErrorState() != NetworkError::ERROR_STATE_PORTAL)) { |
| 478 network_error_model_->FixCaptivePortal(); | 474 error_screen_->FixCaptivePortal(); |
| 479 } | 475 } |
| 480 const std::string network_name = GetNetworkName(network_path); | 476 const std::string network_name = GetNetworkName(network_path); |
| 481 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PORTAL, | 477 error_screen_->SetErrorState(NetworkError::ERROR_STATE_PORTAL, |
| 482 network_name); | 478 network_name); |
| 483 } else if (is_frame_error) { | 479 } else if (is_frame_error) { |
| 484 network_error_model_->SetErrorState( | 480 error_screen_->SetErrorState(NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT, |
| 485 NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT, std::string()); | 481 std::string()); |
| 486 } else { | 482 } else { |
| 487 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_OFFLINE, | 483 error_screen_->SetErrorState(NetworkError::ERROR_STATE_OFFLINE, |
| 488 std::string()); | 484 std::string()); |
| 489 } | 485 } |
| 490 | 486 |
| 491 if (GetCurrentScreen() != OobeScreen::SCREEN_ERROR_MESSAGE) { | 487 if (GetCurrentScreen() != OobeScreen::SCREEN_ERROR_MESSAGE) { |
| 492 const std::string network_type = network_state_informer_->network_type(); | 488 const std::string network_type = network_state_informer_->network_type(); |
| 493 network_error_model_->SetUIState(NetworkError::UI_STATE_SIGNIN); | 489 error_screen_->SetUIState(NetworkError::UI_STATE_SIGNIN); |
| 494 network_error_model_->SetParentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); | 490 error_screen_->SetParentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 495 network_error_model_->SetHideCallback(base::Bind( | 491 error_screen_->SetHideCallback(base::Bind(&EnrollmentScreenHandler::DoShow, |
| 496 &EnrollmentScreenHandler::DoShow, weak_ptr_factory_.GetWeakPtr())); | 492 weak_ptr_factory_.GetWeakPtr())); |
| 497 network_error_model_->Show(); | 493 error_screen_->Show(); |
| 498 histogram_helper_->OnErrorShow(network_error_model_->GetErrorState()); | 494 histogram_helper_->OnErrorShow(error_screen_->GetErrorState()); |
| 499 } | 495 } |
| 500 } | 496 } |
| 501 | 497 |
| 502 void EnrollmentScreenHandler::HideOfflineMessage( | 498 void EnrollmentScreenHandler::HideOfflineMessage( |
| 503 NetworkStateInformer::State state, | 499 NetworkStateInformer::State state, |
| 504 NetworkError::ErrorReason reason) { | 500 NetworkError::ErrorReason reason) { |
| 505 if (IsEnrollmentScreenHiddenByError()) | 501 if (IsEnrollmentScreenHiddenByError()) |
| 506 network_error_model_->Hide(); | 502 error_screen_->Hide(); |
| 507 histogram_helper_->OnErrorHide(); | 503 histogram_helper_->OnErrorHide(); |
| 508 } | 504 } |
| 509 | 505 |
| 510 // EnrollmentScreenHandler, private ----------------------------- | 506 // EnrollmentScreenHandler, private ----------------------------- |
| 511 void EnrollmentScreenHandler::HandleToggleFakeEnrollment() { | 507 void EnrollmentScreenHandler::HandleToggleFakeEnrollment() { |
| 512 policy::PolicyOAuth2TokenFetcher::UseFakeTokensForTesting(); | 508 policy::PolicyOAuth2TokenFetcher::UseFakeTokensForTesting(); |
| 513 } | 509 } |
| 514 | 510 |
| 515 void EnrollmentScreenHandler::HandleClose(const std::string& reason) { | 511 void EnrollmentScreenHandler::HandleClose(const std::string& reason) { |
| 516 DCHECK(controller_); | 512 DCHECK(controller_); |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 | 657 |
| 662 ShowScreenWithData(OobeScreen::SCREEN_OOBE_ENROLLMENT, &screen_data); | 658 ShowScreenWithData(OobeScreen::SCREEN_OOBE_ENROLLMENT, &screen_data); |
| 663 if (first_show_) { | 659 if (first_show_) { |
| 664 first_show_ = false; | 660 first_show_ = false; |
| 665 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true); | 661 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true); |
| 666 } | 662 } |
| 667 histogram_helper_->OnScreenShow(); | 663 histogram_helper_->OnScreenShow(); |
| 668 } | 664 } |
| 669 | 665 |
| 670 } // namespace chromeos | 666 } // namespace chromeos |
| OLD | NEW |