Chromium Code Reviews| Index: chrome/browser/chromeos/settings/session_manager_operation.cc |
| diff --git a/chrome/browser/chromeos/settings/session_manager_operation.cc b/chrome/browser/chromeos/settings/session_manager_operation.cc |
| index bfe8316c87e30cb90f995b6934152ddfec25c6e7..df6764b26ae74b6e8e655c150a1d4def0af7060c 100644 |
| --- a/chrome/browser/chromeos/settings/session_manager_operation.cc |
| +++ b/chrome/browser/chromeos/settings/session_manager_operation.cc |
| @@ -70,6 +70,13 @@ void SessionManagerOperation::StartLoading() { |
| } |
| } |
| +void SessionManagerOperation::LoadImmediately() { |
| + StorePublicKey( |
| + base::Bind(&SessionManagerOperation::BlockingRetrieveDeviceSettings, |
| + weak_factory_.GetWeakPtr()), |
| + LoadPublicKey(owner_key_util_, public_key_)); |
| +} |
| + |
| void SessionManagerOperation::ReportResult( |
| DeviceSettingsService::Status status) { |
| callback_.Run(this, status); |
| @@ -132,6 +139,11 @@ void SessionManagerOperation::RetrieveDeviceSettings() { |
| weak_factory_.GetWeakPtr())); |
| } |
| +void SessionManagerOperation::BlockingRetrieveDeviceSettings() { |
| + ValidateDeviceSettings( |
| + session_manager_client()->BlockingRetrieveDevicePolicy()); |
| +} |
| + |
| void SessionManagerOperation::ValidateDeviceSettings( |
| const std::string& policy_blob) { |
| std::unique_ptr<em::PolicyFetchResponse> policy( |
| @@ -191,9 +203,14 @@ void SessionManagerOperation::ValidateDeviceSettings( |
| validator->ValidatePolicyType(policy::dm_protocol::kChromeDevicePolicyType); |
| validator->ValidatePayload(); |
| - validator->StartValidation( |
| - base::Bind(&SessionManagerOperation::ReportValidatorStatus, |
| - weak_factory_.GetWeakPtr())); |
| + if (force_immediate_load_) { |
| + validator->RunValidation(); |
| + ReportValidatorStatus(validator); |
|
emaxx
2017/02/28 14:31:31
Isn't the validator leaking in this case?
If so, t
Sergey Poromov
2017/02/28 15:47:37
Done.
|
| + } else { |
| + validator->StartValidation( |
| + base::Bind(&SessionManagerOperation::ReportValidatorStatus, |
| + weak_factory_.GetWeakPtr())); |
| + } |
| } |
| void SessionManagerOperation::ReportValidatorStatus( |
| @@ -219,16 +236,21 @@ void SessionManagerOperation::ReportValidatorStatus( |
| LoadSettingsOperation::LoadSettingsOperation(bool force_key_load, |
| bool cloud_validations, |
| + bool force_immediate_load, |
| const Callback& callback) |
| : SessionManagerOperation(callback) { |
| force_key_load_ = force_key_load; |
| cloud_validations_ = cloud_validations; |
| + force_immediate_load_ = force_immediate_load; |
| } |
| LoadSettingsOperation::~LoadSettingsOperation() {} |
| void LoadSettingsOperation::Run() { |
| - StartLoading(); |
| + if (force_immediate_load_) |
| + LoadImmediately(); |
| + else |
| + StartLoading(); |
| } |
| StoreSettingsOperation::StoreSettingsOperation( |