| Index: chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc
|
| diff --git a/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc b/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc
|
| index 079cfd2042a3ea0f6eed87d58775afc448111337..3fc3cd2fc7790e2fa4204781e035c4373e6d5d27 100644
|
| --- a/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc
|
| +++ b/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.h"
|
|
|
| +#include "chrome/browser/chromeos/login/error_screen.h"
|
| #include "chrome/browser/chromeos/login/existing_user_controller.h"
|
| #include "chrome/browser/chromeos/login/managed/locally_managed_user_controller.h"
|
| #include "chrome/browser/chromeos/login/screen_observer.h"
|
| @@ -13,10 +14,43 @@
|
|
|
| namespace chromeos {
|
|
|
| +namespace {
|
| +
|
| +void ConfigureErrorScreen(ErrorScreen* screen,
|
| + const Network* network,
|
| + const NetworkPortalDetector::CaptivePortalStatus status) {
|
| + switch (status) {
|
| + case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN:
|
| + case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE:
|
| + NOTREACHED();
|
| + break;
|
| + case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE:
|
| + screen->SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE,
|
| + std::string());
|
| + break;
|
| + case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL:
|
| + screen->SetErrorState(ErrorScreen::ERROR_STATE_PORTAL,
|
| + network->name());
|
| + screen->FixCaptivePortal();
|
| + break;
|
| + case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
|
| + screen->SetErrorState(ErrorScreen::ERROR_STATE_PROXY,
|
| + std::string());
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + break;
|
| + }
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| LocallyManagedUserCreationScreen::LocallyManagedUserCreationScreen(
|
| ScreenObserver* observer,
|
| LocallyManagedUserCreationScreenHandler* actor)
|
| - : WizardScreen(observer), actor_(actor) {
|
| + : WizardScreen(observer),
|
| + actor_(actor),
|
| + on_error_screen_(false) {
|
| DCHECK(actor_);
|
| if (actor_)
|
| actor_->SetDelegate(this);
|
| @@ -37,6 +71,27 @@ void LocallyManagedUserCreationScreen::Show() {
|
| actor_->Show();
|
| actor_->ShowInitialScreen();
|
| }
|
| +
|
| + NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance();
|
| + if (detector && !on_error_screen_) {
|
| + detector->AddObserver(this);
|
| + detector->ForcePortalDetection();
|
| + }
|
| + on_error_screen_ = false;
|
| +}
|
| +
|
| +void LocallyManagedUserCreationScreen::OnPortalDetectionCompleted(
|
| + const Network* network,
|
| + const NetworkPortalDetector::CaptivePortalState& state) {
|
| + if (state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) {
|
| + get_screen_observer()->HideErrorScreen(this);
|
| + } else {
|
| + on_error_screen_ = true;
|
| + ErrorScreen* screen = get_screen_observer()->GetErrorScreen();
|
| + ConfigureErrorScreen(screen, network, state.status);
|
| + screen->SetUIState(ErrorScreen::UI_STATE_LOCALLY_MANAGED);
|
| + get_screen_observer()->ShowErrorScreen();
|
| + }
|
| }
|
|
|
| void LocallyManagedUserCreationScreen::
|
| @@ -54,10 +109,12 @@ void LocallyManagedUserCreationScreen::ShowInitialScreen() {
|
| actor_->ShowInitialScreen();
|
| }
|
|
|
| -
|
| void LocallyManagedUserCreationScreen::Hide() {
|
| if (actor_)
|
| actor_->Hide();
|
| + NetworkPortalDetector* detector = NetworkPortalDetector::GetInstance();
|
| + if (detector && !on_error_screen_)
|
| + detector->RemoveObserver(this);
|
| }
|
|
|
| std::string LocallyManagedUserCreationScreen::GetName() const {
|
|
|