Loading src/com/android/settings/PreferenceRestrictionMixin.kt +24 −9 Original line number Diff line number Diff line Loading @@ -18,27 +18,42 @@ package com.android.settings import android.content.Context import android.os.UserHandle import android.os.UserManager import androidx.annotation.CallSuper import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin import com.android.settingslib.RestrictedLockUtilsInternal import com.android.settingslib.metadata.PreferenceRestrictionProvider /** Mixin to support restriction. */ interface PreferenceRestrictionMixin : PreferenceRestrictionProvider { val restrictionKey: String /** * Keys for restriction. * * Preference is restricted when **ANY** key in the list is restricted. */ val restrictionKeys: Array<String> val useAdminDisabledSummary: Boolean get() = false @CallSuper fun isEnabled(context: Context) = !context.hasBaseUserRestriction(restrictionKey) @CallSuper fun isEnabled(context: Context) = !context.hasBaseUserRestriction(restrictionKeys) override fun isRestricted(context: Context) = RestrictedLockUtilsInternal.checkIfRestrictionEnforced( context, restrictionKey, UserHandle.myUserId(), ) != null context.getRestrictionEnforcedAdmin(restrictionKeys) != null } /** Returns the admin that has enforced restriction on given keys. */ fun Context.getRestrictionEnforcedAdmin(restrictionKeys: Array<String>): EnforcedAdmin? { val userId = UserHandle.myUserId() return restrictionKeys.firstNotNullOfOrNull { RestrictedLockUtilsInternal.checkIfRestrictionEnforced(this, it, userId) } } fun Context.hasBaseUserRestriction(restrictionKey: String) = RestrictedLockUtilsInternal.hasBaseUserRestriction(this, restrictionKey, UserHandle.myUserId()) /** Returns if there is **any** base user restriction on given keys. */ fun Context.hasBaseUserRestriction(restrictionKeys: Array<String>): Boolean { val userManager = getSystemService(UserManager::class.java) ?: return false val userHandle = UserHandle.of(UserHandle.myUserId()) return restrictionKeys.any { userManager.hasBaseUserRestriction(it, userHandle) } } src/com/android/settings/SettingsPreferenceBindingFactory.kt +5 −5 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings import android.os.UserHandle import androidx.preference.Preference import com.android.settingslib.RestrictedPreferenceHelperProvider import com.android.settingslib.metadata.PreferenceHierarchyNode Loading @@ -37,10 +36,11 @@ class SettingsPreferenceBindingFactory : DefaultPreferenceBindingFactory() { if (metadata is PreferenceRestrictionMixin) { if (preference is RestrictedPreferenceHelperProvider) { preference.getRestrictedPreferenceHelper().apply { val restrictionKey = metadata.restrictionKey if (!preference.context.hasBaseUserRestriction(restrictionKey)) { useAdminDisabledSummary(metadata.useAdminDisabledSummary) checkRestrictionAndSetDisabled(restrictionKey, UserHandle.myUserId()) val context = preference.context val restrictionKeys = metadata.restrictionKeys if (!context.hasBaseUserRestriction(restrictionKeys)) { setDisabledByAdmin(context.getRestrictionEnforcedAdmin(restrictionKeys)) } } } Loading src/com/android/settings/display/AutoBrightnessScreen.kt +2 −2 Original line number Diff line number Diff line Loading @@ -74,8 +74,8 @@ class AutoBrightnessScreen : override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKey: String get() = UserManager.DISALLOW_CONFIG_BRIGHTNESS override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_CONFIG_BRIGHTNESS) override val useAdminDisabledSummary: Boolean get() = true Loading src/com/android/settings/display/BrightnessLevelPreference.kt +2 −2 Original line number Diff line number Diff line Loading @@ -71,8 +71,8 @@ class BrightnessLevelPreference : override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKey: String get() = UserManager.DISALLOW_CONFIG_BRIGHTNESS override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_CONFIG_BRIGHTNESS) override val useAdminDisabledSummary: Boolean get() = true Loading src/com/android/settings/network/MobileNetworkListScreen.kt +2 −2 Original line number Diff line number Diff line Loading @@ -40,8 +40,8 @@ class MobileNetworkListScreen : PreferenceScreenCreator, PreferenceRestrictionMi override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKey: String get() = UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS) override fun isFlagEnabled(context: Context) = Flags.catalystMobileNetworkList() Loading Loading
src/com/android/settings/PreferenceRestrictionMixin.kt +24 −9 Original line number Diff line number Diff line Loading @@ -18,27 +18,42 @@ package com.android.settings import android.content.Context import android.os.UserHandle import android.os.UserManager import androidx.annotation.CallSuper import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin import com.android.settingslib.RestrictedLockUtilsInternal import com.android.settingslib.metadata.PreferenceRestrictionProvider /** Mixin to support restriction. */ interface PreferenceRestrictionMixin : PreferenceRestrictionProvider { val restrictionKey: String /** * Keys for restriction. * * Preference is restricted when **ANY** key in the list is restricted. */ val restrictionKeys: Array<String> val useAdminDisabledSummary: Boolean get() = false @CallSuper fun isEnabled(context: Context) = !context.hasBaseUserRestriction(restrictionKey) @CallSuper fun isEnabled(context: Context) = !context.hasBaseUserRestriction(restrictionKeys) override fun isRestricted(context: Context) = RestrictedLockUtilsInternal.checkIfRestrictionEnforced( context, restrictionKey, UserHandle.myUserId(), ) != null context.getRestrictionEnforcedAdmin(restrictionKeys) != null } /** Returns the admin that has enforced restriction on given keys. */ fun Context.getRestrictionEnforcedAdmin(restrictionKeys: Array<String>): EnforcedAdmin? { val userId = UserHandle.myUserId() return restrictionKeys.firstNotNullOfOrNull { RestrictedLockUtilsInternal.checkIfRestrictionEnforced(this, it, userId) } } fun Context.hasBaseUserRestriction(restrictionKey: String) = RestrictedLockUtilsInternal.hasBaseUserRestriction(this, restrictionKey, UserHandle.myUserId()) /** Returns if there is **any** base user restriction on given keys. */ fun Context.hasBaseUserRestriction(restrictionKeys: Array<String>): Boolean { val userManager = getSystemService(UserManager::class.java) ?: return false val userHandle = UserHandle.of(UserHandle.myUserId()) return restrictionKeys.any { userManager.hasBaseUserRestriction(it, userHandle) } }
src/com/android/settings/SettingsPreferenceBindingFactory.kt +5 −5 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings import android.os.UserHandle import androidx.preference.Preference import com.android.settingslib.RestrictedPreferenceHelperProvider import com.android.settingslib.metadata.PreferenceHierarchyNode Loading @@ -37,10 +36,11 @@ class SettingsPreferenceBindingFactory : DefaultPreferenceBindingFactory() { if (metadata is PreferenceRestrictionMixin) { if (preference is RestrictedPreferenceHelperProvider) { preference.getRestrictedPreferenceHelper().apply { val restrictionKey = metadata.restrictionKey if (!preference.context.hasBaseUserRestriction(restrictionKey)) { useAdminDisabledSummary(metadata.useAdminDisabledSummary) checkRestrictionAndSetDisabled(restrictionKey, UserHandle.myUserId()) val context = preference.context val restrictionKeys = metadata.restrictionKeys if (!context.hasBaseUserRestriction(restrictionKeys)) { setDisabledByAdmin(context.getRestrictionEnforcedAdmin(restrictionKeys)) } } } Loading
src/com/android/settings/display/AutoBrightnessScreen.kt +2 −2 Original line number Diff line number Diff line Loading @@ -74,8 +74,8 @@ class AutoBrightnessScreen : override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKey: String get() = UserManager.DISALLOW_CONFIG_BRIGHTNESS override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_CONFIG_BRIGHTNESS) override val useAdminDisabledSummary: Boolean get() = true Loading
src/com/android/settings/display/BrightnessLevelPreference.kt +2 −2 Original line number Diff line number Diff line Loading @@ -71,8 +71,8 @@ class BrightnessLevelPreference : override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKey: String get() = UserManager.DISALLOW_CONFIG_BRIGHTNESS override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_CONFIG_BRIGHTNESS) override val useAdminDisabledSummary: Boolean get() = true Loading
src/com/android/settings/network/MobileNetworkListScreen.kt +2 −2 Original line number Diff line number Diff line Loading @@ -40,8 +40,8 @@ class MobileNetworkListScreen : PreferenceScreenCreator, PreferenceRestrictionMi override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKey: String get() = UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS) override fun isFlagEnabled(context: Context) = Flags.catalystMobileNetworkList() Loading