Chromium Code Reviews| 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..03f73c764ecad9600b57071d1fa58aec62acce17 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 = ""; |
|
Sorin Jianu
2017/03/06 19:33:17
doesn't need the "" initialization. The default ct
xiaochu
2017/03/06 20:28:24
Done.
|
| + 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); |