Index: chromeos/dbus/session_manager_client.cc |
diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc |
index df81dccde03e54b2e9cdfc07a55ee106b4d14cdf..4da32990a6e3f18f9144916d4e10f9d0e5ff67e3 100644 |
--- a/chromeos/dbus/session_manager_client.cc |
+++ b/chromeos/dbus/session_manager_client.cc |
@@ -310,18 +310,19 @@ class SessionManagerClientImpl : public SessionManagerClient { |
void StartArcInstance(const cryptohome::Identification& cryptohome_id, |
bool disable_boot_completed_broadcast, |
- const ArcCallback& callback) override { |
+ const StartArcInstanceCallback& callback) override { |
dbus::MethodCall method_call( |
login_manager::kSessionManagerInterface, |
login_manager::kSessionManagerStartArcInstance); |
dbus::MessageWriter writer(&method_call); |
writer.AppendString(cryptohome_id.id()); |
writer.AppendBool(disable_boot_completed_broadcast); |
- session_manager_proxy_->CallMethod( |
+ session_manager_proxy_->CallMethodWithErrorCallback( |
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- base::Bind(&SessionManagerClientImpl::OnArcMethod, |
- weak_ptr_factory_.GetWeakPtr(), |
- login_manager::kSessionManagerStartArcInstance, callback)); |
+ base::Bind(&SessionManagerClientImpl::OnStartArcInstanceSucceeded, |
+ weak_ptr_factory_.GetWeakPtr(), callback), |
+ base::Bind(&SessionManagerClientImpl::OnStartArcInstanceFailed, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
void StopArcInstance(const ArcCallback& callback) override { |
@@ -722,6 +723,21 @@ class SessionManagerClientImpl : public SessionManagerClient { |
callback.Run(success); |
} |
+ void OnStartArcInstanceSucceeded(const StartArcInstanceCallback& callback, |
+ dbus::Response* response) { |
+ if (!callback.is_null()) |
+ callback.Run(true, "" /* no error */); |
+ } |
+ |
+ void OnStartArcInstanceFailed(const StartArcInstanceCallback& callback, |
+ dbus::ErrorResponse* response) { |
+ LOG(ERROR) << "Failed to call StartArcInstance: " |
+ << (response ? response->ToString() : "(null)"); |
+ if (!callback.is_null()) |
+ callback.Run(false, |
+ response ? response->GetErrorName() : base::EmptyString()); |
hashimoto
2016/10/06 08:12:20
Please be consistent by sticking to one of "" or b
hidehiko
2016/10/06 08:33:21
Done.
|
+ } |
+ |
dbus::ObjectProxy* session_manager_proxy_; |
std::unique_ptr<BlockingMethodCaller> blocking_method_caller_; |
base::ObserverList<Observer> observers_; |
@@ -898,8 +914,8 @@ class SessionManagerClientStubImpl : public SessionManagerClient { |
void StartArcInstance(const cryptohome::Identification& cryptohome_id, |
bool disable_boot_completed_broadcast, |
- const ArcCallback& callback) override { |
- callback.Run(false); |
+ const StartArcInstanceCallback& callback) override { |
+ callback.Run(false, ""); |
} |
void PrioritizeArcInstance(const ArcCallback& callback) override { |