Migrate AppOps

Bug: 339846642
Test: manual - on Special app access
Change-Id: I988bdf85036478d8e6d87a3b5a1a46a35df38422
diff --git a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt
index 2b8d12d..b15675e 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 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 @@
             controller = AppOpsController(
                 context = context,
                 app = app,
-                op = AppOpsManager.OP_SCHEDULE_EXACT_ALARM,
-                setModeByUid = true,
+                appOps = APP_OPS,
             ),
         )
     }
@@ -136,6 +136,11 @@
     }
 
     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 d82045d..f6c08c0 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.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 @@
     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 26d7451..904f0af 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.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 @@
     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 3e9058f..cceb597 100644
--- a/src/com/android/settings/spa/app/specialaccess/InstallUnknownApps.kt
+++ b/src/com/android/settings/spa/app/specialaccess/InstallUnknownApps.kt
@@ -20,13 +20,13 @@
 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.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
@@ -61,12 +61,7 @@
     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(
@@ -91,6 +86,8 @@
     }
 
     companion object {
+        private val APP_OPS = AppOps(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES)
+
         private fun isChangeable(
             record: InstallUnknownAppsRecord,
             potentialPackageNames: Set<String>,
diff --git a/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt b/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt
index 3ba9b08..d897b52 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.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 @@
     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 3e3457c..ce6abbd 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.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 @@
     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 b9fb9b8..21b9400 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 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 @@
     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 4ab7f52..e5f65f5 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.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 @@
     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 7885b86..d767f73 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 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 @@
         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<Int>, recordListFlow: Flow<List<PictureInPictureRecord>>) =
@@ -131,6 +126,8 @@
     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 262acb7..db9fe44 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.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 @@
     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 514e480..cc41e63 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.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 @@
     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 50bb5c9..c160569 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.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 @@
     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 537764a..863a6e2 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 @@
 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 4c65d90..bf48b84 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 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 @@
         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 579c6c9..dc56ddf 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.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 @@
         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 b901043..70b4b48 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 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 @@
         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 990ec5ce..ec070fd 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 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 @@
         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 @@
 
     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 4229247..6e41e92 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 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 @@
         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 9c6079d..1b1204f 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.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 @@
         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