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( |