| Index: chromeos/dbus/image_loader_client.cc
|
| diff --git a/chromeos/dbus/image_loader_client.cc b/chromeos/dbus/image_loader_client.cc
|
| index d1d7e9c0b8bd1b76cf039377c5dfca2604b13281..060c8b2d9e28cc18e4c4c0481bcaeca500309156 100644
|
| --- a/chromeos/dbus/image_loader_client.cc
|
| +++ b/chromeos/dbus/image_loader_client.cc
|
| @@ -37,6 +37,17 @@ class ImageLoaderClientImpl : public ImageLoaderClient {
|
| base::Bind(&ImageLoaderClientImpl::OnBoolMethod, callback));
|
| }
|
|
|
| + void LoadComponent(const std::string& name,
|
| + const StringDBusMethodCallback& callback) override {
|
| + dbus::MethodCall method_call(imageloader::kImageLoaderServiceInterface,
|
| + imageloader::kLoadComponent);
|
| + dbus::MessageWriter writer(&method_call);
|
| + writer.AppendString(name);
|
| + proxy_->CallMethod(
|
| + &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| + base::Bind(&ImageLoaderClientImpl::OnStringMethod, callback));
|
| + }
|
| +
|
| protected:
|
| // DBusClient override.
|
| void Init(dbus::Bus* bus) override {
|
| @@ -62,6 +73,22 @@ class ImageLoaderClientImpl : public ImageLoaderClient {
|
| callback.Run(DBUS_METHOD_CALL_SUCCESS, result);
|
| }
|
|
|
| + static void OnStringMethod(const StringDBusMethodCallback& callback,
|
| + dbus::Response* response) {
|
| + if (!response) {
|
| + callback.Run(DBUS_METHOD_CALL_FAILURE, "");
|
| + return;
|
| + }
|
| + dbus::MessageReader reader(response);
|
| + std::string result;
|
| + if (!reader.PopString(&result)) {
|
| + callback.Run(DBUS_METHOD_CALL_FAILURE, "");
|
| + LOG(ERROR) << "Invalid response: " << response->ToString();
|
| + return;
|
| + }
|
| + callback.Run(DBUS_METHOD_CALL_SUCCESS, result);
|
| + }
|
| +
|
| dbus::ObjectProxy* proxy_ = nullptr;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ImageLoaderClientImpl);
|
|
|