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

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc

Issue 2642823011: cros: Fold NetworkErrorModel into NetworkErrorView. (Closed)
Patch Set: Address comments Created 3 years, 11 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/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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698