| Index: chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
|
| diff --git a/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc b/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
|
| index 3338b0d42dd4db4edfe558703e15990b91a3ecec..02c3c067a6cfe0d33a8ca7adfc8cbcf6d0083132 100644
|
| --- a/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
|
| +++ b/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
|
| @@ -25,6 +25,8 @@
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chromeos/attestation/attestation_flow.h"
|
| #include "chromeos/chromeos_switches.h"
|
| +#include "chromeos/dbus/auth_policy_client.h"
|
| +#include "chromeos/dbus/dbus_thread_manager.h"
|
| #include "google_apis/gaia/gaia_auth_util.h"
|
| #include "google_apis/gaia/gaia_urls.h"
|
| #include "net/http/http_status_code.h"
|
| @@ -250,6 +252,7 @@ void EnrollmentHandlerChromeOS::OnStoreError(CloudPolicyStore* store) {
|
| // enterprise-managed.
|
| return;
|
| }
|
| + LOG(ERROR) << "Error in device policy store.";
|
| ReportResult(EnrollmentStatus::ForStoreError(store_->status(),
|
| store_->validation_status()));
|
| }
|
| @@ -488,14 +491,38 @@ void EnrollmentHandlerChromeOS::HandleStoreRobotAuthTokenResult(bool result) {
|
| return;
|
| }
|
|
|
| + SetStep(STEP_STORE_POLICY);
|
| if (device_mode_ == policy::DEVICE_MODE_ENTERPRISE_AD) {
|
| - ReportResult(EnrollmentStatus::ForStatus(EnrollmentStatus::STATUS_SUCCESS));
|
| + CHECK(install_attributes_->IsActiveDirectoryManaged());
|
| + // Update device settings so that in case of Active Directory unsigned
|
| + // policy is accepted.
|
| + chromeos::DeviceSettingsService::Get()->SetDeviceMode(
|
| + install_attributes_->GetMode());
|
| + chromeos::DBusThreadManager::Get()
|
| + ->GetAuthPolicyClient()
|
| + ->RefreshDevicePolicy(base::Bind(
|
| + &EnrollmentHandlerChromeOS::HandleActiveDirectoryPolicyRefreshed,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| } else {
|
| - SetStep(STEP_STORE_POLICY);
|
| store_->InstallInitialPolicy(*policy_);
|
| }
|
| }
|
|
|
| +void EnrollmentHandlerChromeOS::HandleActiveDirectoryPolicyRefreshed(
|
| + bool success) {
|
| + DCHECK_EQ(STEP_STORE_POLICY, enrollment_step_);
|
| +
|
| + if (!success) {
|
| + LOG(ERROR) << "Failed to load Active Directory policy.";
|
| + ReportResult(EnrollmentStatus::ForStatus(
|
| + EnrollmentStatus::STATUS_ACTIVE_DIRECTORY_POLICY_FETCH_FAILED));
|
| + return;
|
| + }
|
| +
|
| + // After that, the enrollment flow continues in one of the OnStore* observers.
|
| + store_->Load();
|
| +}
|
| +
|
| void EnrollmentHandlerChromeOS::Stop() {
|
| if (client_.get())
|
| client_->RemoveObserver(this);
|
|
|