Make HardwareChromeOS own debugd.
It only exists in Chrome OS, Brillo doesn't have it.
Test: ./update_engine_unittests
Bug: 28800946
Change-Id: I49d2024dbad5e0bf78bbc479f97dabb569b32c56
diff --git a/hardware_chromeos.cc b/hardware_chromeos.cc
index 591cb3c..4b0b82f 100644
--- a/hardware_chromeos.cc
+++ b/hardware_chromeos.cc
@@ -23,6 +23,7 @@
#include <base/strings/string_util.h>
#include <brillo/key_value_store.h>
#include <brillo/make_unique_ptr.h>
+#include <debugd/dbus-constants.h>
#include <vboot/crossystem.h>
extern "C" {
@@ -35,6 +36,7 @@
#include "update_engine/common/platform_constants.h"
#include "update_engine/common/subprocess.h"
#include "update_engine/common/utils.h"
+#include "update_engine/dbus_connection.h"
using std::string;
using std::vector;
@@ -84,6 +86,8 @@
void HardwareChromeOS::Init() {
LoadConfig("" /* root_prefix */, IsNormalBootMode());
+ debugd_proxy_.reset(
+ new org::chromium::debugdProxy(DBusConnection::Get()->GetDBus()));
}
bool HardwareChromeOS::IsOfficialBuild() const {
@@ -95,6 +99,24 @@
return !dev_mode;
}
+bool HardwareChromeOS::AreDevFeaturesEnabled() const {
+ // Even though the debugd tools are also gated on devmode, checking here can
+ // save us a D-Bus call so it's worth doing explicitly.
+ if (IsNormalBootMode())
+ return false;
+
+ int32_t dev_features = debugd::DEV_FEATURES_DISABLED;
+ brillo::ErrorPtr error;
+ // Some boards may not include debugd so it's expected that this may fail,
+ // in which case we treat it as disabled.
+ if (debugd_proxy_ && debugd_proxy_->QueryDevFeatures(&dev_features, &error) &&
+ !(dev_features & debugd::DEV_FEATURES_DISABLED)) {
+ LOG(INFO) << "Debugd dev tools enabled.";
+ return true;
+ }
+ return false;
+}
+
bool HardwareChromeOS::IsOOBEEnabled() const {
return is_oobe_enabled_;
}