Chromium Code Reviews| Index: chrome/browser/chromeos/settings/device_settings_service.cc |
| diff --git a/chrome/browser/chromeos/settings/device_settings_service.cc b/chrome/browser/chromeos/settings/device_settings_service.cc |
| index 73cd7567a3d06791ed78d67452bd804b6ba75897..cdabe1075b575c92d890f73349170fe678bd5399 100644 |
| --- a/chrome/browser/chromeos/settings/device_settings_service.cc |
| +++ b/chrome/browser/chromeos/settings/device_settings_service.cc |
| @@ -129,6 +129,16 @@ void DeviceSettingsService::Load() { |
| EnqueueLoad(false); |
| } |
| +void DeviceSettingsService::LoadImmediately() { |
| + loading_immediately_ = true; |
|
Andrew T Wilson (Slow)
2017/02/23 12:05:48
Can we get rid of this data member and instead pas
Sergey Poromov
2017/02/28 14:01:17
Done.
|
| + std::unique_ptr<SessionManagerOperation> operation(new LoadSettingsOperation( |
|
emaxx
2017/02/22 17:24:33
Should the same check for "device_mode_ == policy:
Sergey Poromov
2017/02/28 14:01:17
Expect so, but needs review from tnagel@ for Activ
emaxx
2017/02/28 14:31:31
Yes, please ask Thiemo to pay special attention to
Thiemo Nagel
2017/02/28 15:41:05
Yes!
|
| + true /*force_key_load*/, true /*cloud_validations*/, |
| + true /*force_immediate_load*/, |
| + base::Bind(&DeviceSettingsService::HandleCompletedOperation, |
| + weak_factory_.GetWeakPtr(), base::Closure()))); |
| + operation->Start(session_manager_client_, owner_key_util_, public_key_); |
| +} |
| + |
| void DeviceSettingsService::Store( |
| std::unique_ptr<em::PolicyFetchResponse> policy, |
| const base::Closure& callback) { |
| @@ -233,7 +243,7 @@ void DeviceSettingsService::EnqueueLoad(bool request_key_load) { |
| cloud_validations = false; |
| } |
| linked_ptr<SessionManagerOperation> operation(new LoadSettingsOperation( |
| - request_key_load, cloud_validations, |
| + request_key_load, cloud_validations, false /*force_immediate_load*/, |
|
Thiemo Nagel
2017/02/28 15:41:05
Nit: pls add blanks: /* force_immediate_load */
|
| base::Bind(&DeviceSettingsService::HandleCompletedOperation, |
| weak_factory_.GetWeakPtr(), base::Closure()))); |
| Enqueue(operation); |
| @@ -258,7 +268,8 @@ void DeviceSettingsService::HandleCompletedOperation( |
| const base::Closure& callback, |
| SessionManagerOperation* operation, |
| Status status) { |
| - DCHECK_EQ(operation, pending_operations_.front().get()); |
| + if (!loading_immediately_) |
| + DCHECK_EQ(operation, pending_operations_.front().get()); |
| store_status_ = status; |
| if (status == STORE_SUCCESS) { |
| @@ -299,11 +310,14 @@ void DeviceSettingsService::HandleCompletedOperation( |
| if (!callback.is_null()) |
| callback.Run(); |
| - // Only remove the pending operation here, so new operations triggered by any |
| - // of the callbacks above are queued up properly. |
| - pending_operations_.pop_front(); |
| + if (!loading_immediately_) { |
|
emaxx
2017/02/22 17:24:33
Could we have a separate method for the async oper
Andrew T Wilson (Slow)
2017/02/23 12:05:48
Yes, I'd either do this, or else bind a boolean in
Sergey Poromov
2017/02/28 14:01:17
Done.
Sergey Poromov
2017/02/28 14:01:17
Done.
|
| + // Only remove the pending operation here, so new operations triggered by |
| + // any of the callbacks above are queued up properly. |
| + pending_operations_.pop_front(); |
| - StartNextOperation(); |
| + StartNextOperation(); |
| + } |
| + loading_immediately_ = false; |
| } |
| void DeviceSettingsService::HandleError(Status status, |