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

Unified Diff: chrome/browser/chromeos/login/enrollment/auto_enrollment_check_step.cc

Issue 289133002: Add a enterprise enrollment check screen to OOBE in ChromeOS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Improved wording. Created 6 years, 7 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/enrollment/auto_enrollment_check_step.cc
diff --git a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_step.cc b/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_step.cc
deleted file mode 100644
index 276e4053a420150a888ccbf50cc6ab49d778f6e9..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_step.cc
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/login/enrollment/auto_enrollment_check_step.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "chrome/browser/chromeos/login/screens/screen_observer.h"
-#include "chromeos/chromeos_switches.h"
-#include "chromeos/network/network_state.h"
-#include "chromeos/network/network_state_handler.h"
-
-namespace chromeos {
-
-AutoEnrollmentCheckStep::AutoEnrollmentCheckStep(
- ScreenObserver* screen_observer,
- AutoEnrollmentController* auto_enrollment_controller)
- : screen_observer_(screen_observer),
- auto_enrollment_controller_(auto_enrollment_controller),
- captive_portal_status_(
- NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN),
- auto_enrollment_state_(policy::AUTO_ENROLLMENT_STATE_IDLE) {}
-
-AutoEnrollmentCheckStep::~AutoEnrollmentCheckStep() {
- NetworkPortalDetector::Get()->RemoveObserver(this);
-}
-
-void AutoEnrollmentCheckStep::Start() {
- if (AutoEnrollmentController::GetMode() !=
- AutoEnrollmentController::MODE_FORCED_RE_ENROLLMENT) {
- SignalCompletion();
- return;
- }
-
- // Make sure the auto-enrollment client is running.
- auto_enrollment_controller_->Start();
-
- auto_enrollment_progress_subscription_ =
- auto_enrollment_controller_->RegisterProgressCallback(
- base::Bind(&AutoEnrollmentCheckStep::OnAutoEnrollmentCheckProgressed,
- base::Unretained(this)));
- auto_enrollment_state_ = auto_enrollment_controller_->state();
-
- // NB: AddAndFireObserver below call back into OnPortalDetectionCompleted.
- // This guarantees that the UI gets synced to current state.
- NetworkPortalDetector* portal_detector = NetworkPortalDetector::Get();
- portal_detector->StartDetectionIfIdle();
- portal_detector->AddAndFireObserver(this);
-}
-
-void AutoEnrollmentCheckStep::OnPortalDetectionCompleted(
- const NetworkState* /* network */,
- const NetworkPortalDetector::CaptivePortalState& state) {
- UpdateState(state.status, auto_enrollment_state_);
-}
-
-void AutoEnrollmentCheckStep::OnAutoEnrollmentCheckProgressed(
- policy::AutoEnrollmentState state) {
- UpdateState(captive_portal_status_, state);
-}
-
-void AutoEnrollmentCheckStep::UpdateState(
- NetworkPortalDetector::CaptivePortalStatus new_captive_portal_status,
- policy::AutoEnrollmentState new_auto_enrollment_state) {
- // Configure the error screen to show the approriate error message.
- if (!UpdateCaptivePortalStatus(new_captive_portal_status))
- UpdateAutoEnrollmentState(new_auto_enrollment_state);
-
- // Update the connecting indicator.
- ErrorScreen* error_screen = screen_observer_->GetErrorScreen();
- error_screen->ShowConnectingIndicator(
- new_auto_enrollment_state == policy::AUTO_ENROLLMENT_STATE_PENDING);
-
- // Determine whether a retry is in order.
- bool retry = (new_captive_portal_status ==
- NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) &&
- (captive_portal_status_ !=
- NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE);
-
- // Save the new state.
- captive_portal_status_ = new_captive_portal_status;
- auto_enrollment_state_ = new_auto_enrollment_state;
-
- // Check whether a decision got made.
- switch (new_auto_enrollment_state) {
- case policy::AUTO_ENROLLMENT_STATE_IDLE:
- NOTREACHED();
- // fall through.
- case policy::AUTO_ENROLLMENT_STATE_PENDING:
- case policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR:
- break;
- case policy::AUTO_ENROLLMENT_STATE_SERVER_ERROR:
- // Server errors don't block OOBE.
- case policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT:
- case policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT:
- // Decision made, ready to proceed.
- SignalCompletion();
- return;
- }
-
- // Retry if applicable. This is last so eventual callbacks find consistent
- // state.
- if (retry)
- auto_enrollment_controller_->Retry();
-}
-
-bool AutoEnrollmentCheckStep::UpdateCaptivePortalStatus(
- NetworkPortalDetector::CaptivePortalStatus new_captive_portal_status) {
- switch (new_captive_portal_status) {
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN:
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE:
- return false;
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE:
- ShowErrorScreen(ErrorScreen::ERROR_STATE_OFFLINE);
- return true;
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL:
- ShowErrorScreen(ErrorScreen::ERROR_STATE_PORTAL);
- if (captive_portal_status_ != new_captive_portal_status)
- screen_observer_->GetErrorScreen()->FixCaptivePortal();
- return true;
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
- ShowErrorScreen(ErrorScreen::ERROR_STATE_PROXY);
- return true;
- case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_COUNT:
- // Trigger NOTREACHED() below.
- break;
- }
-
- NOTREACHED() << "Bad status " << new_captive_portal_status;
- return false;
-}
-
-bool AutoEnrollmentCheckStep::UpdateAutoEnrollmentState(
- policy::AutoEnrollmentState new_auto_enrollment_state) {
- switch (new_auto_enrollment_state) {
- case policy::AUTO_ENROLLMENT_STATE_IDLE:
- // The client should have been started already.
- NOTREACHED();
- return false;
- case policy::AUTO_ENROLLMENT_STATE_PENDING:
- case policy::AUTO_ENROLLMENT_STATE_SERVER_ERROR:
- case policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT:
- case policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT:
- return false;
- case policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR:
- ShowErrorScreen(ErrorScreen::ERROR_STATE_OFFLINE);
- return true;
- }
-
- NOTREACHED() << "bad state " << new_auto_enrollment_state;
- return false;
-}
-
-void AutoEnrollmentCheckStep::ShowErrorScreen(
- ErrorScreen::ErrorState error_state) {
- const NetworkState* network =
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
- ErrorScreen* error_screen = screen_observer_->GetErrorScreen();
- error_screen->SetUIState(ErrorScreen::UI_STATE_AUTO_ENROLLMENT_ERROR);
- error_screen->AllowGuestSignin(true);
- error_screen->SetErrorState(error_state,
- network ? network->name() : std::string());
- screen_observer_->ShowErrorScreen();
-}
-
-void AutoEnrollmentCheckStep::SignalCompletion() {
- NetworkPortalDetector::Get()->RemoveObserver(this);
- auto_enrollment_progress_subscription_.reset();
- screen_observer_->OnExit(
- ScreenObserver::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
-}
-
-} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698