| 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_)
|
|
|