| Index: chromeos/dbus/blocking_method_caller.cc
|
| diff --git a/chromeos/dbus/blocking_method_caller.cc b/chromeos/dbus/blocking_method_caller.cc
|
| index 8677bea9cd854306758ef497c052738ad304e228..b02df185003ee7b87b675faf0dc7597766f83600 100644
|
| --- a/chromeos/dbus/blocking_method_caller.cc
|
| +++ b/chromeos/dbus/blocking_method_caller.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/threading/thread_restrictions.h"
|
| #include "dbus/bus.h"
|
| #include "dbus/object_proxy.h"
|
| +#include "dbus/scoped_dbus_error.h"
|
|
|
| namespace chromeos {
|
|
|
| @@ -20,9 +21,10 @@ namespace {
|
| void CallMethodAndBlockInternal(std::unique_ptr<dbus::Response>* response,
|
| base::ScopedClosureRunner* signaler,
|
| dbus::ObjectProxy* proxy,
|
| - dbus::MethodCall* method_call) {
|
| - *response = proxy->CallMethodAndBlock(
|
| - method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT);
|
| + dbus::MethodCall* method_call,
|
| + dbus::ScopedDBusError* error) {
|
| + *response = proxy->CallMethodAndBlockWithErrorDetails(
|
| + method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, error);
|
| }
|
|
|
| } // namespace
|
| @@ -40,6 +42,14 @@ BlockingMethodCaller::~BlockingMethodCaller() {
|
|
|
| std::unique_ptr<dbus::Response> BlockingMethodCaller::CallMethodAndBlock(
|
| dbus::MethodCall* method_call) {
|
| + dbus::ScopedDBusError error;
|
| + return CallMethodAndBlockWithError(method_call, &error);
|
| +}
|
| +
|
| +std::unique_ptr<dbus::Response>
|
| +BlockingMethodCaller::CallMethodAndBlockWithError(
|
| + dbus::MethodCall* method_call,
|
| + dbus::ScopedDBusError* error) {
|
| // on_blocking_method_call_->Signal() will be called when |signaler| is
|
| // destroyed.
|
| base::Closure signal_task(
|
| @@ -51,11 +61,8 @@ std::unique_ptr<dbus::Response> BlockingMethodCaller::CallMethodAndBlock(
|
| std::unique_ptr<dbus::Response> response;
|
| bus_->GetDBusTaskRunner()->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&CallMethodAndBlockInternal,
|
| - &response,
|
| - base::Owned(signaler),
|
| - base::Unretained(proxy_),
|
| - method_call));
|
| + base::Bind(&CallMethodAndBlockInternal, &response, base::Owned(signaler),
|
| + base::Unretained(proxy_), method_call, error));
|
| // http://crbug.com/125360
|
| base::ThreadRestrictions::ScopedAllowWait allow_wait;
|
| on_blocking_method_call_.Wait();
|
|
|