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

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

Issue 332243002: Network connectivity errors handling (incl. CP) for enrollment flow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed nits Created 6 years, 5 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 29c40794cc02e26f3554a34da98008f4e7e3075b..e15ba2d2f08dee7c0266bbbe7b9eccac0c3569f9 100644
--- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
@@ -42,7 +42,8 @@ ErrorScreenHandler::ErrorScreenHandler(
: BaseScreenHandler(kJsScreenPath),
delegate_(NULL),
network_state_informer_(network_state_informer),
- show_on_init_(false) {
+ show_on_init_(false),
+ weak_ptr_factory_(this) {
DCHECK(network_state_informer_.get());
}
@@ -53,12 +54,14 @@ void ErrorScreenHandler::SetDelegate(ErrorScreenActorDelegate* delegate) {
}
void ErrorScreenHandler::Show(OobeDisplay::Screen parent_screen,
- base::DictionaryValue* params) {
+ base::DictionaryValue* params,
+ const base::Closure& on_hide) {
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(
@@ -68,12 +71,25 @@ void ErrorScreenHandler::Show(OobeDisplay::Screen parent_screen,
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()));
+}
+
void ErrorScreenHandler::Hide() {
if (parent_screen_ == OobeUI::SCREEN_UNKNOWN)
return;
- std::string screen_name;
- if (GetScreenName(parent_screen_, &screen_name))
- ShowScreen(screen_name.c_str(), NULL);
+ if (on_hide_)
+ on_hide_->Run();
NetworkPortalDetector::Get()->SetStrategy(
PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN);
if (delegate_)
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/error_screen_handler.h ('k') | chrome/browser/ui/webui/chromeos/login/oobe_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698