summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chaohui Wang <chaohuiw@google.com> 2022-09-16 10:02:09 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-09-16 10:02:09 +0000
commitbcd00b3150a0e87ac2f6f28a335a9b75e80979f0 (patch)
tree36e38e14f55bba697cba24d99d6829aa1867069e
parent0e131b9178577a107966db5710b3814d7d3caff1 (diff)
parent59935e2a9a9e2cabb9ce3fe54d0a78569d15bc0e (diff)
Merge "Add RestrictionKeys to TogglePermissionAppList"
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt5
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt2
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt32
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreference.kt26
4 files changed, 53 insertions, 12 deletions
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
index c031fe808346..ae4f8bd1c597 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
@@ -34,11 +34,12 @@ import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPage
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.navigator
-import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.PackageManagers
import com.android.settingslib.spaprivileged.model.app.toRoute
+import com.android.settingslib.spaprivileged.model.enterprise.Restrictions
+import com.android.settingslib.spaprivileged.template.preference.RestrictedSwitchPreference
import kotlinx.coroutines.Dispatchers
private const val ENTRY_NAME = "AllowControl"
@@ -105,7 +106,7 @@ private fun TogglePermissionAppInfoPage(
LaunchedEffect(model, Dispatchers.Default) {
model.initState()
}
- SwitchPreference(model)
+ RestrictedSwitchPreference(model, Restrictions(userId, listModel.switchRestrictionKeys))
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
index 4c748b8d0fc8..74a50de1da92 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
@@ -37,6 +37,8 @@ interface TogglePermissionAppListModel<T : AppRecord> {
val pageTitleResId: Int
val switchTitleResId: Int
val footerResId: Int
+ val switchRestrictionKeys: List<String>
+ get() = emptyList()
/**
* Loads the extra info for the App List, and generates the [AppRecord] List.
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt
index 65cc4f9a165c..475e93053e5a 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppListPage.kt
@@ -22,6 +22,7 @@ import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.derivedStateOf
+import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
@@ -37,6 +38,10 @@ import com.android.settingslib.spa.framework.util.getStringArg
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
+import com.android.settingslib.spaprivileged.model.app.userId
+import com.android.settingslib.spaprivileged.model.enterprise.Restrictions
+import com.android.settingslib.spaprivileged.model.enterprise.RestrictionsProvider
+import com.android.settingslib.spaprivileged.template.preference.RestrictedSwitchPreference
import kotlinx.coroutines.flow.Flow
private const val ENTRY_NAME = "AppList"
@@ -127,15 +132,32 @@ private class TogglePermissionInternalAppListModel<T : AppRecord>(
@Composable
override fun getSummary(option: Int, record: T): State<String> {
+ val restrictionsProvider = remember {
+ val restrictions = Restrictions(
+ userId = record.app.userId,
+ keys = listModel.switchRestrictionKeys,
+ )
+ RestrictionsProvider(context, restrictions)
+ }
+ val restrictedMode = restrictionsProvider.restrictedMode.observeAsState()
val allowed = listModel.isAllowed(record)
return remember {
derivedStateOf {
- when (allowed.value) {
- true -> context.getString(R.string.app_permission_summary_allowed)
- false -> context.getString(R.string.app_permission_summary_not_allowed)
- else -> ""
- }
+ RestrictedSwitchPreference.getSummary(
+ context = context,
+ restrictedMode = restrictedMode.value,
+ noRestrictedSummary = getNoRestrictedSummary(allowed),
+ checked = allowed,
+ ).value
}
}
}
+
+ private fun getNoRestrictedSummary(allowed: State<Boolean?>) = derivedStateOf {
+ when (allowed.value) {
+ true -> context.getString(R.string.app_permission_summary_allowed)
+ false -> context.getString(R.string.app_permission_summary_not_allowed)
+ else -> context.getString(R.string.summary_placeholder)
+ }
+ }
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreference.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreference.kt
index 165481fb3ec1..31fd3ad6d521 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreference.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreference.kt
@@ -20,6 +20,7 @@ import android.content.Context
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.State
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.remember
@@ -55,6 +56,20 @@ fun RestrictedSwitchPreference(model: SwitchPreferenceModel, restrictions: Restr
}
}
+object RestrictedSwitchPreference {
+ fun getSummary(
+ context: Context,
+ restrictedMode: RestrictedMode?,
+ noRestrictedSummary: State<String>,
+ checked: State<Boolean?>,
+ ): State<String> = when (restrictedMode) {
+ is NoRestricted -> noRestrictedSummary
+ is BaseUserRestricted -> stateOf(context.getString(R.string.disabled))
+ is BlockedByAdmin -> derivedStateOf { restrictedMode.getSummary(checked.value) }
+ null -> stateOf(context.getString(R.string.summary_placeholder))
+ }
+}
+
private class RestrictedSwitchPreferenceModel(
private val context: Context,
model: SwitchPreferenceModel,
@@ -62,11 +77,12 @@ private class RestrictedSwitchPreferenceModel(
) : SwitchPreferenceModel {
override val title = model.title
- override val summary = when (restrictedMode) {
- is NoRestricted -> model.summary
- is BaseUserRestricted -> stateOf(context.getString(R.string.disabled))
- is BlockedByAdmin -> derivedStateOf { restrictedMode.getSummary(model.checked.value) }
- }
+ override val summary = RestrictedSwitchPreference.getSummary(
+ context = context,
+ restrictedMode = restrictedMode,
+ noRestrictedSummary = model.summary,
+ checked = model.checked,
+ )
override val checked = when (restrictedMode) {
is NoRestricted -> model.checked