Index: chrome/browser/extensions/api/music_manager_private/device_id_chromeos.cc |
diff --git a/chrome/browser/extensions/api/music_manager_private/device_id_chromeos.cc b/chrome/browser/extensions/api/music_manager_private/device_id_chromeos.cc |
index e1e0dac3d4934847371a208afe7324f822ab0fc6..0dbbf6eda2e3abc1d15c0ddcef7cb8a09bd5b02c 100644 |
--- a/chrome/browser/extensions/api/music_manager_private/device_id_chromeos.cc |
+++ b/chrome/browser/extensions/api/music_manager_private/device_id_chromeos.cc |
@@ -4,6 +4,7 @@ |
#include "chrome/browser/extensions/api/music_manager_private/device_id.h" |
+#include "base/message_loop/message_loop.h" |
#include "chromeos/cryptohome/cryptohome_library.h" |
namespace extensions { |
@@ -14,6 +15,15 @@ namespace api { |
void DeviceId::GetMachineId(const IdCallback& callback) { |
chromeos::CryptohomeLibrary* c_home = chromeos::CryptohomeLibrary::Get(); |
std::string result = c_home->GetSystemSalt(); |
+ if (result.empty()) { |
+ // cryptohome must not be running; re-request after a delay. |
+ const int64 kRequestSystemSaltDelayMs = 500; |
+ base::MessageLoop::current()->PostDelayedTask( |
+ FROM_HERE, |
+ base::Bind(&DeviceId::GetMachineId, callback), |
+ base::TimeDelta::FromMilliseconds(kRequestSystemSaltDelayMs)); |
+ return; |
+ } |
callback.Run(result); |
} |