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 0895080c4f5b53dc585217054962ec7d632475bd..abbc8889c4a443c0c6f2dc0987a2d93e56791be9 100644 |
--- a/chrome/browser/chromeos/settings/device_settings_service.cc |
+++ b/chrome/browser/chromeos/settings/device_settings_service.cc |
@@ -232,8 +232,16 @@ void DeviceSettingsService::IsCurrentUserOwnerAsync( |
} |
} |
-void DeviceSettingsService::SetUsername(const std::string& username) { |
+void DeviceSettingsService::InitOwner(const std::string& username, |
+ crypto::ScopedPK11Slot slot) { |
+ if (username_ == username) |
+ return; |
+ |
+ if (owner_key_.get() && owner_key_->public_key() && owner_key_->private_key()) |
+ return; |
Mattias Nissler (ping if slow)
2014/05/15 11:21:29
I think we should replaces these two checks with t
ygorshenin1
2014/05/15 11:58:37
Done.
|
+ |
username_ = username; |
+ slot_ = slot.Pass(); |
// The private key may have become available, so force a key reload. |
owner_key_ = NULL; |
@@ -292,14 +300,19 @@ void DeviceSettingsService::EnqueueLoad(bool force_key_load) { |
weak_factory_.GetWeakPtr(), |
base::Closure())); |
operation->set_force_key_load(force_key_load); |
+ operation->set_username(username_); |
+ operation->set_slot(slot_.get()); |
Enqueue(operation); |
} |
void DeviceSettingsService::EnsureReload(bool force_key_load) { |
- if (!pending_operations_.empty()) |
+ if (!pending_operations_.empty()) { |
+ pending_operations_.front()->set_username(username_); |
+ pending_operations_.front()->set_slot(slot_.get()); |
pending_operations_.front()->RestartLoad(force_key_load); |
- else |
+ } else { |
EnqueueLoad(force_key_load); |
+ } |
} |
void DeviceSettingsService::StartNextOperation() { |