[MTE] support force_on for device_control override

driveby: remove period for force_off message.

Test: make RunSettingsRoboTests ROBOTEST_FILTER=MemtagHelperTest
Bug: 245624194
Change-Id: I1c56af377925fd58c90bb346d9d003249c5e547c
This commit is contained in:
Florian Mayer
2022-11-23 14:44:55 -08:00
parent 8f34efe5cb
commit cd68fe78a0
3 changed files with 31 additions and 2 deletions

View File

@@ -8037,7 +8037,9 @@
<!-- [CHAR LIMIT=37] Status label indicating that system needs to be rebooted for Advanced memory protection to be off. -->
<string name="memtag_off_pending" translatable="false">Off after restart</string>
<!-- [CHAR LIMIT=37] Status label indicating that Advanced memory protection was forced off via remote device configuration. -->
<string name="memtag_force_off" translatable="false">Currently unavailable for your device.</string>
<string name="memtag_force_off" translatable="false">Currently unavailable for your device</string>
<!-- [CHAR LIMIT=37] Status label indicating that Advanced memory protection was forced on via remote device configuration. -->
<string name="memtag_force_on" translatable="false">Always on for your device</string>
<!-- [CHAR LIMIT=NONE] Subtext on page to control Advanced memory protection settings. -->
<string name="memtag_footer" translatable="false">You\u0027ll have to restart your device to turn Advanced memory protection on or off. When it\u0027s on, you may notice slower device performance.</string>
<!-- [CHAR LIMIT=31] Header of dialog asking user to reboot device. -->

View File

@@ -32,6 +32,13 @@ public class MemtagHelper {
"persist.device_config.memory_safety_native.bootloader_override"));
}
private static boolean isForcedOn() {
return "force_on"
.equals(
SystemProperties.get(
"persist.device_config.memory_safety_native.bootloader_override"));
}
public static boolean isChecked() {
String modes[] = SystemProperties.get("arm64.memtag.bootctl", "").split(",");
return Arrays.asList(modes).contains("memtag");
@@ -43,7 +50,7 @@ public class MemtagHelper {
}
public static int getAvailabilityStatus() {
if (MemtagHelper.isForcedOff()) {
if (MemtagHelper.isForcedOff() || MemtagHelper.isForcedOn()) {
return BasePreferenceController.DISABLED_DEPENDENT_SETTING;
}
return SystemProperties.getBoolean("ro.arm64.memtag.bootctl_settings_toggle", false)
@@ -65,6 +72,9 @@ public class MemtagHelper {
if (isForcedOff()) {
return R.string.memtag_force_off;
}
if (isForcedOn()) {
return R.string.memtag_force_on;
}
if (isOn()) {
if (isChecked()) {
return R.string.memtag_on;

View File

@@ -86,6 +86,14 @@ public class MemtagHelperTest {
.isEqualTo(BasePreferenceController.DISABLED_DEPENDENT_SETTING);
}
@Test
public void getAvailabilityStatus_isForcedOn_isDISABLED_DEPENDENT_SETTING() {
ShadowSystemProperties.override(mDeviceConfigOverride, "force_on");
ShadowSystemProperties.override(mMemtagSupportedProperty, "true");
assertThat(MemtagHelper.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_DEPENDENT_SETTING);
}
@Test
public void getAvailabilityStatus_isUnsupported_isUNSUPPORTED_ON_DEVICE() {
ShadowSystemProperties.override(mDeviceConfigOverride, "");
@@ -159,4 +167,13 @@ public class MemtagHelperTest {
ShadowSystemProperties.override(mMemtagProperty, "memtag");
assertThat(MemtagHelper.getSummary()).isEqualTo(R.string.memtag_force_off);
}
@Test
@Config(shadows = {ZygoteShadow.class})
public void getSummary_forceOffOverride_memtag_force_on() {
ZygoteShadow.setSupportsMemoryTagging(false);
ShadowSystemProperties.override(mDeviceConfigOverride, "force_on");
ShadowSystemProperties.override(mMemtagProperty, "memtag");
assertThat(MemtagHelper.getSummary()).isEqualTo(R.string.memtag_force_on);
}
}