Index: chromeos/dbus/permission_broker_client.cc |
diff --git a/chromeos/dbus/permission_broker_client.cc b/chromeos/dbus/permission_broker_client.cc |
index fb0c934db1c7175d8c69c0b3675d540bf058c7ff..1ec95714d607cacd0d7d4c53c5b12e09bd541125 100644 |
--- a/chromeos/dbus/permission_broker_client.cc |
+++ b/chromeos/dbus/permission_broker_client.cc |
@@ -42,14 +42,17 @@ class PermissionBrokerClientImpl : public PermissionBrokerClient { |
} |
void OpenPath(const std::string& path, |
- const OpenPathCallback& callback) override { |
+ const OpenPathCallback& callback, |
+ const ErrorCallback& error_callback) override { |
dbus::MethodCall method_call(kPermissionBrokerInterface, kOpenPath); |
dbus::MessageWriter writer(&method_call); |
writer.AppendString(path); |
- proxy_->CallMethod( |
+ proxy_->CallMethodWithErrorCallback( |
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
base::Bind(&PermissionBrokerClientImpl::OnOpenPathResponse, |
- weak_ptr_factory_.GetWeakPtr(), callback)); |
+ weak_ptr_factory_.GetWeakPtr(), callback), |
+ base::Bind(&PermissionBrokerClientImpl::OnError, |
+ weak_ptr_factory_.GetWeakPtr(), error_callback)); |
} |
void RequestTcpPortAccess(uint16_t port, |
@@ -133,15 +136,23 @@ class PermissionBrokerClientImpl : public PermissionBrokerClient { |
void OnOpenPathResponse(const OpenPathCallback& callback, |
dbus::Response* response) { |
dbus::FileDescriptor fd; |
+ dbus::MessageReader reader(response); |
+ if (!reader.PopFileDescriptor(&fd)) |
+ LOG(WARNING) << "Could not parse response: " << response->ToString(); |
+ callback.Run(std::move(fd)); |
+ } |
+ |
+ void OnError(const ErrorCallback& callback, dbus::ErrorResponse* response) { |
+ std::string error_name; |
+ std::string error_message; |
if (response) { |
dbus::MessageReader reader(response); |
- if (!reader.PopFileDescriptor(&fd)) |
- LOG(WARNING) << "Could not parse response: " << response->ToString(); |
+ error_name = response->GetErrorName(); |
+ reader.PopString(&error_message); |
} else { |
- LOG(WARNING) << "Access request method call failed."; |
+ error_name = "org.chromium.Error.NoResponse"; |
stevenjb
2016/02/10 00:01:02
nit: define at the top of the file:
const char kN
Reilly Grant (use Gerrit)
2016/02/10 00:16:32
Done.
|
} |
- |
- callback.Run(std::move(fd)); |
+ callback.Run(error_name, error_message); |
} |
dbus::ObjectProxy* proxy_; |