| 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() {
|
| - 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_, ¶ms);
|
| + // TODO(nkostylev): Check that context initial state is properly passed.
|
| + Show();
|
| show_on_init_ = false;
|
| }
|
| }
|
|
|