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

Unified Diff: chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc

Issue 13553002: Managed user creation flow: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits Created 7 years, 9 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/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 {

Powered by Google App Engine
This is Rietveld 408576698