| 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 182b46a76d5d72869441f1b46e81bb88f537a64a..8900f93ecb39f09c89623320cee4b1614b61c157 100644
|
| --- a/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
|
| +++ b/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
|
| @@ -53,7 +53,8 @@ EnrollmentHandlerChromeOS::EnrollmentHandlerChromeOS(
|
| device_mode_(DEVICE_MODE_NOT_SET),
|
| enrollment_step_(STEP_PENDING),
|
| lockbox_init_duration_(0),
|
| - weak_factory_(this) {
|
| + lock_weak_factory_(this),
|
| + token_weak_factory_(this) {
|
| CHECK(!client_->is_registered());
|
| CHECK_EQ(DM_STATUS_SUCCESS, client_->status());
|
| store_->AddObserver(this);
|
| @@ -110,7 +111,7 @@ void EnrollmentHandlerChromeOS::OnPolicyFetched(CloudPolicyClient* client) {
|
| validator->ValidateInitialKey();
|
| validator.release()->StartValidation(
|
| base::Bind(&EnrollmentHandlerChromeOS::PolicyValidated,
|
| - weak_factory_.GetWeakPtr()));
|
| + lock_weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| void EnrollmentHandlerChromeOS::OnRegistrationStateChanged(
|
| @@ -161,18 +162,21 @@ void EnrollmentHandlerChromeOS::OnStoreLoaded(CloudPolicyStore* store) {
|
| // registration rolling again after the store finishes loading.
|
| AttemptRegistration();
|
| } else if (enrollment_step_ == STEP_STORE_POLICY) {
|
| - // Store the robot API auth refresh token.
|
| - // Currently optional, so always return success.
|
| - chromeos::DeviceOAuth2TokenService* token_service =
|
| - chromeos::DeviceOAuth2TokenServiceFactory::Get();
|
| - if (token_service && !robot_refresh_token_.empty()) {
|
| - token_service->SetAndSaveRefreshToken(robot_refresh_token_);
|
| -
|
| - }
|
| - ReportResult(EnrollmentStatus::ForStatus(EnrollmentStatus::STATUS_SUCCESS));
|
| + chromeos::DeviceOAuth2TokenServiceFactory::Get(
|
| + base::Bind(&EnrollmentHandlerChromeOS::DidGetTokenService,
|
| + token_weak_factory_.GetWeakPtr()));
|
| }
|
| }
|
|
|
| +void EnrollmentHandlerChromeOS::DidGetTokenService(
|
| + chromeos::DeviceOAuth2TokenService* token_service) {
|
| + // Store the robot API auth refresh token.
|
| + // Currently optional, so always return success.
|
| + if (token_service && !robot_refresh_token_.empty())
|
| + token_service->SetAndSaveRefreshToken(robot_refresh_token_);
|
| + ReportResult(EnrollmentStatus::ForStatus(EnrollmentStatus::STATUS_SUCCESS));
|
| +}
|
| +
|
| void EnrollmentHandlerChromeOS::OnStoreError(CloudPolicyStore* store) {
|
| DCHECK_EQ(store_, store);
|
| ReportResult(EnrollmentStatus::ForStoreError(store_->status(),
|
| @@ -271,12 +275,12 @@ void EnrollmentHandlerChromeOS::StartLockDevice(
|
| const std::string& device_id) {
|
| CHECK_EQ(STEP_LOCK_DEVICE, enrollment_step_);
|
| // Since this method is also called directly.
|
| - weak_factory_.InvalidateWeakPtrs();
|
| + lock_weak_factory_.InvalidateWeakPtrs();
|
|
|
| install_attributes_->LockDevice(
|
| user, device_mode, device_id,
|
| base::Bind(&EnrollmentHandlerChromeOS::HandleLockDeviceResult,
|
| - weak_factory_.GetWeakPtr(),
|
| + lock_weak_factory_.GetWeakPtr(),
|
| user,
|
| device_mode,
|
| device_id));
|
| @@ -303,7 +307,7 @@ void EnrollmentHandlerChromeOS::HandleLockDeviceResult(
|
| base::MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE,
|
| base::Bind(&EnrollmentHandlerChromeOS::StartLockDevice,
|
| - weak_factory_.GetWeakPtr(),
|
| + lock_weak_factory_.GetWeakPtr(),
|
| user, device_mode, device_id),
|
| base::TimeDelta::FromMilliseconds(kLockRetryIntervalMs));
|
| lockbox_init_duration_ += kLockRetryIntervalMs;
|
| @@ -333,7 +337,7 @@ void EnrollmentHandlerChromeOS::Stop() {
|
| if (client_.get())
|
| client_->RemoveObserver(this);
|
| enrollment_step_ = STEP_FINISHED;
|
| - weak_factory_.InvalidateWeakPtrs();
|
| + lock_weak_factory_.InvalidateWeakPtrs();
|
| completion_callback_.Reset();
|
| }
|
|
|
|
|