| Index: chromeos/dbus/debug_daemon_client.cc
|
| diff --git a/chromeos/dbus/debug_daemon_client.cc b/chromeos/dbus/debug_daemon_client.cc
|
| index efd96a009cb8a8e90ef6fd153db79cc400212a2b..d41f683bc21556280799c8cd457b16e0aee4b03d 100644
|
| --- a/chromeos/dbus/debug_daemon_client.cc
|
| +++ b/chromeos/dbus/debug_daemon_client.cc
|
| @@ -35,6 +35,15 @@ void EmptyStopSystemTracingCallbackBody(
|
|
|
| } // namespace
|
|
|
| +// TODO(zelidrag): Move this to ChromeOS wherever place...
|
| +namespace debugd {
|
| +
|
| +const char kEnableDebuggingFeatures[] = "EnableChromeDevFeatures";
|
| +const char kQueryDevFeatures[] = "QueryDevFeatures";
|
| +const char kRemoveRootfsVerification[] = "RemoveRootfsVerification";
|
| +
|
| +} // namespace debugd
|
| +
|
| namespace chromeos {
|
|
|
| // The DebugDaemonClient implementation used in production.
|
| @@ -302,6 +311,47 @@ class DebugDaemonClientImpl : public DebugDaemonClient {
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| + virtual void EnableDebuggingFeatures(
|
| + const std::string& password,
|
| + const EnableDebuggingCallback& callback) override {
|
| + dbus::MethodCall method_call(debugd::kDebugdInterface,
|
| + debugd::kEnableDebuggingFeatures);
|
| + dbus::MessageWriter writer(&method_call);
|
| + writer.AppendString(password);
|
| + debugdaemon_proxy_->CallMethod(
|
| + &method_call,
|
| + dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| + base::Bind(&DebugDaemonClientImpl::OnEnableDebuggingFeatures,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + callback));
|
| + }
|
| +
|
| + virtual void QueryDebuggingFeatures(
|
| + const QueryDevFeaturesCallback& callback) override {
|
| + dbus::MethodCall method_call(debugd::kDebugdInterface,
|
| + debugd::kQueryDevFeatures);
|
| + dbus::MessageWriter writer(&method_call);
|
| + debugdaemon_proxy_->CallMethod(
|
| + &method_call,
|
| + dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| + base::Bind(&DebugDaemonClientImpl::OnQueryDebuggingFeatures,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + callback));
|
| + }
|
| +
|
| + virtual void RemoveRootfsVerification(
|
| + const EnableDebuggingCallback& callback) override {
|
| + dbus::MethodCall method_call(debugd::kDebugdInterface,
|
| + debugd::kRemoveRootfsVerification);
|
| + dbus::MessageWriter writer(&method_call);
|
| + debugdaemon_proxy_->CallMethod(
|
| + &method_call,
|
| + dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| + base::Bind(&DebugDaemonClientImpl::OnRemoveRootfsVerification,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + callback));
|
| + }
|
| +
|
| protected:
|
| virtual void Init(dbus::Bus* bus) override {
|
| debugdaemon_proxy_ =
|
| @@ -459,6 +509,39 @@ class DebugDaemonClientImpl : public DebugDaemonClient {
|
| }
|
| }
|
|
|
| + void OnEnableDebuggingFeatures(
|
| + const EnableDebuggingCallback& callback,
|
| + dbus::Response* response) {
|
| + if (callback.is_null())
|
| + return;
|
| +
|
| + callback.Run(response != NULL);
|
| + }
|
| +
|
| + void OnQueryDebuggingFeatures(
|
| + const QueryDevFeaturesCallback& callback,
|
| + dbus::Response* response) {
|
| + if (callback.is_null())
|
| + return;
|
| +
|
| + int32 feature_mask = DEV_FEATURE_NONE;
|
| + if (!response || !dbus::MessageReader(response).PopInt32(&feature_mask)) {
|
| + callback.Run(false, DEV_FEATURES_DISABLED);
|
| + return;
|
| + }
|
| +
|
| + callback.Run(true, feature_mask);
|
| + }
|
| +
|
| + void OnRemoveRootfsVerification(
|
| + const EnableDebuggingCallback& callback,
|
| + dbus::Response* response) {
|
| + if (callback.is_null())
|
| + return;
|
| +
|
| + callback.Run(response != NULL);
|
| + }
|
| +
|
| // Creates dbus::FileDescriptor from base::File.
|
| static scoped_ptr<dbus::FileDescriptor>
|
| CreateFileDescriptorToStopSystemTracing(base::File pipe_write_end) {
|
|
|