| 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 ERROR_STATE_BAD_USERNAME = 3, | 115 ERROR_STATE_BAD_USERNAME = 3, |
| 116 ERROR_STATE_BAD_PASSWORD = 4, | 116 ERROR_STATE_BAD_PASSWORD = 4, |
| 117 }; | 117 }; |
| 118 | 118 |
| 119 } // namespace | 119 } // namespace |
| 120 | 120 |
| 121 // EnrollmentScreenHandler, public ------------------------------ | 121 // EnrollmentScreenHandler, public ------------------------------ |
| 122 | 122 |
| 123 EnrollmentScreenHandler::EnrollmentScreenHandler( | 123 EnrollmentScreenHandler::EnrollmentScreenHandler( |
| 124 const scoped_refptr<NetworkStateInformer>& network_state_informer, | 124 const scoped_refptr<NetworkStateInformer>& network_state_informer, |
| 125 NetworkErrorModel* network_error_model) | 125 ErrorScreen* error_screen) |
| 126 : BaseScreenHandler(kJsScreenPath), | 126 : BaseScreenHandler(kJsScreenPath), |
| 127 controller_(NULL), | |
| 128 show_on_init_(false), | |
| 129 first_show_(true), | |
| 130 observe_network_failure_(false), | |
| 131 network_state_informer_(network_state_informer), | 127 network_state_informer_(network_state_informer), |
| 132 network_error_model_(network_error_model), | 128 error_screen_(error_screen), |
| 133 histogram_helper_(new ErrorScreensHistogramHelper("Enrollment")), | 129 histogram_helper_(new ErrorScreensHistogramHelper("Enrollment")), |
| 134 weak_ptr_factory_(this) { | 130 weak_ptr_factory_(this) { |
| 135 set_async_assets_load_id( | 131 set_async_assets_load_id( |
| 136 GetOobeScreenName(OobeScreen::SCREEN_OOBE_ENROLLMENT)); | 132 GetOobeScreenName(OobeScreen::SCREEN_OOBE_ENROLLMENT)); |
| 137 DCHECK(network_state_informer_.get()); | 133 DCHECK(network_state_informer_.get()); |
| 138 DCHECK(network_error_model_); | 134 DCHECK(error_screen_); |
| 139 network_state_informer_->AddObserver(this); | 135 network_state_informer_->AddObserver(this); |
| 140 } | 136 } |
| 141 | 137 |
| 142 EnrollmentScreenHandler::~EnrollmentScreenHandler() { | 138 EnrollmentScreenHandler::~EnrollmentScreenHandler() { |
| 143 network_state_informer_->RemoveObserver(this); | 139 network_state_informer_->RemoveObserver(this); |
| 144 } | 140 } |
| 145 | 141 |
| 146 // EnrollmentScreenHandler, WebUIMessageHandler implementation -- | 142 // EnrollmentScreenHandler, WebUIMessageHandler implementation -- |
| 147 | 143 |
| 148 void EnrollmentScreenHandler::RegisterMessages() { | 144 void EnrollmentScreenHandler::RegisterMessages() { |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 builder->Add("adJoinErrorMachineNameInvalid", IDS_AD_MACHINENAME_INVALID); | 411 builder->Add("adJoinErrorMachineNameInvalid", IDS_AD_MACHINENAME_INVALID); |
| 416 builder->Add("adJoinErrorMachineNameTooLong", IDS_AD_MACHINENAME_TOO_LONG); | 412 builder->Add("adJoinErrorMachineNameTooLong", IDS_AD_MACHINENAME_TOO_LONG); |
| 417 } | 413 } |
| 418 | 414 |
| 419 bool EnrollmentScreenHandler::IsOnEnrollmentScreen() const { | 415 bool EnrollmentScreenHandler::IsOnEnrollmentScreen() const { |
| 420 return (GetCurrentScreen() == OobeScreen::SCREEN_OOBE_ENROLLMENT); | 416 return (GetCurrentScreen() == OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 421 } | 417 } |
| 422 | 418 |
| 423 bool EnrollmentScreenHandler::IsEnrollmentScreenHiddenByError() const { | 419 bool EnrollmentScreenHandler::IsEnrollmentScreenHiddenByError() const { |
| 424 return (GetCurrentScreen() == OobeScreen::SCREEN_ERROR_MESSAGE && | 420 return (GetCurrentScreen() == OobeScreen::SCREEN_ERROR_MESSAGE && |
| 425 network_error_model_->GetParentScreen() == | 421 error_screen_->GetParentScreen() == |
| 426 OobeScreen::SCREEN_OOBE_ENROLLMENT); | 422 OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 427 } | 423 } |
| 428 | 424 |
| 429 void EnrollmentScreenHandler::UpdateState(NetworkError::ErrorReason reason) { | 425 void EnrollmentScreenHandler::UpdateState(NetworkError::ErrorReason reason) { |
| 430 UpdateStateInternal(reason, false); | 426 UpdateStateInternal(reason, false); |
| 431 } | 427 } |
| 432 | 428 |
| 433 // TODO(rsorokin): This function is mostly copied from SigninScreenHandler and | 429 // TODO(rsorokin): This function is mostly copied from SigninScreenHandler and |
| 434 // should be refactored in the future. | 430 // should be refactored in the future. |
| 435 void EnrollmentScreenHandler::UpdateStateInternal( | 431 void EnrollmentScreenHandler::UpdateStateInternal( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 448 const bool is_online = (state == NetworkStateInformer::ONLINE); | 444 const bool is_online = (state == NetworkStateInformer::ONLINE); |
| 449 const bool is_behind_captive_portal = | 445 const bool is_behind_captive_portal = |
| 450 (state == NetworkStateInformer::CAPTIVE_PORTAL); | 446 (state == NetworkStateInformer::CAPTIVE_PORTAL); |
| 451 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; | 447 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; |
| 452 | 448 |
| 453 LOG(WARNING) << "EnrollmentScreenHandler::UpdateState(): " | 449 LOG(WARNING) << "EnrollmentScreenHandler::UpdateState(): " |
| 454 << "state=" << NetworkStateInformer::StatusString(state) << ", " | 450 << "state=" << NetworkStateInformer::StatusString(state) << ", " |
| 455 << "reason=" << NetworkError::ErrorReasonString(reason); | 451 << "reason=" << NetworkError::ErrorReasonString(reason); |
| 456 | 452 |
| 457 if (is_online || !is_behind_captive_portal) | 453 if (is_online || !is_behind_captive_portal) |
| 458 network_error_model_->HideCaptivePortal(); | 454 error_screen_->HideCaptivePortal(); |
| 459 | 455 |
| 460 if (is_frame_error) { | 456 if (is_frame_error) { |
| 461 LOG(WARNING) << "Retry page load"; | 457 LOG(WARNING) << "Retry page load"; |
| 462 // TODO(rsorokin): Too many consecutive reloads. | 458 // TODO(rsorokin): Too many consecutive reloads. |
| 463 CallJS("doReload"); | 459 CallJS("doReload"); |
| 464 } | 460 } |
| 465 | 461 |
| 466 if (!is_online || is_frame_error) | 462 if (!is_online || is_frame_error) |
| 467 SetupAndShowOfflineMessage(state, reason); | 463 SetupAndShowOfflineMessage(state, reason); |
| 468 else | 464 else |
| 469 HideOfflineMessage(state, reason); | 465 HideOfflineMessage(state, reason); |
| 470 } | 466 } |
| 471 | 467 |
| 472 void EnrollmentScreenHandler::SetupAndShowOfflineMessage( | 468 void EnrollmentScreenHandler::SetupAndShowOfflineMessage( |
| 473 NetworkStateInformer::State state, | 469 NetworkStateInformer::State state, |
| 474 NetworkError::ErrorReason reason) { | 470 NetworkError::ErrorReason reason) { |
| 475 const std::string network_path = network_state_informer_->network_path(); | 471 const std::string network_path = network_state_informer_->network_path(); |
| 476 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); | 472 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); |
| 477 const bool is_proxy_error = IsProxyError(state, reason); | 473 const bool is_proxy_error = IsProxyError(state, reason); |
| 478 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; | 474 const bool is_frame_error = reason == NetworkError::ERROR_REASON_FRAME_ERROR; |
| 479 | 475 |
| 480 if (is_proxy_error) { | 476 if (is_proxy_error) { |
| 481 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PROXY, | 477 error_screen_->SetErrorState(NetworkError::ERROR_STATE_PROXY, |
| 482 std::string()); | 478 std::string()); |
| 483 } else if (is_behind_captive_portal) { | 479 } else if (is_behind_captive_portal) { |
| 484 // Do not bother a user with obsessive captive portal showing. This | 480 // Do not bother a user with obsessive captive portal showing. This |
| 485 // check makes captive portal being shown only once: either when error | 481 // check makes captive portal being shown only once: either when error |
| 486 // screen is shown for the first time or when switching from another | 482 // screen is shown for the first time or when switching from another |
| 487 // error screen (offline, proxy). | 483 // error screen (offline, proxy). |
| 488 if (IsOnEnrollmentScreen() || (network_error_model_->GetErrorState() != | 484 if (IsOnEnrollmentScreen() || |
| 489 NetworkError::ERROR_STATE_PORTAL)) { | 485 (error_screen_->GetErrorState() != NetworkError::ERROR_STATE_PORTAL)) { |
| 490 network_error_model_->FixCaptivePortal(); | 486 error_screen_->FixCaptivePortal(); |
| 491 } | 487 } |
| 492 const std::string network_name = GetNetworkName(network_path); | 488 const std::string network_name = GetNetworkName(network_path); |
| 493 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PORTAL, | 489 error_screen_->SetErrorState(NetworkError::ERROR_STATE_PORTAL, |
| 494 network_name); | 490 network_name); |
| 495 } else if (is_frame_error) { | 491 } else if (is_frame_error) { |
| 496 network_error_model_->SetErrorState( | 492 error_screen_->SetErrorState(NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT, |
| 497 NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT, std::string()); | 493 std::string()); |
| 498 } else { | 494 } else { |
| 499 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_OFFLINE, | 495 error_screen_->SetErrorState(NetworkError::ERROR_STATE_OFFLINE, |
| 500 std::string()); | 496 std::string()); |
| 501 } | 497 } |
| 502 | 498 |
| 503 if (GetCurrentScreen() != OobeScreen::SCREEN_ERROR_MESSAGE) { | 499 if (GetCurrentScreen() != OobeScreen::SCREEN_ERROR_MESSAGE) { |
| 504 const std::string network_type = network_state_informer_->network_type(); | 500 const std::string network_type = network_state_informer_->network_type(); |
| 505 network_error_model_->SetUIState(NetworkError::UI_STATE_SIGNIN); | 501 error_screen_->SetUIState(NetworkError::UI_STATE_SIGNIN); |
| 506 network_error_model_->SetParentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); | 502 error_screen_->SetParentScreen(OobeScreen::SCREEN_OOBE_ENROLLMENT); |
| 507 network_error_model_->SetHideCallback(base::Bind( | 503 error_screen_->SetHideCallback(base::Bind(&EnrollmentScreenHandler::DoShow, |
| 508 &EnrollmentScreenHandler::DoShow, weak_ptr_factory_.GetWeakPtr())); | 504 weak_ptr_factory_.GetWeakPtr())); |
| 509 network_error_model_->Show(); | 505 error_screen_->Show(); |
| 510 histogram_helper_->OnErrorShow(network_error_model_->GetErrorState()); | 506 histogram_helper_->OnErrorShow(error_screen_->GetErrorState()); |
| 511 } | 507 } |
| 512 } | 508 } |
| 513 | 509 |
| 514 void EnrollmentScreenHandler::HideOfflineMessage( | 510 void EnrollmentScreenHandler::HideOfflineMessage( |
| 515 NetworkStateInformer::State state, | 511 NetworkStateInformer::State state, |
| 516 NetworkError::ErrorReason reason) { | 512 NetworkError::ErrorReason reason) { |
| 517 if (IsEnrollmentScreenHiddenByError()) | 513 if (IsEnrollmentScreenHiddenByError()) |
| 518 network_error_model_->Hide(); | 514 error_screen_->Hide(); |
| 519 histogram_helper_->OnErrorHide(); | 515 histogram_helper_->OnErrorHide(); |
| 520 } | 516 } |
| 521 | 517 |
| 522 // EnrollmentScreenHandler, private ----------------------------- | 518 // EnrollmentScreenHandler, private ----------------------------- |
| 523 void EnrollmentScreenHandler::HandleToggleFakeEnrollment() { | 519 void EnrollmentScreenHandler::HandleToggleFakeEnrollment() { |
| 524 policy::PolicyOAuth2TokenFetcher::UseFakeTokensForTesting(); | 520 policy::PolicyOAuth2TokenFetcher::UseFakeTokensForTesting(); |
| 525 } | 521 } |
| 526 | 522 |
| 527 void EnrollmentScreenHandler::HandleClose(const std::string& reason) { | 523 void EnrollmentScreenHandler::HandleClose(const std::string& reason) { |
| 528 DCHECK(controller_); | 524 DCHECK(controller_); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 | 691 |
| 696 ShowScreenWithData(OobeScreen::SCREEN_OOBE_ENROLLMENT, &screen_data); | 692 ShowScreenWithData(OobeScreen::SCREEN_OOBE_ENROLLMENT, &screen_data); |
| 697 if (first_show_) { | 693 if (first_show_) { |
| 698 first_show_ = false; | 694 first_show_ = false; |
| 699 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true); | 695 UpdateStateInternal(NetworkError::ERROR_REASON_UPDATE, true); |
| 700 } | 696 } |
| 701 histogram_helper_->OnScreenShow(); | 697 histogram_helper_->OnScreenShow(); |
| 702 } | 698 } |
| 703 | 699 |
| 704 } // namespace chromeos | 700 } // namespace chromeos |
| OLD | NEW |