Chromium Code Reviews| 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..39659e1a145bedd7d3a1f07f001c4bef5c2ea3d0 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_.get()) |
|
ygorshenin1
2014/07/07 10:30:14
nit: if (on_hide_) ...
Roman Sorokin (ftl)
2014/07/08 17:20:03
Done.
|
| + on_hide_->Run(); |
| NetworkPortalDetector::Get()->SetStrategy( |
| PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN); |
| if (delegate_) |