Disable MTE developer option if device config overrides it

On the backend, the device config would already override the setting by
the UI.

Bug: 269523554
Change-Id: Idd249e060a275b58a399349f202fc68b42964eb0
This commit is contained in:
Florian Mayer
2023-02-15 16:22:11 -08:00
parent cba4cbe23a
commit 65116faa29
3 changed files with 17 additions and 2 deletions

View File

@@ -48,6 +48,9 @@ public class DevelopmentMemtagPreferenceController extends TogglePreferenceContr
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
if (MemtagHelper.isForcedOff() || MemtagHelper.isForcedOn()) {
return BasePreferenceController.DISABLED_DEPENDENT_SETTING;
}
return DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext) return DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext)
&& SystemProperties.getBoolean("ro.arm64.memtag.bootctl_supported", false) && SystemProperties.getBoolean("ro.arm64.memtag.bootctl_supported", false)
? BasePreferenceController.AVAILABLE ? BasePreferenceController.AVAILABLE

View File

@@ -25,14 +25,14 @@ import com.android.settings.core.BasePreferenceController;
import java.util.Arrays; import java.util.Arrays;
public class MemtagHelper { public class MemtagHelper {
private static boolean isForcedOff() { public static boolean isForcedOff() {
return "force_off" return "force_off"
.equals( .equals(
SystemProperties.get( SystemProperties.get(
"persist.device_config.memory_safety_native_boot.bootloader_override")); "persist.device_config.memory_safety_native_boot.bootloader_override"));
} }
private static boolean isForcedOn() { public static boolean isForcedOn() {
return "force_on" return "force_on"
.equals( .equals(
SystemProperties.get( SystemProperties.get(

View File

@@ -176,4 +176,16 @@ public class MemtagHelperTest {
ShadowSystemProperties.override(mMemtagProperty, "memtag"); ShadowSystemProperties.override(mMemtagProperty, "memtag");
assertThat(MemtagHelper.getSummary()).isEqualTo(R.string.memtag_force_on); assertThat(MemtagHelper.getSummary()).isEqualTo(R.string.memtag_force_on);
} }
@Test
public void isForcedOn_forceOnOverride_isTrue() {
ShadowSystemProperties.override(mDeviceConfigOverride, "force_on");
assertThat(MemtagHelper.isForcedOn()).isTrue();
}
@Test
public void isForcedOff_forceOffOverride_isTrue() {
ShadowSystemProperties.override(mDeviceConfigOverride, "force_off");
assertThat(MemtagHelper.isForcedOff()).isTrue();
}
} }