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 ad963ff0a8149ae14e18e0f5b6a2f8d913d46fcf..78f2a59e57b72a3147a92bd5a31f983e97d7f5ba 100644 |
--- a/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc |
+++ b/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc |
@@ -10,18 +10,27 @@ |
#include "base/message_loop/message_loop.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h" |
+#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h" |
+#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_factory.h" |
#include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" |
#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" |
#include "chrome/browser/chromeos/policy/server_backed_state_keys_broker.h" |
+#include "chrome/browser/chromeos/profiles/profile_helper.h" |
#include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" |
#include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h" |
#include "chrome/browser/chromeos/settings/device_settings_service.h" |
+#include "chrome/browser/profiles/profile.h" |
#include "chromeos/chromeos_switches.h" |
+#include "components/user_manager/user_manager.h" |
#include "google_apis/gaia/gaia_urls.h" |
#include "net/http/http_status_code.h" |
namespace em = enterprise_management; |
+using chromeos::OwnerSettingsServiceChromeOS; |
+using chromeos::OwnerSettingsServiceChromeOSFactory; |
+using user_manager::UserManager; |
+ |
namespace policy { |
namespace { |
@@ -206,10 +215,11 @@ void EnrollmentHandlerChromeOS::OnStoreLoaded(CloudPolicyStore* store) { |
void EnrollmentHandlerChromeOS::OnStoreError(CloudPolicyStore* store) { |
DCHECK_EQ(store_, store); |
if (enrollment_step_ == STEP_STORE_TOKEN_AND_ID) { |
Mattias Nissler (ping if slow)
2014/12/03 09:07:54
Side note: This bailout path should only be enable
|
- // Calling DeviceSettingsService::SetManagementSettings() on a non- |
- // enterprise-managed device will trigger OnStoreError(), as |
- // DeviceCloudPolicyStore listens to all changes on DeviceSettingsService, |
- // and it calls OnStoreError() when the device is not enterprise-managed. |
+ // Calling OwnerSettingsServiceChromeOS::SetManagementSettings() |
+ // on a non- enterprise-managed device will fail as |
+ // DeviceCloudPolicyStore listens to all changes on device |
+ // settings, and it calls OnStoreError() when the device is not |
+ // enterprise-managed. |
return; |
} |
ReportResult(EnrollmentStatus::ForStoreError(store_->status(), |
@@ -346,10 +356,23 @@ void EnrollmentHandlerChromeOS::StartLockDevice() { |
// Consumer device enrollment doesn't use install attributes. Instead, |
// we put the information in the owners settings. |
enrollment_step_ = STEP_STORE_TOKEN_AND_ID; |
- device_settings_service_->SetManagementSettings( |
- em::PolicyData::CONSUMER_MANAGED, request_token_, device_id_, |
- base::Bind(&EnrollmentHandlerChromeOS::HandleSetManagementSettingsDone, |
- weak_ptr_factory_.GetWeakPtr())); |
+ const user_manager::User* user = UserManager::Get()->FindUser(username_); |
+ CHECK(user); |
+ Profile* profile = chromeos::ProfileHelper::Get()->GetProfileByUser(user); |
+ CHECK(profile); |
+ OwnerSettingsServiceChromeOS* service = |
+ OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(profile); |
+ if (service) { |
+ OwnerSettingsServiceChromeOS::ManagementSettings settings; |
+ settings.management_mode = management_mode_; |
+ settings.request_token = request_token_; |
+ settings.device_id = device_id_; |
+ service->SetManagementSettings( |
+ settings, |
+ base::Bind( |
+ &EnrollmentHandlerChromeOS::HandleSetManagementSettingsDone, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
} else { |
install_attributes_->LockDevice( |
username_, device_mode_, device_id_, |
@@ -358,10 +381,9 @@ void EnrollmentHandlerChromeOS::StartLockDevice() { |
} |
} |
-void EnrollmentHandlerChromeOS::HandleSetManagementSettingsDone() { |
+void EnrollmentHandlerChromeOS::HandleSetManagementSettingsDone(bool success) { |
CHECK_EQ(STEP_STORE_TOKEN_AND_ID, enrollment_step_); |
- if (device_settings_service_->status() != |
- chromeos::DeviceSettingsService::STORE_SUCCESS) { |
+ if (!success) { |
ReportResult(EnrollmentStatus::ForStatus( |
EnrollmentStatus::STATUS_STORE_TOKEN_AND_ID_FAILED)); |
return; |