Reapply "Migrate AppOps"

This reverts commit 19b01bd68b.

Bug: 339846642
Test: manual - on Special app access
Change-Id: I000274ae9c725f848e1c8910120ba886fcc5be95
This commit is contained in:
Chaohui Wang
2024-05-20 10:35:01 +08:00
parent 9c0654daea
commit fb48926fe8
19 changed files with 95 additions and 48 deletions

View File

@@ -28,6 +28,7 @@ import androidx.compose.runtime.Composable
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.R import com.android.settingslib.R
import com.android.settingslib.spa.lifecycle.collectAsCallbackWithLifecycle import com.android.settingslib.spa.lifecycle.collectAsCallbackWithLifecycle
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.model.app.AppOpsController import com.android.settingslib.spaprivileged.model.app.AppOpsController
import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.IPackageManagers import com.android.settingslib.spaprivileged.model.app.IPackageManagers
@@ -116,8 +117,7 @@ class AlarmsAndRemindersAppListModel(
controller = AppOpsController( controller = AppOpsController(
context = context, context = context,
app = app, app = app,
op = AppOpsManager.OP_SCHEDULE_EXACT_ALARM, appOps = APP_OPS,
setModeByUid = true,
), ),
) )
} }
@@ -136,6 +136,11 @@ class AlarmsAndRemindersAppListModel(
} }
companion object { companion object {
private val APP_OPS = AppOps(
op = AppOpsManager.OP_SCHEDULE_EXACT_ALARM,
setModeByUid = true,
)
private const val PERMISSION: String = Manifest.permission.SCHEDULE_EXACT_ALARM private const val PERMISSION: String = Manifest.permission.SCHEDULE_EXACT_ALARM
/** Checks whether [Manifest.permission.SCHEDULE_EXACT_ALARM] is enabled. */ /** Checks whether [Manifest.permission.SCHEDULE_EXACT_ALARM] is enabled. */

View File

@@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -35,9 +36,11 @@ class AllFilesAccessListModel(context: Context) : AppOpPermissionListModel(conte
override val pageTitleResId = R.string.manage_external_storage_title override val pageTitleResId = R.string.manage_external_storage_title
override val switchTitleResId = R.string.permit_manage_external_storage override val switchTitleResId = R.string.permit_manage_external_storage
override val footerResId = R.string.allow_manage_external_storage_description override val footerResId = R.string.allow_manage_external_storage_description
override val appOp = AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE override val appOps = AppOps(
op = AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE,
setModeByUid = true,
)
override val permission = Manifest.permission.MANAGE_EXTERNAL_STORAGE override val permission = Manifest.permission.MANAGE_EXTERNAL_STORAGE
override val setModeByUid = true
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {
super.setAllowed(record, newAllowed) super.setAllowed(record, newAllowed)

View File

@@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -35,7 +36,7 @@ class DisplayOverOtherAppsListModel(context: Context) : AppOpPermissionListModel
override val pageTitleResId = R.string.system_alert_window_settings override val pageTitleResId = R.string.system_alert_window_settings
override val switchTitleResId = R.string.permit_draw_overlay override val switchTitleResId = R.string.permit_draw_overlay
override val footerResId = R.string.allow_overlay_description override val footerResId = R.string.allow_overlay_description
override val appOp = AppOpsManager.OP_SYSTEM_ALERT_WINDOW override val appOps = AppOps(AppOpsManager.OP_SYSTEM_ALERT_WINDOW)
override val permission = Manifest.permission.SYSTEM_ALERT_WINDOW override val permission = Manifest.permission.SYSTEM_ALERT_WINDOW
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {

View File

@@ -20,7 +20,6 @@ import android.Manifest
import android.app.AppGlobals import android.app.AppGlobals
import android.app.AppOpsManager import android.app.AppOpsManager
import android.app.AppOpsManager.MODE_DEFAULT import android.app.AppOpsManager.MODE_DEFAULT
import android.app.AppOpsManager.OP_REQUEST_INSTALL_PACKAGES
import android.content.Context import android.content.Context
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.os.Process import android.os.Process
@@ -28,6 +27,7 @@ import android.os.UserManager
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spa.lifecycle.collectAsCallbackWithLifecycle import com.android.settingslib.spa.lifecycle.collectAsCallbackWithLifecycle
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.model.app.AppOpsController import com.android.settingslib.spaprivileged.model.app.AppOpsController
import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.userId import com.android.settingslib.spaprivileged.model.app.userId
@@ -62,12 +62,7 @@ class InstallUnknownAppsListModel(private val context: Context) :
override fun transformItem(app: ApplicationInfo) = override fun transformItem(app: ApplicationInfo) =
InstallUnknownAppsRecord( InstallUnknownAppsRecord(
app = app, app = app,
appOpsController = appOpsController = AppOpsController(context = context, app = app, appOps = APP_OPS),
AppOpsController(
context = context,
app = app,
op = OP_REQUEST_INSTALL_PACKAGES,
),
) )
override fun filter( override fun filter(
@@ -92,6 +87,8 @@ class InstallUnknownAppsListModel(private val context: Context) :
} }
companion object { companion object {
private val APP_OPS = AppOps(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES)
private fun isChangeable( private fun isChangeable(
record: InstallUnknownAppsRecord, record: InstallUnknownAppsRecord,
potentialPackageNames: Set<String>, potentialPackageNames: Set<String>,

View File

@@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -35,9 +36,11 @@ class LongBackgroundTasksAppsListModel(context: Context) : AppOpPermissionListMo
override val pageTitleResId = R.string.long_background_tasks_title override val pageTitleResId = R.string.long_background_tasks_title
override val switchTitleResId = R.string.long_background_tasks_switch_title override val switchTitleResId = R.string.long_background_tasks_switch_title
override val footerResId = R.string.long_background_tasks_footer_title override val footerResId = R.string.long_background_tasks_footer_title
override val appOp = AppOpsManager.OP_RUN_USER_INITIATED_JOBS override val appOps = AppOps(
op = AppOpsManager.OP_RUN_USER_INITIATED_JOBS,
setModeByUid = true,
)
override val permission = Manifest.permission.RUN_USER_INITIATED_JOBS override val permission = Manifest.permission.RUN_USER_INITIATED_JOBS
override val setModeByUid = true
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {
super.setAllowed(record, newAllowed) super.setAllowed(record, newAllowed)

View File

@@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -35,9 +36,11 @@ class MediaManagementAppsListModel(context: Context) : AppOpPermissionListModel(
override val pageTitleResId = R.string.media_management_apps_title override val pageTitleResId = R.string.media_management_apps_title
override val switchTitleResId = R.string.media_management_apps_toggle_label override val switchTitleResId = R.string.media_management_apps_toggle_label
override val footerResId = R.string.media_management_apps_description override val footerResId = R.string.media_management_apps_description
override val appOp = AppOpsManager.OP_MANAGE_MEDIA override val appOps = AppOps(
op = AppOpsManager.OP_MANAGE_MEDIA,
setModeByUid = true,
)
override val permission = Manifest.permission.MANAGE_MEDIA override val permission = Manifest.permission.MANAGE_MEDIA
override val setModeByUid = true
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {
super.setAllowed(record, newAllowed) super.setAllowed(record, newAllowed)

View File

@@ -25,6 +25,7 @@ import android.content.Context
import com.android.media.flags.Flags; import com.android.media.flags.Flags;
import com.android.settings.R import com.android.settings.R
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -38,9 +39,11 @@ class MediaRoutingControlAppsListModel(context: Context) : AppOpPermissionListMo
override val pageTitleResId = R.string.media_routing_control_title override val pageTitleResId = R.string.media_routing_control_title
override val switchTitleResId = R.string.allow_media_routing_control override val switchTitleResId = R.string.allow_media_routing_control
override val footerResId = R.string.allow_media_routing_description override val footerResId = R.string.allow_media_routing_description
override val appOp = AppOpsManager.OP_MEDIA_ROUTING_CONTROL override val appOps = AppOps(
op = AppOpsManager.OP_MEDIA_ROUTING_CONTROL,
setModeByUid = true,
)
override val permission = Manifest.permission.MEDIA_ROUTING_CONTROL override val permission = Manifest.permission.MEDIA_ROUTING_CONTROL
override val setModeByUid = true
private val roleManager = context.getSystemService(RoleManager::class.java) private val roleManager = context.getSystemService(RoleManager::class.java)
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {

View File

@@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -35,7 +36,7 @@ class ModifySystemSettingsListModel(context: Context) : AppOpPermissionListModel
override val pageTitleResId = R.string.write_system_settings override val pageTitleResId = R.string.write_system_settings
override val switchTitleResId = R.string.permit_write_settings override val switchTitleResId = R.string.permit_write_settings
override val footerResId = R.string.write_settings_description override val footerResId = R.string.write_settings_description
override val appOp = AppOpsManager.OP_WRITE_SETTINGS override val appOps = AppOps(AppOpsManager.OP_WRITE_SETTINGS)
override val permission = Manifest.permission.WRITE_SETTINGS override val permission = Manifest.permission.WRITE_SETTINGS
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {

View File

@@ -17,7 +17,6 @@
package com.android.settings.spa.app.specialaccess package com.android.settings.spa.app.specialaccess
import android.app.AppOpsManager import android.app.AppOpsManager
import android.app.AppOpsManager.OP_PICTURE_IN_PICTURE
import android.content.Context import android.content.Context
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
@@ -28,6 +27,7 @@ import android.util.Log
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spa.lifecycle.collectAsCallbackWithLifecycle import com.android.settingslib.spa.lifecycle.collectAsCallbackWithLifecycle
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.model.app.AppOpsController import com.android.settingslib.spaprivileged.model.app.AppOpsController
import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.installed import com.android.settingslib.spaprivileged.model.app.installed
@@ -79,12 +79,7 @@ class PictureInPictureListModel(private val context: Context) :
PictureInPictureRecord( PictureInPictureRecord(
app = app, app = app,
isSupport = isSupport, isSupport = isSupport,
appOpsController = appOpsController = AppOpsController(context = context, app = app, appOps = APP_OPS),
AppOpsController(
context = context,
app = app,
op = OP_PICTURE_IN_PICTURE,
),
) )
override fun filter(userIdFlow: Flow<Int>, recordListFlow: Flow<List<PictureInPictureRecord>>) = override fun filter(userIdFlow: Flow<Int>, recordListFlow: Flow<List<PictureInPictureRecord>>) =
@@ -131,6 +126,8 @@ class PictureInPictureListModel(private val context: Context) :
companion object { companion object {
private const val TAG = "PictureInPictureListModel" private const val TAG = "PictureInPictureListModel"
private val APP_OPS = AppOps(AppOpsManager.OP_PICTURE_IN_PICTURE)
private fun PackageInfo.supportsPictureInPicture() = private fun PackageInfo.supportsPictureInPicture() =
activities?.any(ActivityInfo::supportsPictureInPicture) ?: false activities?.any(ActivityInfo::supportsPictureInPicture) ?: false

View File

@@ -20,8 +20,8 @@ import android.Manifest
import android.app.AppOpsManager import android.app.AppOpsManager
import android.app.settings.SettingsEnums import android.app.settings.SettingsEnums
import android.content.Context import android.content.Context
import com.android.settings.R
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -35,9 +35,11 @@ class TurnScreenOnAppsListModel(context: Context) : AppOpPermissionListModel(con
override val pageTitleResId = com.android.settingslib.R.string.turn_screen_on_title override val pageTitleResId = com.android.settingslib.R.string.turn_screen_on_title
override val switchTitleResId = com.android.settingslib.R.string.allow_turn_screen_on override val switchTitleResId = com.android.settingslib.R.string.allow_turn_screen_on
override val footerResId = com.android.settingslib.R.string.allow_turn_screen_on_description override val footerResId = com.android.settingslib.R.string.allow_turn_screen_on_description
override val appOp = AppOpsManager.OP_TURN_SCREEN_ON override val appOps = AppOps(
op = AppOpsManager.OP_TURN_SCREEN_ON,
setModeByUid = true,
)
override val permission = Manifest.permission.TURN_SCREEN_ON override val permission = Manifest.permission.TURN_SCREEN_ON
override val setModeByUid = true
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {
super.setAllowed(record, newAllowed) super.setAllowed(record, newAllowed)

View File

@@ -20,6 +20,7 @@ import android.Manifest
import android.app.AppOpsManager import android.app.AppOpsManager
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider
@@ -32,7 +33,9 @@ class UseFullScreenIntentListModel(context: Context) : AppOpPermissionListModel(
override val pageTitleResId = R.string.full_screen_intent_title override val pageTitleResId = R.string.full_screen_intent_title
override val switchTitleResId = R.string.permit_full_screen_intent override val switchTitleResId = R.string.permit_full_screen_intent
override val footerResId = R.string.footer_description_full_screen_intent override val footerResId = R.string.footer_description_full_screen_intent
override val appOp = AppOpsManager.OP_USE_FULL_SCREEN_INTENT override val appOps = AppOps(
op = AppOpsManager.OP_USE_FULL_SCREEN_INTENT,
setModeByUid = true,
)
override val permission = Manifest.permission.USE_FULL_SCREEN_INTENT override val permission = Manifest.permission.USE_FULL_SCREEN_INTENT
override val setModeByUid = true
} }

View File

@@ -21,6 +21,7 @@ import android.app.AppOpsManager
import android.app.AppOpsManager.MODE_IGNORED import android.app.AppOpsManager.MODE_IGNORED
import android.content.Context import android.content.Context
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.model.app.IPackageManagers import com.android.settingslib.spaprivileged.model.app.IPackageManagers
import com.android.settingslib.spaprivileged.model.app.PackageManagers import com.android.settingslib.spaprivileged.model.app.PackageManagers
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel
@@ -39,11 +40,13 @@ class WifiControlAppListModel(
override val switchTitleResId = R.string.change_wifi_state_app_detail_switch override val switchTitleResId = R.string.change_wifi_state_app_detail_switch
override val footerResId = R.string.change_wifi_state_app_detail_summary override val footerResId = R.string.change_wifi_state_app_detail_summary
override val appOp = AppOpsManager.OP_CHANGE_WIFI_STATE override val appOps = AppOps(
op = AppOpsManager.OP_CHANGE_WIFI_STATE,
modeForNotAllowed = MODE_IGNORED,
)
override val permission = Manifest.permission.CHANGE_WIFI_STATE override val permission = Manifest.permission.CHANGE_WIFI_STATE
/** NETWORK_SETTINGS permission trumps CHANGE_WIFI_CONFIG. */ /** NETWORK_SETTINGS permission trumps CHANGE_WIFI_CONFIG. */
override val broaderPermission = Manifest.permission.NETWORK_SETTINGS override val broaderPermission = Manifest.permission.NETWORK_SETTINGS
override val permissionHasAppOpFlag = false override val permissionHasAppOpFlag = false
override val modeForNotAllowed = MODE_IGNORED
} }

View File

@@ -269,7 +269,7 @@ class WifiControlAppListModelTest {
private class FakeAppOpsController(private val fakeMode: Int) : IAppOpsController { private class FakeAppOpsController(private val fakeMode: Int) : IAppOpsController {
var setAllowedCalledWith: Boolean? = null var setAllowedCalledWith: Boolean? = null
override val mode = flowOf(fakeMode) override val modeFlow = flowOf(fakeMode)
override fun setAllowed(allowed: Boolean) { override fun setAllowed(allowed: Boolean) {
setAllowedCalledWith = allowed setAllowedCalledWith = allowed

View File

@@ -22,6 +22,7 @@ import android.content.Context
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@@ -37,8 +38,12 @@ class AllFilesAccessTest {
assertThat(listModel.pageTitleResId).isEqualTo(R.string.manage_external_storage_title) assertThat(listModel.pageTitleResId).isEqualTo(R.string.manage_external_storage_title)
assertThat(listModel.switchTitleResId).isEqualTo(R.string.permit_manage_external_storage) assertThat(listModel.switchTitleResId).isEqualTo(R.string.permit_manage_external_storage)
assertThat(listModel.footerResId).isEqualTo(R.string.allow_manage_external_storage_description) assertThat(listModel.footerResId).isEqualTo(R.string.allow_manage_external_storage_description)
assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE) assertThat(listModel.appOps).isEqualTo(
AppOps(
op = AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE,
setModeByUid = true,
)
)
assertThat(listModel.permission).isEqualTo(Manifest.permission.MANAGE_EXTERNAL_STORAGE) assertThat(listModel.permission).isEqualTo(Manifest.permission.MANAGE_EXTERNAL_STORAGE)
assertThat(listModel.setModeByUid).isTrue()
} }
} }

View File

@@ -23,6 +23,7 @@ import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spaprivileged.model.app.AppOps
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@@ -37,8 +38,12 @@ class LongBackgroundTasksAppsTest {
assertThat(listModel.pageTitleResId).isEqualTo(R.string.long_background_tasks_title) assertThat(listModel.pageTitleResId).isEqualTo(R.string.long_background_tasks_title)
assertThat(listModel.switchTitleResId).isEqualTo(R.string.long_background_tasks_switch_title) assertThat(listModel.switchTitleResId).isEqualTo(R.string.long_background_tasks_switch_title)
assertThat(listModel.footerResId).isEqualTo(R.string.long_background_tasks_footer_title) assertThat(listModel.footerResId).isEqualTo(R.string.long_background_tasks_footer_title)
assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_RUN_USER_INITIATED_JOBS) assertThat(listModel.appOps).isEqualTo(
AppOps(
op = AppOpsManager.OP_RUN_USER_INITIATED_JOBS,
setModeByUid = true,
)
)
assertThat(listModel.permission).isEqualTo(Manifest.permission.RUN_USER_INITIATED_JOBS) assertThat(listModel.permission).isEqualTo(Manifest.permission.RUN_USER_INITIATED_JOBS)
assertThat(listModel.setModeByUid).isTrue()
} }
} }

View File

@@ -22,6 +22,7 @@ import android.content.Context
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@@ -37,8 +38,12 @@ class MediaManagementAppsTest {
assertThat(listModel.pageTitleResId).isEqualTo(R.string.media_management_apps_title) assertThat(listModel.pageTitleResId).isEqualTo(R.string.media_management_apps_title)
assertThat(listModel.switchTitleResId).isEqualTo(R.string.media_management_apps_toggle_label) assertThat(listModel.switchTitleResId).isEqualTo(R.string.media_management_apps_toggle_label)
assertThat(listModel.footerResId).isEqualTo(R.string.media_management_apps_description) assertThat(listModel.footerResId).isEqualTo(R.string.media_management_apps_description)
assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_MANAGE_MEDIA) assertThat(listModel.appOps).isEqualTo(
AppOps(
op = AppOpsManager.OP_MANAGE_MEDIA,
setModeByUid = true,
)
)
assertThat(listModel.permission).isEqualTo(Manifest.permission.MANAGE_MEDIA) assertThat(listModel.permission).isEqualTo(Manifest.permission.MANAGE_MEDIA)
assertThat(listModel.setModeByUid).isTrue()
} }
} }

View File

@@ -29,6 +29,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.media.flags.Flags import com.android.media.flags.Flags
import com.android.settings.R import com.android.settings.R
import com.android.settings.testutils.FakeFeatureFactory import com.android.settings.testutils.FakeFeatureFactory
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.model.app.IAppOpsController import com.android.settingslib.spaprivileged.model.app.IAppOpsController
import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
@@ -74,9 +75,13 @@ class MediaRoutingControlTest {
assertThat(listModel.pageTitleResId).isEqualTo(R.string.media_routing_control_title) assertThat(listModel.pageTitleResId).isEqualTo(R.string.media_routing_control_title)
assertThat(listModel.switchTitleResId).isEqualTo(R.string.allow_media_routing_control) assertThat(listModel.switchTitleResId).isEqualTo(R.string.allow_media_routing_control)
assertThat(listModel.footerResId).isEqualTo(R.string.allow_media_routing_description) assertThat(listModel.footerResId).isEqualTo(R.string.allow_media_routing_description)
assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_MEDIA_ROUTING_CONTROL) assertThat(listModel.appOps).isEqualTo(
AppOps(
op = AppOpsManager.OP_MEDIA_ROUTING_CONTROL,
setModeByUid = true,
)
)
assertThat(listModel.permission).isEqualTo(Manifest.permission.MEDIA_ROUTING_CONTROL) assertThat(listModel.permission).isEqualTo(Manifest.permission.MEDIA_ROUTING_CONTROL)
assertThat(listModel.setModeByUid).isTrue()
} }
@Test @Test
@@ -223,13 +228,13 @@ class MediaRoutingControlTest {
private class FakeAppOpsController(fakeMode: Int) : IAppOpsController { private class FakeAppOpsController(fakeMode: Int) : IAppOpsController {
override val mode = MutableStateFlow(fakeMode) override val modeFlow = MutableStateFlow(fakeMode)
override fun setAllowed(allowed: Boolean) { override fun setAllowed(allowed: Boolean) {
mode.value = if (allowed) AppOpsManager.MODE_ALLOWED else AppOpsManager.MODE_ERRORED modeFlow.value = if (allowed) AppOpsManager.MODE_ALLOWED else AppOpsManager.MODE_ERRORED
} }
override fun getMode(): Int = mode.value override fun getMode(): Int = modeFlow.value
} }
companion object { companion object {

View File

@@ -27,6 +27,7 @@ import android.os.DeadSystemRuntimeException
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.R import com.android.settings.R
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.android.settingslib.spaprivileged.model.app.AppOpsController import com.android.settingslib.spaprivileged.model.app.AppOpsController
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
@@ -179,7 +180,7 @@ class PictureInPictureTest {
appOpsController = AppOpsController( appOpsController = AppOpsController(
context = context, context = context,
app = PICTURE_IN_PICTURE_APP, app = PICTURE_IN_PICTURE_APP,
op = AppOpsManager.OP_PICTURE_IN_PICTURE, appOps = AppOps(AppOpsManager.OP_PICTURE_IN_PICTURE),
), ),
) )

View File

@@ -20,6 +20,7 @@ import android.app.AppOpsManager
import android.content.Context import android.content.Context
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.spaprivileged.model.app.AppOps
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@@ -35,8 +36,12 @@ class TurnScreenOnAppsTest {
assertThat(listModel.pageTitleResId).isEqualTo(com.android.settingslib.R.string.turn_screen_on_title) assertThat(listModel.pageTitleResId).isEqualTo(com.android.settingslib.R.string.turn_screen_on_title)
assertThat(listModel.switchTitleResId).isEqualTo(com.android.settingslib.R.string.allow_turn_screen_on) assertThat(listModel.switchTitleResId).isEqualTo(com.android.settingslib.R.string.allow_turn_screen_on)
assertThat(listModel.footerResId).isEqualTo(com.android.settingslib.R.string.allow_turn_screen_on_description) assertThat(listModel.footerResId).isEqualTo(com.android.settingslib.R.string.allow_turn_screen_on_description)
assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_TURN_SCREEN_ON) assertThat(listModel.appOps).isEqualTo(
AppOps(
op = AppOpsManager.OP_TURN_SCREEN_ON,
setModeByUid = true,
)
)
assertThat(listModel.permission).isEqualTo(Manifest.permission.TURN_SCREEN_ON) assertThat(listModel.permission).isEqualTo(Manifest.permission.TURN_SCREEN_ON)
assertThat(listModel.setModeByUid).isTrue()
} }
} }