Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Unified Diff: chromeos/dbus/debug_daemon_client.cc

Issue 539273002: Added UI to enable debugging features on CrOS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromeos/dbus/debug_daemon_client.h ('k') | chromeos/dbus/fake_debug_daemon_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « chromeos/dbus/debug_daemon_client.h ('k') | chromeos/dbus/fake_debug_daemon_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698