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); |