login: Configure login_manager to determine stylus info at runtime
BUG=b:124230002
CQ-DEPEND=CL:1509680
TEST=Validate that various SKUs have the correct stylus information
Change-Id: Ic98adc6a8fad21609646e5be3ce437154c564ae2
Reviewed-on: https://chromium-review.googlesource.com/1532850
Commit-Ready: Kartik Hegde <khegde@chromium.org>
Tested-by: Kartik Hegde <khegde@chromium.org>
Reviewed-by: Kartik Hegde <khegde@chromium.org>
(cherry picked from commit 19bd8468262943ff6c312a921302fd80090fe749)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/1565838
Reviewed-by: Philip Chen <philipchen@chromium.org>
Commit-Queue: Philip Chen <philipchen@chromium.org>
Tested-by: Philip Chen <philipchen@chromium.org>
diff --git a/login_manager/chrome_setup.cc b/login_manager/chrome_setup.cc
index 190b97c..2986dcb 100644
--- a/login_manager/chrome_setup.cc
+++ b/login_manager/chrome_setup.cc
@@ -44,6 +44,9 @@
const char kPowerButtonEdgeField[] = "edge";
const char kPowerButtonPositionField[] = "position";
+const char kStylusCategoryPath[] = "/hardware-properties";
+const char kStylusCategoryField[] = "stylus-category";
+
// These hashes are only being used temporarily till we can determine if a
// device is a Chromebox for Meetings or not from the Install Time attributes.
// TODO(rkc, pbos): Remove these and related code once crbug.com/706523 is
@@ -388,8 +391,6 @@
builder->AddArg("--aura-legacy-power-button");
if (builder->UseFlagIsSet("touchview"))
builder->AddArg("--enable-touchview");
- if (builder->UseFlagIsSet("internal_stylus"))
- builder->AddArg("--has-internal-stylus");
if (builder->UseFlagIsSet("touchscreen_wakeup"))
builder->AddArg("--touchscreen-usable-while-screen-off");
if (builder->UseFlagIsSet("oobe_skip_to_login"))
@@ -424,6 +425,8 @@
SetUpPowerButtonPositionFlag(builder, cros_config);
SetUpRegulatoryLabelFlag(builder, cros_config);
+
+ SetUpInternalStylusFlag(builder, cros_config);
}
// Adds enterprise-related flags to the command line.
@@ -512,6 +515,17 @@
AddWallpaperFlags(builder, "default", "default", path_exists);
}
+void SetUpInternalStylusFlag(ChromiumCommandBuilder* builder,
+ brillo::CrosConfigInterface* cros_config) {
+ std::string stylus_category;
+ if (cros_config &&
+ cros_config->GetString(kStylusCategoryPath, kStylusCategoryField,
+ &stylus_category) &&
+ stylus_category == "internal") {
+ builder->AddArg("--has-internal-stylus");
+ }
+}
+
void SetUpPowerButtonPositionFlag(ChromiumCommandBuilder* builder,
brillo::CrosConfigInterface* cros_config) {
std::string edge_as_string, position_as_string;
diff --git a/login_manager/chrome_setup.h b/login_manager/chrome_setup.h
index 1c43766..2f35e55 100644
--- a/login_manager/chrome_setup.h
+++ b/login_manager/chrome_setup.h
@@ -84,6 +84,11 @@
void SetUpPowerButtonPositionFlag(chromeos::ui::ChromiumCommandBuilder* builder,
brillo::CrosConfigInterface* cros_config);
+// Add "--has-internal-stylus" flag if the device has
+// an internal stylus.
+void SetUpInternalStylusFlag(chromeos::ui::ChromiumCommandBuilder* builder,
+ brillo::CrosConfigInterface* cros_config);
+
} // namespace login_manager
#endif // LOGIN_MANAGER_CHROME_SETUP_H_