Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt +16 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settingslib.spaprivileged.model.enterprise import android.app.admin.DevicePolicyResources.Strings.Settings import android.content.Context import android.content.Intent import com.android.settingslib.RestrictedLockUtils import com.android.settingslib.widget.restricted.R Loading @@ -32,6 +33,11 @@ interface BlockedByAdmin : RestrictedMode { fun sendShowAdminSupportDetailsIntent() } interface BlockedByEcm : RestrictedMode { fun showRestrictedSettingsDetails() } internal data class BlockedByAdminImpl( private val context: Context, private val enforcedAdmin: RestrictedLockUtils.EnforcedAdmin, Loading @@ -55,3 +61,13 @@ internal data class BlockedByAdminImpl( RestrictedLockUtils.sendShowAdminSupportDetailsIntent(context, enforcedAdmin) } } internal data class BlockedByEcmImpl( private val context: Context, private val intent: Intent, ) : BlockedByEcm { override fun showRestrictedSettingsDetails() { context.startActivity(intent) } } packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictionsProvider.kt +19 −1 Original line number Diff line number Diff line Loading @@ -29,10 +29,20 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn data class EnhancedConfirmation( val key: String, val uid: Int, val packageName: String, ) data class Restrictions( val userId: Int = UserHandle.myUserId(), val keys: List<String>, ) val enhancedConfirmation: EnhancedConfirmation? = null, ) { fun isEmpty(): Boolean { return keys.isEmpty() && enhancedConfirmation == null } } interface RestrictionsProvider { @Composable Loading Loading @@ -77,6 +87,14 @@ internal class RestrictionsProviderImpl( .checkIfRestrictionEnforced(context, key, restrictions.userId) ?.let { return BlockedByAdminImpl(context = context, enforcedAdmin = it) } } restrictions.enhancedConfirmation?.let { ec -> RestrictedLockUtilsInternal .checkIfRequiresEnhancedConfirmation(context, ec.key, ec.uid, ec.packageName) ?.let { intent -> return BlockedByEcmImpl(context = context, intent = intent) } } return NoRestricted } } packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt +3 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,9 @@ abstract class AppOpPermissionListModel( abstract val appOp: Int abstract val permission: String override val enhancedConfirmationKey: String? get() = AppOpsManager.opToPublicName(appOp) /** * When set, specifies the broader permission who trumps the [permission]. * Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt +7 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.IPackageManagers import com.android.settingslib.spaprivileged.model.app.PackageManagers import com.android.settingslib.spaprivileged.model.app.toRoute import com.android.settingslib.spaprivileged.model.enterprise.EnhancedConfirmation import com.android.settingslib.spaprivileged.model.enterprise.Restrictions import com.android.settingslib.spaprivileged.model.enterprise.RestrictionsProviderFactory import com.android.settingslib.spaprivileged.model.enterprise.RestrictionsProviderImpl Loading Loading @@ -154,7 +155,12 @@ internal fun <T : AppRecord> TogglePermissionAppListModel<T>.TogglePermissionApp override val changeable = { isChangeable } override val onCheckedChange: (Boolean) -> Unit = { setAllowed(record, it) } } val restrictions = Restrictions(userId, switchRestrictionKeys) val restrictions = Restrictions(userId = userId, keys = switchRestrictionKeys, enhancedConfirmation = enhancedConfirmationKey?.let { EnhancedConfirmation( key = it, uid = checkNotNull(applicationInfo).uid, packageName = packageName) }) RestrictedSwitchPreference(switchModel, restrictions, restrictionsProviderFactory) } } Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,9 @@ interface TogglePermissionAppListModel<T : AppRecord> { val switchRestrictionKeys: List<String> get() = emptyList() val enhancedConfirmationKey: String? get() = null /** * Loads the extra info for the App List, and generates the [AppRecord] List. * Loading Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt +16 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settingslib.spaprivileged.model.enterprise import android.app.admin.DevicePolicyResources.Strings.Settings import android.content.Context import android.content.Intent import com.android.settingslib.RestrictedLockUtils import com.android.settingslib.widget.restricted.R Loading @@ -32,6 +33,11 @@ interface BlockedByAdmin : RestrictedMode { fun sendShowAdminSupportDetailsIntent() } interface BlockedByEcm : RestrictedMode { fun showRestrictedSettingsDetails() } internal data class BlockedByAdminImpl( private val context: Context, private val enforcedAdmin: RestrictedLockUtils.EnforcedAdmin, Loading @@ -55,3 +61,13 @@ internal data class BlockedByAdminImpl( RestrictedLockUtils.sendShowAdminSupportDetailsIntent(context, enforcedAdmin) } } internal data class BlockedByEcmImpl( private val context: Context, private val intent: Intent, ) : BlockedByEcm { override fun showRestrictedSettingsDetails() { context.startActivity(intent) } }
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictionsProvider.kt +19 −1 Original line number Diff line number Diff line Loading @@ -29,10 +29,20 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn data class EnhancedConfirmation( val key: String, val uid: Int, val packageName: String, ) data class Restrictions( val userId: Int = UserHandle.myUserId(), val keys: List<String>, ) val enhancedConfirmation: EnhancedConfirmation? = null, ) { fun isEmpty(): Boolean { return keys.isEmpty() && enhancedConfirmation == null } } interface RestrictionsProvider { @Composable Loading Loading @@ -77,6 +87,14 @@ internal class RestrictionsProviderImpl( .checkIfRestrictionEnforced(context, key, restrictions.userId) ?.let { return BlockedByAdminImpl(context = context, enforcedAdmin = it) } } restrictions.enhancedConfirmation?.let { ec -> RestrictedLockUtilsInternal .checkIfRequiresEnhancedConfirmation(context, ec.key, ec.uid, ec.packageName) ?.let { intent -> return BlockedByEcmImpl(context = context, intent = intent) } } return NoRestricted } }
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt +3 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,9 @@ abstract class AppOpPermissionListModel( abstract val appOp: Int abstract val permission: String override val enhancedConfirmationKey: String? get() = AppOpsManager.opToPublicName(appOp) /** * When set, specifies the broader permission who trumps the [permission]. * Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt +7 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.IPackageManagers import com.android.settingslib.spaprivileged.model.app.PackageManagers import com.android.settingslib.spaprivileged.model.app.toRoute import com.android.settingslib.spaprivileged.model.enterprise.EnhancedConfirmation import com.android.settingslib.spaprivileged.model.enterprise.Restrictions import com.android.settingslib.spaprivileged.model.enterprise.RestrictionsProviderFactory import com.android.settingslib.spaprivileged.model.enterprise.RestrictionsProviderImpl Loading Loading @@ -154,7 +155,12 @@ internal fun <T : AppRecord> TogglePermissionAppListModel<T>.TogglePermissionApp override val changeable = { isChangeable } override val onCheckedChange: (Boolean) -> Unit = { setAllowed(record, it) } } val restrictions = Restrictions(userId, switchRestrictionKeys) val restrictions = Restrictions(userId = userId, keys = switchRestrictionKeys, enhancedConfirmation = enhancedConfirmationKey?.let { EnhancedConfirmation( key = it, uid = checkNotNull(applicationInfo).uid, packageName = packageName) }) RestrictedSwitchPreference(switchModel, restrictions, restrictionsProviderFactory) } } Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,9 @@ interface TogglePermissionAppListModel<T : AppRecord> { val switchRestrictionKeys: List<String> get() = emptyList() val enhancedConfirmationKey: String? get() = null /** * Loads the extra info for the App List, and generates the [AppRecord] List. * Loading