Chromium Code Reviews| Index: chrome/browser/chromeos/policy/enterprise_install_attributes.cc |
| diff --git a/chrome/browser/chromeos/policy/enterprise_install_attributes.cc b/chrome/browser/chromeos/policy/enterprise_install_attributes.cc |
| index 3da20c84680bc2f69a764edf00c5dd55d15edcc5..1444067a980a1801c286c3979f47e21f948003e7 100644 |
| --- a/chrome/browser/chromeos/policy/enterprise_install_attributes.cc |
| +++ b/chrome/browser/chromeos/policy/enterprise_install_attributes.cc |
| @@ -79,11 +79,15 @@ EnterpriseInstallAttributes::EnterpriseInstallAttributes( |
| EnterpriseInstallAttributes::~EnterpriseInstallAttributes() {} |
| void EnterpriseInstallAttributes::Init(const base::FilePath& cache_file) { |
| - DCHECK_EQ(false, device_locked_); |
| + DCHECK(!device_locked_); |
| - // The actual check happens asynchronously, thus it is ok to trigger it before |
| - // Init() has completed. |
| - TriggerConsistencyCheck(kDbusRetryCount * kDbusRetryIntervalInSeconds); |
| + // Mark the consistency check as running to ensure that LockDevice() is |
| + // blocked, but wait for the cryptohome service to be available before |
| + // actually calling TriggerConsistencyCheck(). |
| + consistency_check_running_ = true; |
| + cryptohome_client_->WaitForServiceToBeAvailable(base::Bind( |
| + &EnterpriseInstallAttributes::OnCryptohomeServiceInitiallyAvailable, |
| + weak_ptr_factory_.GetWeakPtr())); |
| if (!base::PathExists(cache_file)) |
| return; |
| @@ -356,7 +360,6 @@ DeviceMode EnterpriseInstallAttributes::GetMode() { |
| } |
| void EnterpriseInstallAttributes::TriggerConsistencyCheck(int dbus_retries) { |
| - consistency_check_running_ = true; |
| cryptohome_client_->TpmIsOwned( |
| base::Bind(&EnterpriseInstallAttributes::OnTpmOwnerCheckCompleted, |
| weak_ptr_factory_.GetWeakPtr(), |
| @@ -418,6 +421,16 @@ const char EnterpriseInstallAttributes::kAttrEnterpriseUser[] = |
| const char EnterpriseInstallAttributes::kAttrConsumerKioskEnabled[] = |
| "consumer.app_kiosk_enabled"; |
| +void EnterpriseInstallAttributes::OnCryptohomeServiceInitiallyAvailable( |
| + bool service_is_ready) { |
| + if (!service_is_ready) |
| + LOG(ERROR) << "Failed waiting for cryptohome D-Bus service availability"; |
|
Thiemo Nagel
2016/09/16 03:22:06
Nit: I'd suggest ending sentence with a period.
Daniel Erat
2016/09/16 15:25:51
chrome appears to lean slightly more in the direct
|
| + |
| + // Start the consistency check even if we failed to wait for availability; |
| + // hopefully the service will become available eventually. |
| + TriggerConsistencyCheck(kDbusRetryCount); |
| +} |
| + |
| std::string EnterpriseInstallAttributes::GetDeviceModeString(DeviceMode mode) { |
| switch (mode) { |
| case DEVICE_MODE_CONSUMER: |