Loading res/xml/memtag_page.xml +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ android:title="@string/memtag_intro" settings:searchable="false"/> <SwitchPreference <com.android.settingslib.RestrictedSwitchPreference android:id="@+id/memtag_page_switch" android:key="memtag" android:title="@string/memtag_toggle" Loading res/xml/security_advanced_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ settings:isPreferenceVisible="@bool/config_show_sim_info" settings:controller="com.android.settings.security.ConfirmSimDeletionPreferenceController" /> <Preference <com.android.settingslib.RestrictedPreference android:order="100" android:id="@+id/memtag_page" android:key="memtag_page" Loading src/com/android/settings/security/MemtagPagePreferenceController.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,12 +16,16 @@ package com.android.settings.security; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.content.Context; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedPreference; public class MemtagPagePreferenceController extends BasePreferenceController { static final String KEY_MEMTAG = "memtag_page"; Loading @@ -39,6 +43,10 @@ public class MemtagPagePreferenceController extends BasePreferenceController { public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); Preference preference = screen.findPreference(getPreferenceKey()); EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfMteIsDisabled(mContext); if (admin != null) { ((RestrictedPreference) preference).setDisabledByAdmin(admin); } refreshSummary(preference); } Loading src/com/android/settings/security/MemtagPreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.security; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.content.Context; import androidx.fragment.app.Fragment; Loading @@ -24,6 +26,8 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedSwitchPreference; public class MemtagPreferenceController extends TogglePreferenceController { private Preference mPreference; Loading Loading @@ -74,6 +78,12 @@ public class MemtagPreferenceController extends TogglePreferenceController { @Override public void updateState(Preference preference) { super.updateState(preference); EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfMteIsDisabled(mContext); if (admin != null) { // Make sure this is disabled even if the user directly goes to this // page via the android.settings.ADVANCED_MEMORY_PROTECTION_SETTINGS intent. ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin); } refreshSummary(preference); } Loading tests/robotests/src/com/android/settings/security/MemtagPagePreferenceControllerTest.java 0 → 100644 +66 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.security; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal; import com.android.settingslib.RestrictedPreference; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowSystemProperties; @RunWith(RobolectricTestRunner.class) @Config(shadows = {ShadowRestrictedLockUtilsInternal.class}) public class MemtagPagePreferenceControllerTest { private final String mMemtagSupportedProperty = "ro.arm64.memtag.bootctl_supported"; private MemtagPagePreferenceController mController; private Context mContext; private static final String FRAGMENT_TAG = "memtag_page"; @Before public void setUp() { ShadowSystemProperties.override(mMemtagSupportedProperty, "true"); mContext = RuntimeEnvironment.application; mController = new MemtagPagePreferenceController(mContext, FRAGMENT_TAG); } @Test public void displayPreference_disabledByAdmin_disablesPreference() { ShadowRestrictedLockUtilsInternal.setMteIsDisabled(true); RestrictedPreference preference = new RestrictedPreference(mContext); preference.setKey(mController.getPreferenceKey()); PreferenceScreen screen = new PreferenceManager(mContext).createPreferenceScreen(mContext); screen.addPreference(preference); mController.displayPreference(screen); assertThat(preference.isDisabledByAdmin()).isTrue(); } } Loading
res/xml/memtag_page.xml +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ android:title="@string/memtag_intro" settings:searchable="false"/> <SwitchPreference <com.android.settingslib.RestrictedSwitchPreference android:id="@+id/memtag_page_switch" android:key="memtag" android:title="@string/memtag_toggle" Loading
res/xml/security_advanced_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ settings:isPreferenceVisible="@bool/config_show_sim_info" settings:controller="com.android.settings.security.ConfirmSimDeletionPreferenceController" /> <Preference <com.android.settingslib.RestrictedPreference android:order="100" android:id="@+id/memtag_page" android:key="memtag_page" Loading
src/com/android/settings/security/MemtagPagePreferenceController.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,12 +16,16 @@ package com.android.settings.security; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.content.Context; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedPreference; public class MemtagPagePreferenceController extends BasePreferenceController { static final String KEY_MEMTAG = "memtag_page"; Loading @@ -39,6 +43,10 @@ public class MemtagPagePreferenceController extends BasePreferenceController { public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); Preference preference = screen.findPreference(getPreferenceKey()); EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfMteIsDisabled(mContext); if (admin != null) { ((RestrictedPreference) preference).setDisabledByAdmin(admin); } refreshSummary(preference); } Loading
src/com/android/settings/security/MemtagPreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.security; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.content.Context; import androidx.fragment.app.Fragment; Loading @@ -24,6 +26,8 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedSwitchPreference; public class MemtagPreferenceController extends TogglePreferenceController { private Preference mPreference; Loading Loading @@ -74,6 +78,12 @@ public class MemtagPreferenceController extends TogglePreferenceController { @Override public void updateState(Preference preference) { super.updateState(preference); EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfMteIsDisabled(mContext); if (admin != null) { // Make sure this is disabled even if the user directly goes to this // page via the android.settings.ADVANCED_MEMORY_PROTECTION_SETTINGS intent. ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin); } refreshSummary(preference); } Loading
tests/robotests/src/com/android/settings/security/MemtagPagePreferenceControllerTest.java 0 → 100644 +66 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.security; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal; import com.android.settingslib.RestrictedPreference; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowSystemProperties; @RunWith(RobolectricTestRunner.class) @Config(shadows = {ShadowRestrictedLockUtilsInternal.class}) public class MemtagPagePreferenceControllerTest { private final String mMemtagSupportedProperty = "ro.arm64.memtag.bootctl_supported"; private MemtagPagePreferenceController mController; private Context mContext; private static final String FRAGMENT_TAG = "memtag_page"; @Before public void setUp() { ShadowSystemProperties.override(mMemtagSupportedProperty, "true"); mContext = RuntimeEnvironment.application; mController = new MemtagPagePreferenceController(mContext, FRAGMENT_TAG); } @Test public void displayPreference_disabledByAdmin_disablesPreference() { ShadowRestrictedLockUtilsInternal.setMteIsDisabled(true); RestrictedPreference preference = new RestrictedPreference(mContext); preference.setKey(mController.getPreferenceKey()); PreferenceScreen screen = new PreferenceManager(mContext).createPreferenceScreen(mContext); screen.addPreference(preference); mController.displayPreference(screen); assertThat(preference.isDisabledByAdmin()).isTrue(); } }