| Index: chrome/browser/chromeos/login/enterprise_enrollment_screen.cc
|
| diff --git a/chrome/browser/chromeos/login/enterprise_enrollment_screen.cc b/chrome/browser/chromeos/login/enterprise_enrollment_screen.cc
|
| index 6d66eecaaacecd8af7818a571cc3d88bd8577108..ec775dc7b4b8bfbb170becf21c8cabac17b4ec08 100644
|
| --- a/chrome/browser/chromeos/login/enterprise_enrollment_screen.cc
|
| +++ b/chrome/browser/chromeos/login/enterprise_enrollment_screen.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/logging.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/chromeos/login/screen_observer.h"
|
| +#include "chrome/browser/policy/browser_policy_connector.h"
|
| #include "chrome/common/net/gaia/gaia_constants.h"
|
|
|
| namespace chromeos {
|
| @@ -22,6 +23,7 @@ void EnterpriseEnrollmentScreen::Authenticate(const std::string& user,
|
| const std::string& captcha,
|
| const std::string& access_code) {
|
| captcha_token_.clear();
|
| + user_ = user;
|
| auth_fetcher_.reset(
|
| new GaiaAuthFetcher(this, GaiaConstants::kChromeSource,
|
| g_browser_process->system_request_context()));
|
| @@ -41,6 +43,8 @@ void EnterpriseEnrollmentScreen::Authenticate(const std::string& user,
|
|
|
| void EnterpriseEnrollmentScreen::CancelEnrollment() {
|
| auth_fetcher_.reset();
|
| + registrar_.reset();
|
| + g_browser_process->browser_policy_connector()->StopAutoRetry();
|
| ScreenObserver* observer = delegate()->GetObserver(this);
|
| observer->OnExit(ScreenObserver::ENTERPRISE_ENROLLMENT_CANCELLED);
|
| }
|
| @@ -51,10 +55,6 @@ void EnterpriseEnrollmentScreen::CloseConfirmation() {
|
| observer->OnExit(ScreenObserver::ENTERPRISE_ENROLLMENT_COMPLETED);
|
| }
|
|
|
| -EnterpriseEnrollmentView* EnterpriseEnrollmentScreen::AllocateView() {
|
| - return new EnterpriseEnrollmentView(this);
|
| -}
|
| -
|
| void EnterpriseEnrollmentScreen::OnClientLoginSuccess(
|
| const ClientLoginResult& result) {
|
| auth_fetcher_->StartIssueAuthToken(result.sid, result.lsid,
|
| @@ -74,12 +74,23 @@ void EnterpriseEnrollmentScreen::OnIssueAuthTokenSuccess(
|
| return;
|
| }
|
|
|
| - auth_fetcher_.reset();
|
| + scoped_ptr<GaiaAuthFetcher> auth_fetcher(auth_fetcher_.release());
|
| +
|
| + policy::BrowserPolicyConnector* connector =
|
| + g_browser_process->browser_policy_connector();
|
| + if (!connector->cloud_policy_subsystem()) {
|
| + NOTREACHED() << "Cloud policy subsystem not initialized.";
|
| + if (view())
|
| + view()->ShowFatalEnrollmentError();
|
| + return;
|
| + }
|
|
|
| - // TODO(mnissler): Trigger actual enrollment here!
|
| + registrar_.reset(new policy::CloudPolicySubsystem::ObserverRegistrar(
|
| + connector->cloud_policy_subsystem(), this));
|
|
|
| - if (view())
|
| - view()->ShowConfirmationScreen();
|
| + // Push the credentials to the policy infrastructure. It'll start enrollment
|
| + // and notify us of progress through CloudPolicySubsystem::Observer.
|
| + connector->SetCredentials(user_, auth_token);
|
| }
|
|
|
| void EnterpriseEnrollmentScreen::OnIssueAuthTokenFailure(
|
| @@ -93,6 +104,46 @@ void EnterpriseEnrollmentScreen::OnIssueAuthTokenFailure(
|
| HandleAuthError(error);
|
| }
|
|
|
| +void EnterpriseEnrollmentScreen::OnPolicyStateChanged(
|
| + policy::CloudPolicySubsystem::PolicySubsystemState state,
|
| + policy::CloudPolicySubsystem::ErrorDetails error_details) {
|
| +
|
| + if (view()) {
|
| + switch (state) {
|
| + case policy::CloudPolicySubsystem::UNENROLLED:
|
| + // Still working...
|
| + return;
|
| + case policy::CloudPolicySubsystem::BAD_GAIA_TOKEN:
|
| + case policy::CloudPolicySubsystem::LOCAL_ERROR:
|
| + view()->ShowFatalEnrollmentError();
|
| + break;
|
| + case policy::CloudPolicySubsystem::UNMANAGED:
|
| + view()->ShowAccountError();
|
| + break;
|
| + case policy::CloudPolicySubsystem::NETWORK_ERROR:
|
| + view()->ShowNetworkEnrollmentError();
|
| + break;
|
| + case policy::CloudPolicySubsystem::SUCCESS:
|
| + // Success!
|
| + registrar_.reset();
|
| + view()->ShowConfirmationScreen();
|
| + return;
|
| + }
|
| +
|
| + // We have an error.
|
| + LOG(WARNING) << "Policy subsystem error during enrollment: " << state
|
| + << " details: " << error_details;
|
| + }
|
| +
|
| + // Stop the policy infrastructure.
|
| + registrar_.reset();
|
| + g_browser_process->browser_policy_connector()->StopAutoRetry();
|
| +}
|
| +
|
| +EnterpriseEnrollmentView* EnterpriseEnrollmentScreen::AllocateView() {
|
| + return new EnterpriseEnrollmentView(this);
|
| +}
|
| +
|
| void EnterpriseEnrollmentScreen::HandleAuthError(
|
| const GoogleServiceAuthError& error) {
|
| scoped_ptr<GaiaAuthFetcher> scoped_killer(auth_fetcher_.release());
|
|
|