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 7215c15b9132ef0f8d14153fada6258deb98a8a9..d942cf31b4f08f1980cdaca9c1c294c7ca822a9b 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc |
@@ -53,12 +53,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 +70,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, |
+ base::Unretained(this))); |
Denis Kuznetsov (DE-MUC)
2014/06/23 17:42:01
Use weak-refs istead of Unretained.
Roman Sorokin (ftl)
2014/06/25 16:30:12
Done.
|
+} |
+ |
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_.get()) |
+ on_hide_->Run(); |
Denis Kuznetsov (DE-MUC)
2014/06/23 17:42:01
What blocks you from using usual ShowScreen path,
Roman Sorokin (ftl)
2014/06/25 16:30:12
Cause we need to pass screen_data (which is DoShow
|
NetworkPortalDetector::Get()->SetStrategy( |
PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN); |
if (delegate_) |