From fb48926fe84e4ace980d4a95c238f5265e67f422 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Mon, 20 May 2024 10:35:01 +0800 Subject: [PATCH] Reapply "Migrate AppOps" This reverts commit 19b01bd68b9c989e7323eccabb8fa3116a60300b. Bug: 339846642 Test: manual - on Special app access Change-Id: I000274ae9c725f848e1c8910120ba886fcc5be95 --- .../specialaccess/AlarmsAndRemindersAppList.kt | 9 +++++++-- .../spa/app/specialaccess/AllFilesAccess.kt | 7 +++++-- .../spa/app/specialaccess/DisplayOverOtherApps.kt | 3 ++- .../spa/app/specialaccess/InstallUnknownApps.kt | 11 ++++------- .../app/specialaccess/LongBackgroundTasksApps.kt | 7 +++++-- .../spa/app/specialaccess/MediaManagementApps.kt | 7 +++++-- .../spa/app/specialaccess/MediaRoutingControl.kt | 7 +++++-- .../spa/app/specialaccess/ModifySystemSettings.kt | 3 ++- .../spa/app/specialaccess/PictureInPicture.kt | 11 ++++------- .../spa/app/specialaccess/TurnScreenOnApps.kt | 8 +++++--- .../spa/app/specialaccess/UseFullScreenIntent.kt | 7 +++++-- .../spa/app/specialaccess/WifiControlApps.kt | 7 +++++-- .../spa/app/WifiControlAppListModelTest.kt | 2 +- .../spa/app/specialaccess/AllFilesAccessTest.kt | 9 +++++++-- .../specialaccess/LongBackgroundTasksAppsTest.kt | 9 +++++++-- .../app/specialaccess/MediaManagementAppsTest.kt | 9 +++++++-- .../app/specialaccess/MediaRoutingControlTest.kt | 15 ++++++++++----- .../spa/app/specialaccess/PictureInPictureTest.kt | 3 ++- .../spa/app/specialaccess/TurnScreenOnAppsTest.kt | 9 +++++++-- 19 files changed, 95 insertions(+), 48 deletions(-) diff --git a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt index 2b8d12d12d0..b15675ed14f 100644 --- a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt +++ b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt @@ -28,6 +28,7 @@ import androidx.compose.runtime.Composable import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settingslib.R 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.AppRecord import com.android.settingslib.spaprivileged.model.app.IPackageManagers @@ -116,8 +117,7 @@ class AlarmsAndRemindersAppListModel( controller = AppOpsController( context = context, app = app, - op = AppOpsManager.OP_SCHEDULE_EXACT_ALARM, - setModeByUid = true, + appOps = APP_OPS, ), ) } @@ -136,6 +136,11 @@ class AlarmsAndRemindersAppListModel( } 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 /** Checks whether [Manifest.permission.SCHEDULE_EXACT_ALARM] is enabled. */ diff --git a/src/com/android/settings/spa/app/specialaccess/AllFilesAccess.kt b/src/com/android/settings/spa/app/specialaccess/AllFilesAccess.kt index d82045d17b4..f6c08c0ca7c 100644 --- a/src/com/android/settings/spa/app/specialaccess/AllFilesAccess.kt +++ b/src/com/android/settings/spa/app/specialaccess/AllFilesAccess.kt @@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums import android.content.Context import com.android.settings.R 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.AppOpPermissionRecord 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 switchTitleResId = R.string.permit_manage_external_storage 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 setModeByUid = true override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { super.setAllowed(record, newAllowed) diff --git a/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt b/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt index 26d74518411..904f0afd3d6 100644 --- a/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt +++ b/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt @@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums import android.content.Context import com.android.settings.R 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.AppOpPermissionRecord 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 switchTitleResId = R.string.permit_draw_overlay 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 fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { diff --git a/src/com/android/settings/spa/app/specialaccess/InstallUnknownApps.kt b/src/com/android/settings/spa/app/specialaccess/InstallUnknownApps.kt index 18ce585f1ee..ace7949533f 100644 --- a/src/com/android/settings/spa/app/specialaccess/InstallUnknownApps.kt +++ b/src/com/android/settings/spa/app/specialaccess/InstallUnknownApps.kt @@ -20,7 +20,6 @@ import android.Manifest import android.app.AppGlobals import android.app.AppOpsManager import android.app.AppOpsManager.MODE_DEFAULT -import android.app.AppOpsManager.OP_REQUEST_INSTALL_PACKAGES import android.content.Context import android.content.pm.ApplicationInfo import android.os.Process @@ -28,6 +27,7 @@ import android.os.UserManager import androidx.compose.runtime.Composable import com.android.settings.R 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.AppRecord import com.android.settingslib.spaprivileged.model.app.userId @@ -62,12 +62,7 @@ class InstallUnknownAppsListModel(private val context: Context) : override fun transformItem(app: ApplicationInfo) = InstallUnknownAppsRecord( app = app, - appOpsController = - AppOpsController( - context = context, - app = app, - op = OP_REQUEST_INSTALL_PACKAGES, - ), + appOpsController = AppOpsController(context = context, app = app, appOps = APP_OPS), ) override fun filter( @@ -92,6 +87,8 @@ class InstallUnknownAppsListModel(private val context: Context) : } companion object { + private val APP_OPS = AppOps(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES) + private fun isChangeable( record: InstallUnknownAppsRecord, potentialPackageNames: Set, diff --git a/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt b/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt index 3ba9b085d23..d897b5231db 100644 --- a/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt +++ b/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt @@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums import android.content.Context import com.android.settings.R 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.AppOpPermissionRecord 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 switchTitleResId = R.string.long_background_tasks_switch_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 setModeByUid = true override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { super.setAllowed(record, newAllowed) diff --git a/src/com/android/settings/spa/app/specialaccess/MediaManagementApps.kt b/src/com/android/settings/spa/app/specialaccess/MediaManagementApps.kt index 3e3457c2018..ce6abbdf2b8 100644 --- a/src/com/android/settings/spa/app/specialaccess/MediaManagementApps.kt +++ b/src/com/android/settings/spa/app/specialaccess/MediaManagementApps.kt @@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums import android.content.Context import com.android.settings.R 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.AppOpPermissionRecord 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 switchTitleResId = R.string.media_management_apps_toggle_label 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 setModeByUid = true override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { super.setAllowed(record, newAllowed) diff --git a/src/com/android/settings/spa/app/specialaccess/MediaRoutingControl.kt b/src/com/android/settings/spa/app/specialaccess/MediaRoutingControl.kt index b9fb9b8cd9a..21b9400da0a 100644 --- a/src/com/android/settings/spa/app/specialaccess/MediaRoutingControl.kt +++ b/src/com/android/settings/spa/app/specialaccess/MediaRoutingControl.kt @@ -25,6 +25,7 @@ import android.content.Context import com.android.media.flags.Flags; import com.android.settings.R 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.AppOpPermissionRecord 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 switchTitleResId = R.string.allow_media_routing_control 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 setModeByUid = true private val roleManager = context.getSystemService(RoleManager::class.java) override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { diff --git a/src/com/android/settings/spa/app/specialaccess/ModifySystemSettings.kt b/src/com/android/settings/spa/app/specialaccess/ModifySystemSettings.kt index 4ab7f52cc29..e5f65f5a4b7 100644 --- a/src/com/android/settings/spa/app/specialaccess/ModifySystemSettings.kt +++ b/src/com/android/settings/spa/app/specialaccess/ModifySystemSettings.kt @@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums import android.content.Context import com.android.settings.R 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.AppOpPermissionRecord 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 switchTitleResId = R.string.permit_write_settings 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 fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { diff --git a/src/com/android/settings/spa/app/specialaccess/PictureInPicture.kt b/src/com/android/settings/spa/app/specialaccess/PictureInPicture.kt index 7885b869b83..d767f737d21 100644 --- a/src/com/android/settings/spa/app/specialaccess/PictureInPicture.kt +++ b/src/com/android/settings/spa/app/specialaccess/PictureInPicture.kt @@ -17,7 +17,6 @@ package com.android.settings.spa.app.specialaccess import android.app.AppOpsManager -import android.app.AppOpsManager.OP_PICTURE_IN_PICTURE import android.content.Context import android.content.pm.ActivityInfo import android.content.pm.ApplicationInfo @@ -28,6 +27,7 @@ import android.util.Log import androidx.compose.runtime.Composable import com.android.settings.R 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.AppRecord import com.android.settingslib.spaprivileged.model.app.installed @@ -79,12 +79,7 @@ class PictureInPictureListModel(private val context: Context) : PictureInPictureRecord( app = app, isSupport = isSupport, - appOpsController = - AppOpsController( - context = context, - app = app, - op = OP_PICTURE_IN_PICTURE, - ), + appOpsController = AppOpsController(context = context, app = app, appOps = APP_OPS), ) override fun filter(userIdFlow: Flow, recordListFlow: Flow>) = @@ -131,6 +126,8 @@ class PictureInPictureListModel(private val context: Context) : companion object { private const val TAG = "PictureInPictureListModel" + private val APP_OPS = AppOps(AppOpsManager.OP_PICTURE_IN_PICTURE) + private fun PackageInfo.supportsPictureInPicture() = activities?.any(ActivityInfo::supportsPictureInPicture) ?: false diff --git a/src/com/android/settings/spa/app/specialaccess/TurnScreenOnApps.kt b/src/com/android/settings/spa/app/specialaccess/TurnScreenOnApps.kt index 262acb78d15..db9fe448b5a 100644 --- a/src/com/android/settings/spa/app/specialaccess/TurnScreenOnApps.kt +++ b/src/com/android/settings/spa/app/specialaccess/TurnScreenOnApps.kt @@ -20,8 +20,8 @@ import android.Manifest import android.app.AppOpsManager import android.app.settings.SettingsEnums import android.content.Context -import com.android.settings.R 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.AppOpPermissionRecord 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 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 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 setModeByUid = true override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) { super.setAllowed(record, newAllowed) diff --git a/src/com/android/settings/spa/app/specialaccess/UseFullScreenIntent.kt b/src/com/android/settings/spa/app/specialaccess/UseFullScreenIntent.kt index 514e480250c..cc41e63c779 100644 --- a/src/com/android/settings/spa/app/specialaccess/UseFullScreenIntent.kt +++ b/src/com/android/settings/spa/app/specialaccess/UseFullScreenIntent.kt @@ -20,6 +20,7 @@ import android.Manifest import android.app.AppOpsManager import android.content.Context 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.TogglePermissionAppListProvider @@ -32,7 +33,9 @@ class UseFullScreenIntentListModel(context: Context) : AppOpPermissionListModel( override val pageTitleResId = R.string.full_screen_intent_title override val switchTitleResId = R.string.permit_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 setModeByUid = true } diff --git a/src/com/android/settings/spa/app/specialaccess/WifiControlApps.kt b/src/com/android/settings/spa/app/specialaccess/WifiControlApps.kt index 50bb5c9b9f6..c160569b46a 100644 --- a/src/com/android/settings/spa/app/specialaccess/WifiControlApps.kt +++ b/src/com/android/settings/spa/app/specialaccess/WifiControlApps.kt @@ -21,6 +21,7 @@ import android.app.AppOpsManager import android.app.AppOpsManager.MODE_IGNORED import android.content.Context 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.PackageManagers 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 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 /** NETWORK_SETTINGS permission trumps CHANGE_WIFI_CONFIG. */ override val broaderPermission = Manifest.permission.NETWORK_SETTINGS override val permissionHasAppOpFlag = false - override val modeForNotAllowed = MODE_IGNORED } diff --git a/tests/spa_unit/src/com/android/settings/spa/app/WifiControlAppListModelTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/WifiControlAppListModelTest.kt index 537764afe7c..863a6e2e97b 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/WifiControlAppListModelTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/WifiControlAppListModelTest.kt @@ -269,7 +269,7 @@ class WifiControlAppListModelTest { private class FakeAppOpsController(private val fakeMode: Int) : IAppOpsController { var setAllowedCalledWith: Boolean? = null - override val mode = flowOf(fakeMode) + override val modeFlow = flowOf(fakeMode) override fun setAllowed(allowed: Boolean) { setAllowedCalledWith = allowed diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/AllFilesAccessTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/AllFilesAccessTest.kt index 4c65d90a627..bf48b841b88 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/AllFilesAccessTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/AllFilesAccessTest.kt @@ -22,6 +22,7 @@ import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.R +import com.android.settingslib.spaprivileged.model.app.AppOps import com.google.common.truth.Truth.assertThat import org.junit.Test import org.junit.runner.RunWith @@ -37,8 +38,12 @@ class AllFilesAccessTest { assertThat(listModel.pageTitleResId).isEqualTo(R.string.manage_external_storage_title) assertThat(listModel.switchTitleResId).isEqualTo(R.string.permit_manage_external_storage) 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.setModeByUid).isTrue() } } \ No newline at end of file diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksAppsTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksAppsTest.kt index 579c6c95508..dc56ddf856d 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksAppsTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksAppsTest.kt @@ -23,6 +23,7 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.common.truth.Truth.assertThat import com.android.settings.R +import com.android.settingslib.spaprivileged.model.app.AppOps import org.junit.Test import org.junit.runner.RunWith @@ -37,8 +38,12 @@ class LongBackgroundTasksAppsTest { assertThat(listModel.pageTitleResId).isEqualTo(R.string.long_background_tasks_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.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.setModeByUid).isTrue() } } \ No newline at end of file diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaManagementAppsTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaManagementAppsTest.kt index b901043f59f..70b4b48867b 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaManagementAppsTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaManagementAppsTest.kt @@ -22,6 +22,7 @@ import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.R +import com.android.settingslib.spaprivileged.model.app.AppOps import com.google.common.truth.Truth.assertThat import org.junit.Test import org.junit.runner.RunWith @@ -37,8 +38,12 @@ class MediaManagementAppsTest { assertThat(listModel.pageTitleResId).isEqualTo(R.string.media_management_apps_title) assertThat(listModel.switchTitleResId).isEqualTo(R.string.media_management_apps_toggle_label) 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.setModeByUid).isTrue() } } \ No newline at end of file diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaRoutingControlTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaRoutingControlTest.kt index 990ec5ce417..ec070fdde05 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaRoutingControlTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/MediaRoutingControlTest.kt @@ -29,6 +29,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.media.flags.Flags import com.android.settings.R 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.template.app.AppOpPermissionRecord 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.switchTitleResId).isEqualTo(R.string.allow_media_routing_control) 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.setModeByUid).isTrue() } @Test @@ -223,13 +228,13 @@ class MediaRoutingControlTest { private class FakeAppOpsController(fakeMode: Int) : IAppOpsController { - override val mode = MutableStateFlow(fakeMode) + override val modeFlow = MutableStateFlow(fakeMode) 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 { diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/PictureInPictureTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/PictureInPictureTest.kt index 42292478f56..6e41e92b1b0 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/PictureInPictureTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/PictureInPictureTest.kt @@ -27,6 +27,7 @@ import android.os.DeadSystemRuntimeException import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.R +import com.android.settingslib.spaprivileged.model.app.AppOps import com.android.settingslib.spaprivileged.model.app.AppOpsController import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.first @@ -179,7 +180,7 @@ class PictureInPictureTest { appOpsController = AppOpsController( context = context, app = PICTURE_IN_PICTURE_APP, - op = AppOpsManager.OP_PICTURE_IN_PICTURE, + appOps = AppOps(AppOpsManager.OP_PICTURE_IN_PICTURE), ), ) diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/TurnScreenOnAppsTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/TurnScreenOnAppsTest.kt index 9c6079d5eca..1b1204f31e8 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/TurnScreenOnAppsTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/TurnScreenOnAppsTest.kt @@ -20,6 +20,7 @@ import android.app.AppOpsManager import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.android.settingslib.spaprivileged.model.app.AppOps import com.google.common.truth.Truth.assertThat import org.junit.Test 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.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.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.setModeByUid).isTrue() } } \ No newline at end of file