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

Unified Diff: chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc

Issue 872633008: Migrate (Network)ErrorScreen to ScreenContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
index 5b0bd91012a55677057508b67c19977a5b0cd43d..306a4e26418662dd17db90b8b8ef45bb5960ecb3 100644
--- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
@@ -4,35 +4,12 @@
#include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h"
-#include "base/logging.h"
#include "base/message_loop/message_loop.h"
#include "base/time/time.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/chromeos/app_mode/app_session_lifetime.h"
-#include "chrome/browser/chromeos/app_mode/certificate_manager_dialog.h"
-#include "chrome/browser/chromeos/login/ui/captive_portal_window_proxy.h"
-#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
-#include "chrome/browser/chromeos/login/ui/webui_login_view.h"
-#include "chrome/browser/extensions/component_loader.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/extensions/app_launch_params.h"
-#include "chrome/browser/ui/extensions/application_launch.h"
-#include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h"
-#include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h"
-#include "chrome/common/extensions/extension_constants.h"
+#include "chrome/browser/chromeos/login/screens/network_error_model.h"
#include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/power_manager_client.h"
-#include "chromeos/dbus/session_manager_client.h"
-#include "chromeos/network/portal_detector/network_portal_detector.h"
-#include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
#include "components/login/localized_values_builder.h"
-#include "components/user_manager/user_manager.h"
-#include "extensions/browser/extension_system.h"
-#include "extensions/common/constants.h"
-#include "grit/browser_resources.h"
#include "ui/strings/grit/ui_strings.h"
namespace {
@@ -43,131 +20,48 @@ const char kJsScreenPath[] = "login.ErrorMessageScreen";
namespace chromeos {
-ErrorScreenHandler::ErrorScreenHandler(
- const scoped_refptr<NetworkStateInformer>& network_state_informer)
+ErrorScreenHandler::ErrorScreenHandler()
: BaseScreenHandler(kJsScreenPath),
- delegate_(NULL),
- network_state_informer_(network_state_informer),
+ model_(nullptr),
show_on_init_(false),
weak_ptr_factory_(this) {
- DCHECK(network_state_informer_.get());
}
ErrorScreenHandler::~ErrorScreenHandler() {
- if (delegate_)
- delegate_->OnActorDestroyed();
+ if (model_)
+ model_->OnViewDestroyed(this);
}
-void ErrorScreenHandler::SetDelegate(ErrorScreenActorDelegate* delegate) {
- delegate_ = delegate;
+void ErrorScreenHandler::PrepareToShow() {
}
-void ErrorScreenHandler::Show(OobeDisplay::Screen parent_screen,
- base::DictionaryValue* params,
- const base::Closure& on_hide) {
+void ErrorScreenHandler::Show() {
if (!page_is_ready()) {
show_on_init_ = true;
return;
}
- parent_screen_ = parent_screen;
- on_hide_.reset(new base::Closure(on_hide));
- ShowScreen(OobeUI::kScreenErrorMessage, params);
- NetworkErrorShown();
- NetworkPortalDetector::Get()->SetStrategy(
- PortalDetectorStrategy::STRATEGY_ID_ERROR_SCREEN);
- if (delegate_)
- delegate_->OnErrorShow();
- LOG(WARNING) << "Offline message is displayed";
-}
-
-void ErrorScreenHandler::CheckAndShowScreen() {
- std::string screen_name;
- if (GetScreenName(parent_screen(), &screen_name))
- ShowScreen(screen_name.c_str(), NULL);
-}
-
-void ErrorScreenHandler::Show(OobeDisplay::Screen parent_screen,
- base::DictionaryValue* params) {
- Show(parent_screen,
- params,
- base::Bind(&ErrorScreenHandler::CheckAndShowScreen,
- weak_ptr_factory_.GetWeakPtr()));
+ BaseScreenHandler::ShowScreen(OobeUI::kScreenErrorMessage, NULL);
+ if (model_)
+ model_->OnShow();
}
void ErrorScreenHandler::Hide() {
Dmitry Polukhin 2015/03/05 09:56:54 It seems that ErrorScreen is not hiding on restori
- if (parent_screen_ == OobeUI::SCREEN_UNKNOWN)
- return;
- if (on_hide_)
- on_hide_->Run();
- NetworkPortalDetector::Get()->SetStrategy(
- PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN);
- if (delegate_)
- delegate_->OnErrorHide();
- LOG(WARNING) << "Offline message is hidden";
-}
-
-void ErrorScreenHandler::FixCaptivePortal() {
- if (!captive_portal_window_proxy_.get()) {
- content::WebContents* web_contents =
- LoginDisplayHostImpl::default_host()->GetWebUILoginView()->
- GetWebContents();
- captive_portal_window_proxy_.reset(
- new CaptivePortalWindowProxy(network_state_informer_.get(),
- web_contents));
- }
- captive_portal_window_proxy_->ShowIfRedirected();
-}
-
-void ErrorScreenHandler::ShowCaptivePortal() {
- // This call is an explicit user action
- // i.e. clicking on link so force dialog show.
- FixCaptivePortal();
- captive_portal_window_proxy_->Show();
-}
-
-void ErrorScreenHandler::HideCaptivePortal() {
- if (captive_portal_window_proxy_.get())
- captive_portal_window_proxy_->Close();
-}
-
-void ErrorScreenHandler::SetUIState(ErrorScreen::UIState ui_state) {
- show_connecting_indicator_ = false;
- ui_state_ = ui_state;
- if (page_is_ready())
- CallJS("setUIState", static_cast<int>(ui_state_));
-}
-
-void ErrorScreenHandler::SetErrorState(ErrorScreen::ErrorState error_state,
- const std::string& network) {
- error_state_ = error_state;
- network_ = network;
- if (page_is_ready())
- CallJS("setErrorState", static_cast<int>(error_state_), network);
-}
-
-void ErrorScreenHandler::AllowGuestSignin(bool allowed) {
- guest_signin_allowed_ = allowed;
- if (page_is_ready())
- CallJS("allowGuestSignin", allowed);
}
-void ErrorScreenHandler::AllowOfflineLogin(bool allowed) {
- offline_login_allowed_ = allowed;
- if (page_is_ready())
- CallJS("allowOfflineLogin", allowed);
+void ErrorScreenHandler::Bind(NetworkErrorModel& model) {
+ model_ = &model;
+ BaseScreenHandler::SetBaseScreen(model_);
}
-void ErrorScreenHandler::ShowConnectingIndicator(bool show) {
- show_connecting_indicator_ = show;
- if (page_is_ready())
- CallJS("showConnectingIndicator", show);
+void ErrorScreenHandler::Unbind() {
+ model_ = nullptr;
+ BaseScreenHandler::SetBaseScreen(nullptr);
}
-void ErrorScreenHandler::NetworkErrorShown() {
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_LOGIN_NETWORK_ERROR_SHOWN,
- content::NotificationService::AllSources(),
- content::NotificationService::NoDetails());
+void ErrorScreenHandler::ShowScreen(OobeUI::Screen screen) {
+ std::string screen_name;
+ if (GetScreenName(screen, &screen_name))
+ BaseScreenHandler::ShowScreen(screen_name.c_str(), NULL);
}
bool ErrorScreenHandler::GetScreenName(OobeUI::Screen screen,
@@ -179,75 +73,14 @@ bool ErrorScreenHandler::GetScreenName(OobeUI::Screen screen,
return true;
}
-void ErrorScreenHandler::HandleShowCaptivePortal() {
- ShowCaptivePortal();
-}
-
void ErrorScreenHandler::HandleHideCaptivePortal() {
- HideCaptivePortal();
-}
-
-void ErrorScreenHandler::HandleLocalStateErrorPowerwashButtonClicked() {
- chromeos::DBusThreadManager::Get()->GetSessionManagerClient()->
- StartDeviceWipe();
-}
-
-void ErrorScreenHandler::HandleRebootButtonClicked() {
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
-}
-
-void ErrorScreenHandler::HandleDiagnoseButtonClicked() {
- Profile* profile = ProfileManager::GetActiveUserProfile();
- ExtensionService* extension_service =
- extensions::ExtensionSystem::Get(profile)->extension_service();
-
- std::string extension_id =
- extension_service->component_loader()->Add(
- IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST,
- base::FilePath(extension_misc::kConnectivityDiagnosticsKioskPath));
-
- const extensions::Extension* extension = extension_service->
- GetExtensionById(extension_id, true);
- OpenApplication(
- AppLaunchParams(profile, extension, extensions::LAUNCH_CONTAINER_WINDOW,
- NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL));
- InitAppSession(profile, extension_id);
-
- user_manager::UserManager::Get()->SessionStarted();
-
- LoginDisplayHostImpl::default_host()->Finalize();
-}
-
-void ErrorScreenHandler::HandleConfigureCerts() {
- CertificateManagerDialog* dialog =
- new CertificateManagerDialog(ProfileManager::GetActiveUserProfile(),
- NULL,
- GetNativeWindow());
- dialog->Show();
-}
-
-void ErrorScreenHandler::HandleLaunchOobeGuestSession() {
- if (delegate_)
- delegate_->OnLaunchOobeGuestSession();
+ model_->HideCaptivePortal();
}
void ErrorScreenHandler::RegisterMessages() {
- AddCallback("showCaptivePortal",
- &ErrorScreenHandler::HandleShowCaptivePortal);
AddCallback("hideCaptivePortal",
&ErrorScreenHandler::HandleHideCaptivePortal);
- AddCallback("localStateErrorPowerwashButtonClicked",
- &ErrorScreenHandler::HandleLocalStateErrorPowerwashButtonClicked);
- AddCallback("rebootButtonClicked",
- &ErrorScreenHandler::HandleRebootButtonClicked);
- AddCallback("diagnoseButtonClicked",
- &ErrorScreenHandler::HandleDiagnoseButtonClicked);
- AddCallback("configureCertsClicked",
- &ErrorScreenHandler::HandleConfigureCerts);
- AddCallback("launchOobeGuestSession",
- &ErrorScreenHandler::HandleLaunchOobeGuestSession);
- AddCallback("rollbackOkButtonClicked",
- &ErrorScreenHandler::HandleRebootButtonClicked);
+ BaseScreenHandler::RegisterMessages();
}
void ErrorScreenHandler::DeclareLocalizedValues(
@@ -289,15 +122,10 @@ void ErrorScreenHandler::DeclareLocalizedValues(
void ErrorScreenHandler::Initialize() {
if (!page_is_ready())
return;
+
if (show_on_init_) {
- base::DictionaryValue params;
- params.SetInteger("uiState", static_cast<int>(ui_state_));
- params.SetInteger("errorState", static_cast<int>(error_state_));
- params.SetString("network", network_);
- params.SetBoolean("guestSigninAllowed", guest_signin_allowed_);
- params.SetBoolean("offlineLoginAllowed", offline_login_allowed_);
- params.SetBoolean("showConnectingIndicator", show_connecting_indicator_);
- Show(parent_screen_, &params);
+ // TODO(nkostylev): Check that context initial state is properly passed.
+ Show();
show_on_init_ = false;
}
}

Powered by Google App Engine
This is Rietveld 408576698