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