Index: chromeos/dbus/cryptohome_client.cc |
diff --git a/chromeos/dbus/cryptohome_client.cc b/chromeos/dbus/cryptohome_client.cc |
index 10855ca82a04754a0a84f3f361484af4e3803f81..0b825f4562fbbb3cb1266ed4179a008f396a5704 100644 |
--- a/chromeos/dbus/cryptohome_client.cc |
+++ b/chromeos/dbus/cryptohome_client.cc |
@@ -203,12 +203,11 @@ class CryptohomeClientImpl : public CryptohomeClient { |
} |
// CryptohomeClient override. |
- virtual bool TpmCanAttemptOwnership() OVERRIDE { |
+ virtual void TpmCanAttemptOwnership( |
+ const VoidMethodCallback& callback) OVERRIDE { |
INITIALIZE_METHOD_CALL(method_call, |
cryptohome::kCryptohomeTpmCanAttemptOwnership); |
- scoped_ptr<dbus::Response> response( |
- blocking_method_caller_.CallMethodAndBlock(&method_call)); |
- return response.get() != NULL; |
+ CallVoidMethod(&method_call, callback); |
} |
// CryptohomeClient override. |
@@ -324,6 +323,24 @@ class CryptohomeClientImpl : public CryptohomeClient { |
callback.Run(async_id); |
} |
+ // Calls a method without result values. |
+ void CallVoidMethod(dbus::MethodCall* method_call, |
+ const VoidMethodCallback& callback) { |
+ proxy_->CallMethod(method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
+ base::Bind(&CryptohomeClientImpl::OnVoidMethod, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ callback)); |
+ } |
+ |
+ void OnVoidMethod(const VoidMethodCallback& callback, |
+ dbus::Response* response) { |
+ if (!response) { |
+ callback.Run(DBUS_METHOD_CALL_FAILURE); |
+ return; |
+ } |
+ callback.Run(DBUS_METHOD_CALL_SUCCESS); |
+ } |
+ |
// Calls a method with a bool value reult and block. |
bool CallBoolMethodAndBlock(dbus::MethodCall* method_call, |
bool* result) { |
@@ -532,7 +549,11 @@ class CryptohomeClientStubImpl : public CryptohomeClient { |
} |
// CryptohomeClient override. |
- virtual bool TpmCanAttemptOwnership() OVERRIDE { return true; } |
+ virtual void TpmCanAttemptOwnership( |
+ const VoidMethodCallback& callback) OVERRIDE { |
+ MessageLoop::current()->PostTask( |
+ FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); |
+ } |
// CryptohomeClient override. |
virtual bool TpmClearStoredPassword() OVERRIDE { return true; } |