Index: chromeos/dbus/upstart_client.cc |
diff --git a/chromeos/dbus/upstart_client.cc b/chromeos/dbus/upstart_client.cc |
index 2f4d61555fff317b016b02bfa5ac9c734720dc86..066676388416212215ad6a4b4b8346ffb51fd7b6 100644 |
--- a/chromeos/dbus/upstart_client.cc |
+++ b/chromeos/dbus/upstart_client.cc |
@@ -18,8 +18,11 @@ const char kUpstartServiceName[] = "com.ubuntu.Upstart"; |
const char kUpstartJobInterface[] = "com.ubuntu.Upstart0_6.Job"; |
const char kUpstartStartMethod[] = "Start"; |
const char kUpstartRestartMethod[] = "Restart"; |
+const char kUpstartStopMethod[] = "Stop"; |
const char kUpstartAuthPolicyPath[] = "/com/ubuntu/Upstart/jobs/authpolicyd"; |
+const char kUpstartMediaAnalyticsPath[] = |
+ "/com/ubuntu/Upstart/jobs/rtanalytics"; |
class UpstartClientImpl : public UpstartClient { |
public: |
@@ -50,11 +53,35 @@ class UpstartClientImpl : public UpstartClient { |
weak_ptr_factory_.GetWeakPtr())); |
} |
+ void StartMediaAnalytics(const UpstartCallback& callback) override { |
+ dbus::MethodCall method_call(kUpstartJobInterface, kUpstartStartMethod); |
+ dbus::MessageWriter writer(&method_call); |
+ writer.AppendArrayOfStrings(std::vector<std::string>()); |
+ writer.AppendBool(true); // Wait for response. |
+ ma_proxy_->CallMethod( |
+ &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
+ base::Bind(&UpstartClientImpl::HandleStartMediaAnalyticsResponse, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
+ } |
+ |
+ void StopMediaAnalytics() override { |
+ dbus::MethodCall method_call(kUpstartJobInterface, kUpstartStopMethod); |
+ dbus::MessageWriter writer(&method_call); |
+ writer.AppendArrayOfStrings(std::vector<std::string>()); |
+ writer.AppendBool(true); // Wait for response. |
+ ma_proxy_->CallMethod( |
+ &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
+ base::Bind(&UpstartClientImpl::HandleStopMediaAnalyticsResponse, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
protected: |
void Init(dbus::Bus* bus) override { |
bus_ = bus; |
auth_proxy_ = bus_->GetObjectProxy( |
kUpstartServiceName, dbus::ObjectPath(kUpstartAuthPolicyPath)); |
+ ma_proxy_ = bus_->GetObjectProxy( |
+ kUpstartServiceName, dbus::ObjectPath(kUpstartMediaAnalyticsPath)); |
} |
private: |
@@ -62,8 +89,23 @@ class UpstartClientImpl : public UpstartClient { |
LOG_IF(ERROR, !response) << "Failed to signal Upstart, response is null"; |
} |
+ void HandleStartMediaAnalyticsResponse(const UpstartCallback& callback, |
+ dbus::Response* response) { |
+ if (!response) { |
+ LOG(ERROR) << "Failed to signal Upstart, response is null."; |
+ callback.Run(false); |
+ return; |
+ } |
+ callback.Run(true); |
+ } |
+ |
+ void HandleStopMediaAnalyticsResponse(dbus::Response* response) { |
+ LOG_IF(ERROR, !response) << "Failed to signal Upstart, response is null"; |
+ } |
+ |
dbus::Bus* bus_ = nullptr; |
dbus::ObjectProxy* auth_proxy_ = nullptr; |
+ dbus::ObjectProxy* ma_proxy_ = nullptr; |
// Note: This should remain the last member so it'll be destroyed and |
// invalidate its weak pointers before any other members are destroyed. |