Index: chromeos/dbus/biod/biod_client.cc |
diff --git a/chromeos/dbus/biod/biod_client.cc b/chromeos/dbus/biod/biod_client.cc |
index 5a77c18fdea6ae424d98a9be688f32859a6cfc43..8ea818dc915e1f1182841e056525edf59cbbf6ef 100644 |
--- a/chromeos/dbus/biod/biod_client.cc |
+++ b/chromeos/dbus/biod/biod_client.cc |
@@ -66,14 +66,17 @@ class BiodClientImpl : public BiodClient { |
weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
- void DestroyAllRecords() override { |
+ void DestroyAllRecords(const VoidDBusMethodCallback& callback) override { |
dbus::MethodCall method_call( |
biod::kBiometricsManagerInterface, |
biod::kBiometricsManagerDestroyAllRecordsMethod); |
- biod_proxy_->CallMethod(&method_call, |
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- dbus::ObjectProxy::EmptyResponseCallback()); |
+ biod_proxy_->CallMethodWithErrorCallback( |
Daniel Erat
2017/04/08 00:12:34
instead of using CallMethodWithErrorCallback, i th
sammiequon
2017/04/08 01:03:30
Hmm, ok. But when would call with error callback b
Daniel Erat
2017/04/08 01:06:03
you mean, when should CallMethodWithErrorCallback
sammiequon
2017/04/08 01:31:47
Acknowledged.
|
+ &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
+ base::Bind(&BiodClientImpl::OnVoidMethodSuccess, |
+ weak_ptr_factory_.GetWeakPtr(), callback), |
+ base::Bind(&BiodClientImpl::OnVoidMethodFailure, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
void StartAuthSession(const ObjectPathCallback& callback) override { |
@@ -100,31 +103,39 @@ class BiodClientImpl : public BiodClient { |
weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
- void CancelEnrollSession( |
- const dbus::ObjectPath& enroll_session_path) override { |
+ void CancelEnrollSession(const dbus::ObjectPath& enroll_session_path, |
+ const VoidDBusMethodCallback& callback) override { |
dbus::MethodCall method_call(biod::kEnrollSessionInterface, |
biod::kEnrollSessionCancelMethod); |
dbus::ObjectProxy* enroll_session_proxy = |
bus_->GetObjectProxy(biod::kBiodServiceName, enroll_session_path); |
- enroll_session_proxy->CallMethod( |
+ enroll_session_proxy->CallMethodWithErrorCallback( |
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- dbus::ObjectProxy::EmptyResponseCallback()); |
+ base::Bind(&BiodClientImpl::OnVoidMethodSuccess, |
+ weak_ptr_factory_.GetWeakPtr(), callback), |
+ base::Bind(&BiodClientImpl::OnVoidMethodFailure, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
- void EndAuthSession(const dbus::ObjectPath& auth_session_path) override { |
+ void EndAuthSession(const dbus::ObjectPath& auth_session_path, |
+ const VoidDBusMethodCallback& callback) override { |
dbus::MethodCall method_call(biod::kAuthSessionInterface, |
biod::kAuthSessionEndMethod); |
dbus::ObjectProxy* auth_session_proxy = |
bus_->GetObjectProxy(biod::kBiodServiceName, auth_session_path); |
- auth_session_proxy->CallMethod(&method_call, |
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- dbus::ObjectProxy::EmptyResponseCallback()); |
+ auth_session_proxy->CallMethodWithErrorCallback( |
+ &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
+ base::Bind(&BiodClientImpl::OnVoidMethodSuccess, |
+ weak_ptr_factory_.GetWeakPtr(), callback), |
+ base::Bind(&BiodClientImpl::OnVoidMethodFailure, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
void SetRecordLabel(const dbus::ObjectPath& record_path, |
- const std::string& label) override { |
+ const std::string& label, |
+ const VoidDBusMethodCallback& callback) override { |
dbus::MethodCall method_call(biod::kRecordInterface, |
biod::kRecordSetLabelMethod); |
dbus::MessageWriter writer(&method_call); |
@@ -137,15 +148,19 @@ class BiodClientImpl : public BiodClient { |
dbus::ObjectProxy::EmptyResponseCallback()); |
} |
- void RemoveRecord(const dbus::ObjectPath& record_path) override { |
+ void RemoveRecord(const dbus::ObjectPath& record_path, |
+ const VoidDBusMethodCallback& callback) override { |
dbus::MethodCall method_call(biod::kRecordInterface, |
biod::kRecordRemoveMethod); |
dbus::ObjectProxy* record_proxy = |
bus_->GetObjectProxy(biod::kBiodServiceName, record_path); |
- record_proxy->CallMethod(&method_call, |
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- dbus::ObjectProxy::EmptyResponseCallback()); |
+ record_proxy->CallMethodWithErrorCallback( |
+ &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
+ base::Bind(&BiodClientImpl::OnVoidMethodSuccess, |
+ weak_ptr_factory_.GetWeakPtr(), callback), |
+ base::Bind(&BiodClientImpl::OnVoidMethodFailure, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
void RequestRecordLabel(const dbus::ObjectPath& record_path, |
@@ -201,6 +216,29 @@ class BiodClientImpl : public BiodClient { |
} |
private: |
+ void OnVoidMethodSuccess(const VoidDBusMethodCallback& callback, |
Daniel Erat
2017/04/08 00:12:34
this isn't accessing any of the class's state, so
sammiequon
2017/04/08 01:03:30
Done.
|
+ dbus::Response* response) { |
+ if (!response) { |
Daniel Erat
2017/04/08 00:12:34
much simpler:
callback.Run(response ? DBUS_METH
sammiequon
2017/04/08 01:03:30
Done.
|
+ callback.Run(DBUS_METHOD_CALL_FAILURE); |
+ return; |
+ } |
+ callback.Run(DBUS_METHOD_CALL_SUCCESS); |
+ } |
+ |
+ void OnVoidMethodFailure(const VoidDBusMethodCallback& callback, |
+ dbus::ErrorResponse* response) { |
+ std::string error_name; |
+ std::string error_message; |
+ if (response) { |
+ // Error message may contain the error message as string. |
+ dbus::MessageReader reader(response); |
+ error_name = response->GetErrorName(); |
+ reader.PopString(&error_message); |
+ } |
+ LOG(ERROR) << "Failed method call: " << error_name << ": " << error_message; |
+ callback.Run(DBUS_METHOD_CALL_FAILURE); |
+ } |
+ |
void OnStartEnrollSession(const ObjectPathCallback& callback, |
dbus::Response* response) { |
dbus::ObjectPath result; |