From 9d99ab422aee489a67a940d07c839766385194a7 Mon Sep 17 00:00:00 2001 From: Florian Mayer Date: Wed, 15 Feb 2023 16:22:11 -0800 Subject: [PATCH] Disable MTE developer option if device config overrides it On the backend, the device config would already override the setting by the UI. (cherry picked from commit 65116faa29df0537531f817973e599b9a0eeee99) Bug: 269523554 Merged-In: Idd249e060a275b58a399349f202fc68b42964eb0 Change-Id: Idd249e060a275b58a399349f202fc68b42964eb0 --- .../DevelopmentMemtagPreferenceController.java | 3 +++ src/com/android/settings/security/MemtagHelper.java | 4 ++-- .../android/settings/security/MemtagHelperTest.java | 12 ++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/development/DevelopmentMemtagPreferenceController.java b/src/com/android/settings/development/DevelopmentMemtagPreferenceController.java index 751ccbae83d..c73c717a8cd 100644 --- a/src/com/android/settings/development/DevelopmentMemtagPreferenceController.java +++ b/src/com/android/settings/development/DevelopmentMemtagPreferenceController.java @@ -48,6 +48,9 @@ public class DevelopmentMemtagPreferenceController extends TogglePreferenceContr @Override public int getAvailabilityStatus() { + if (MemtagHelper.isForcedOff() || MemtagHelper.isForcedOn()) { + return BasePreferenceController.DISABLED_DEPENDENT_SETTING; + } return DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext) && SystemProperties.getBoolean("ro.arm64.memtag.bootctl_supported", false) ? BasePreferenceController.AVAILABLE diff --git a/src/com/android/settings/security/MemtagHelper.java b/src/com/android/settings/security/MemtagHelper.java index 9fd74f329ff..b04dcf9dd86 100644 --- a/src/com/android/settings/security/MemtagHelper.java +++ b/src/com/android/settings/security/MemtagHelper.java @@ -25,14 +25,14 @@ import com.android.settings.core.BasePreferenceController; import java.util.Arrays; public class MemtagHelper { - private static boolean isForcedOff() { + public static boolean isForcedOff() { return "force_off" .equals( SystemProperties.get( "persist.device_config.memory_safety_native_boot.bootloader_override")); } - private static boolean isForcedOn() { + public static boolean isForcedOn() { return "force_on" .equals( SystemProperties.get( diff --git a/tests/robotests/src/com/android/settings/security/MemtagHelperTest.java b/tests/robotests/src/com/android/settings/security/MemtagHelperTest.java index 3d38bbc86b6..4ef7de44ad7 100644 --- a/tests/robotests/src/com/android/settings/security/MemtagHelperTest.java +++ b/tests/robotests/src/com/android/settings/security/MemtagHelperTest.java @@ -176,4 +176,16 @@ public class MemtagHelperTest { ShadowSystemProperties.override(mMemtagProperty, "memtag"); 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(); + } }