libchromeos-ui: Block LL Privacy if specifies in cros config
This adds a new flag in cros config and check the flag to see if we
should allow LL Privacy feature from enabling in chrome.
BUG=b:327266366
TEST=manual verify with crrev/c/5499198
- for device with block-llprivacy-availability set,
bluetooth-use-llprivacy is not searchable in chrome://flags
- for device w/o block-llprivacy-availability set,
bluetooth-use-llprivacy is searchable in chrome://flags
Change-Id: I6b0e1b1f9e68050a00871ff73c439350e340939b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/5473477
Reviewed-by: Yun-hao Chung <howardchung@chromium.org>
Reviewed-by: Jesse McGuire <jessemcguire@google.com>
Reviewed-by: Michael Sun <michaelfsun@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Zhengping Jiang <jiangzp@google.com>
Commit-Queue: Zhengping Jiang <jiangzp@google.com>
diff --git a/chromeos-config/README.md b/chromeos-config/README.md
index 3459169..8566ef7 100644
--- a/chromeos-config/README.md
+++ b/chromeos-config/README.md
@@ -594,6 +594,7 @@
| Attribute | Type | RegEx | Required | Oneof Group | Build-only | Description |
| --------- | ------ | --------- | -------- | ----------- | ---------- | ----------- |
| block-floss-availability | boolean | | False | | False | Block Floss from enablement by chrome. |
+| block-llprivacy-availability | boolean | | False | | False | Block LL Privacy from enablement by chrome. |
| enable-bluetooth-offload | boolean | | False | | False | Enable audio offload path. |
| enable-suspend-management | boolean | | False | | False | Enable powerd suspend management callbacks. |
| reset-on-resume | boolean | | False | | False | Expect bluetooth chip to have reset on resume. |
diff --git a/chromeos-config/cros_config_host/cros_config_schema.yaml b/chromeos-config/cros_config_host/cros_config_schema.yaml
index 63cf8b3..71ea357 100644
--- a/chromeos-config/cros_config_host/cros_config_schema.yaml
+++ b/chromeos-config/cros_config_host/cros_config_schema.yaml
@@ -643,6 +643,9 @@
block-floss-availability:
description: Block Floss from enablement by chrome.
type: boolean
+ block-llprivacy-availability:
+ description: Block LL Privacy from enablement by chrome.
+ type: boolean
additionalProperties: false
additionalProperties: false
wifi:
diff --git a/chromeos-config/cros_config_host/schema.json b/chromeos-config/cros_config_host/schema.json
index 7e5b813..9b5b381 100644
--- a/chromeos-config/cros_config_host/schema.json
+++ b/chromeos-config/cros_config_host/schema.json
@@ -224,6 +224,10 @@
"description": "Block Floss from enablement by chrome.",
"type": "boolean"
},
+ "block-llprivacy-availability": {
+ "description": "Block LL Privacy from enablement by chrome.",
+ "type": "boolean"
+ },
"enable-bluetooth-offload": {
"description": "Enable audio offload path.",
"type": "boolean"
diff --git a/libchromeos-ui/chromeos/ui/chromium_command_builder.cc b/libchromeos-ui/chromeos/ui/chromium_command_builder.cc
index 1d00cb0..f50cdbe 100644
--- a/libchromeos-ui/chromeos/ui/chromium_command_builder.cc
+++ b/libchromeos-ui/chromeos/ui/chromium_command_builder.cc
@@ -126,6 +126,8 @@
"/bluetooth/flags";
const char ChromiumCommandBuilder::kCrosConfigBlockFlossAvailability[] =
"block-floss-availability";
+const char ChromiumCommandBuilder::kCrosConfigBlockLLPrivacyAvailability[] =
+ "block-llprivacy-availability";
ChromiumCommandBuilder::ChromiumCommandBuilder() = default;
@@ -589,6 +591,15 @@
AddFeatureDisableOverride("FlossIsAvailable");
}
+ // Disable LLPrivacy if the cros config was specified.
+ std::string block_llprivacy_availability;
+ if (cros_config.GetString(kCrosConfigBluetoothFlagsPath,
+ kCrosConfigBlockLLPrivacyAvailability,
+ &block_llprivacy_availability) &&
+ block_llprivacy_availability == "true") {
+ AddFeatureDisableOverride("LLPrivacyIsAvailable");
+ }
+
// Allow Chrome to access GPU memory information despite /sys/kernel/debug
// being owned by debugd. This limits the security attack surface versus
// leaving the whole debug directory world-readable: http://crbug.com/175828
diff --git a/libchromeos-ui/chromeos/ui/chromium_command_builder.h b/libchromeos-ui/chromeos/ui/chromium_command_builder.h
index 71f5109..c823244 100644
--- a/libchromeos-ui/chromeos/ui/chromium_command_builder.h
+++ b/libchromeos-ui/chromeos/ui/chromium_command_builder.h
@@ -55,6 +55,7 @@
static const char kCrosConfigBluetoothFlagsPath[];
static const char kCrosConfigBlockFlossAvailability[];
+ static const char kCrosConfigBlockLLPrivacyAvailability[];
ChromiumCommandBuilder();
ChromiumCommandBuilder(const ChromiumCommandBuilder&) = delete;