diff --git a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt
index b15675e..2b8d12d 100644
--- a/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt
+++ b/src/com/android/settings/spa/app/specialaccess/AlarmsAndRemindersAppList.kt
@@ -28,7 +28,6 @@
 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
@@ -117,7 +116,8 @@
             controller = AppOpsController(
                 context = context,
                 app = app,
-                appOps = APP_OPS,
+                op = AppOpsManager.OP_SCHEDULE_EXACT_ALARM,
+                setModeByUid = true,
             ),
         )
     }
@@ -136,11 +136,6 @@
     }
 
     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 f6c08c0..d82045d 100644
--- a/src/com/android/settings/spa/app/specialaccess/AllFilesAccess.kt
+++ b/src/com/android/settings/spa/app/specialaccess/AllFilesAccess.kt
@@ -22,7 +22,6 @@
 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
@@ -36,11 +35,9 @@
     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 appOps = AppOps(
-        op = AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE,
-        setModeByUid = true,
-    )
+    override val appOp = AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE
     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 904f0af..26d7451 100644
--- a/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt
+++ b/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt
@@ -22,7 +22,6 @@
 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
@@ -36,7 +35,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 appOps = AppOps(AppOpsManager.OP_SYSTEM_ALERT_WINDOW)
+    override val appOp = 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 cceb597..3e9058f 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,7 +61,12 @@
     override fun transformItem(app: ApplicationInfo) =
         InstallUnknownAppsRecord(
             app = app,
-            appOpsController = AppOpsController(context = context, app = app, appOps = APP_OPS),
+            appOpsController =
+                AppOpsController(
+                    context = context,
+                    app = app,
+                    op = OP_REQUEST_INSTALL_PACKAGES,
+                ),
         )
 
     override fun filter(
@@ -86,8 +91,6 @@
     }
 
     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 d897b52..3ba9b08 100644
--- a/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt
+++ b/src/com/android/settings/spa/app/specialaccess/LongBackgroundTasksApps.kt
@@ -22,7 +22,6 @@
 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
@@ -36,11 +35,9 @@
     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 appOps = AppOps(
-        op = AppOpsManager.OP_RUN_USER_INITIATED_JOBS,
-        setModeByUid = true,
-    )
+    override val appOp = AppOpsManager.OP_RUN_USER_INITIATED_JOBS
     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 ce6abbd..3e3457c 100644
--- a/src/com/android/settings/spa/app/specialaccess/MediaManagementApps.kt
+++ b/src/com/android/settings/spa/app/specialaccess/MediaManagementApps.kt
@@ -22,7 +22,6 @@
 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
@@ -36,11 +35,9 @@
     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 appOps = AppOps(
-        op = AppOpsManager.OP_MANAGE_MEDIA,
-        setModeByUid = true,
-    )
+    override val appOp = AppOpsManager.OP_MANAGE_MEDIA
     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 21b9400..b9fb9b8 100644
--- a/src/com/android/settings/spa/app/specialaccess/MediaRoutingControl.kt
+++ b/src/com/android/settings/spa/app/specialaccess/MediaRoutingControl.kt
@@ -25,7 +25,6 @@
 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
@@ -39,11 +38,9 @@
     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 appOps = AppOps(
-        op = AppOpsManager.OP_MEDIA_ROUTING_CONTROL,
-        setModeByUid = true,
-    )
+    override val appOp = AppOpsManager.OP_MEDIA_ROUTING_CONTROL
     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 e5f65f5..4ab7f52 100644
--- a/src/com/android/settings/spa/app/specialaccess/ModifySystemSettings.kt
+++ b/src/com/android/settings/spa/app/specialaccess/ModifySystemSettings.kt
@@ -22,7 +22,6 @@
 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
@@ -36,7 +35,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 appOps = AppOps(AppOpsManager.OP_WRITE_SETTINGS)
+    override val appOp = 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 d767f73..7885b86 100644
--- a/src/com/android/settings/spa/app/specialaccess/PictureInPicture.kt
+++ b/src/com/android/settings/spa/app/specialaccess/PictureInPicture.kt
@@ -17,6 +17,7 @@
 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
@@ -27,7 +28,6 @@
 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,7 +79,12 @@
         PictureInPictureRecord(
             app = app,
             isSupport = isSupport,
-            appOpsController = AppOpsController(context = context, app = app, appOps = APP_OPS),
+            appOpsController =
+                AppOpsController(
+                    context = context,
+                    app = app,
+                    op = OP_PICTURE_IN_PICTURE,
+                ),
         )
 
     override fun filter(userIdFlow: Flow<Int>, recordListFlow: Flow<List<PictureInPictureRecord>>) =
@@ -126,8 +131,6 @@
     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 db9fe44..262acb7 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,11 +35,9 @@
     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 appOps = AppOps(
-        op = AppOpsManager.OP_TURN_SCREEN_ON,
-        setModeByUid = true,
-    )
+    override val appOp = AppOpsManager.OP_TURN_SCREEN_ON
     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 cc41e63..514e480 100644
--- a/src/com/android/settings/spa/app/specialaccess/UseFullScreenIntent.kt
+++ b/src/com/android/settings/spa/app/specialaccess/UseFullScreenIntent.kt
@@ -20,7 +20,6 @@
 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
 
@@ -33,9 +32,7 @@
     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 appOps = AppOps(
-        op = AppOpsManager.OP_USE_FULL_SCREEN_INTENT,
-        setModeByUid = true,
-    )
+    override val appOp = AppOpsManager.OP_USE_FULL_SCREEN_INTENT
     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 c160569..50bb5c9 100644
--- a/src/com/android/settings/spa/app/specialaccess/WifiControlApps.kt
+++ b/src/com/android/settings/spa/app/specialaccess/WifiControlApps.kt
@@ -21,7 +21,6 @@
 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
@@ -40,13 +39,11 @@
     override val switchTitleResId = R.string.change_wifi_state_app_detail_switch
     override val footerResId = R.string.change_wifi_state_app_detail_summary
 
-    override val appOps = AppOps(
-        op = AppOpsManager.OP_CHANGE_WIFI_STATE,
-        modeForNotAllowed = MODE_IGNORED,
-    )
+    override val appOp = AppOpsManager.OP_CHANGE_WIFI_STATE
     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 863a6e2..537764a 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 modeFlow = flowOf(fakeMode)
+    override val mode = 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 bf48b84..4c65d90 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,7 +22,6 @@
 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
@@ -38,12 +37,8 @@
         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.appOps).isEqualTo(
-            AppOps(
-                op = AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE,
-                setModeByUid = true,
-            )
-        )
+        assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE)
         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 dc56ddf..579c6c9 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,7 +23,6 @@
 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
 
@@ -38,12 +37,8 @@
         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.appOps).isEqualTo(
-            AppOps(
-                op = AppOpsManager.OP_RUN_USER_INITIATED_JOBS,
-                setModeByUid = true,
-            )
-        )
+        assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_RUN_USER_INITIATED_JOBS)
         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 70b4b48..b901043 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,7 +22,6 @@
 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
@@ -38,12 +37,8 @@
         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.appOps).isEqualTo(
-            AppOps(
-                op = AppOpsManager.OP_MANAGE_MEDIA,
-                setModeByUid = true,
-            )
-        )
+        assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_MANAGE_MEDIA)
         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 ec070fd..990ec5ce 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,7 +29,6 @@
 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
@@ -75,13 +74,9 @@
         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.appOps).isEqualTo(
-            AppOps(
-                op = AppOpsManager.OP_MEDIA_ROUTING_CONTROL,
-                setModeByUid = true,
-            )
-        )
+        assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_MEDIA_ROUTING_CONTROL)
         assertThat(listModel.permission).isEqualTo(Manifest.permission.MEDIA_ROUTING_CONTROL)
+        assertThat(listModel.setModeByUid).isTrue()
     }
 
     @Test
@@ -228,13 +223,13 @@
 
     private class FakeAppOpsController(fakeMode: Int) : IAppOpsController {
 
-        override val modeFlow = MutableStateFlow(fakeMode)
+        override val mode = MutableStateFlow(fakeMode)
 
         override fun setAllowed(allowed: Boolean) {
-            modeFlow.value = if (allowed) AppOpsManager.MODE_ALLOWED else AppOpsManager.MODE_ERRORED
+            mode.value = if (allowed) AppOpsManager.MODE_ALLOWED else AppOpsManager.MODE_ERRORED
         }
 
-        override fun getMode(): Int = modeFlow.value
+        override fun getMode(): Int = mode.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 6e41e92..4229247 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,7 +27,6 @@
 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
@@ -180,7 +179,7 @@
         appOpsController = AppOpsController(
             context = context,
             app = PICTURE_IN_PICTURE_APP,
-            appOps = AppOps(AppOpsManager.OP_PICTURE_IN_PICTURE),
+            op = 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 1b1204f..9c6079d 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,7 +20,6 @@
 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
@@ -36,12 +35,8 @@
         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.appOps).isEqualTo(
-            AppOps(
-                op = AppOpsManager.OP_TURN_SCREEN_ON,
-                setModeByUid = true,
-            )
-        )
+        assertThat(listModel.appOp).isEqualTo(AppOpsManager.OP_TURN_SCREEN_ON)
         assertThat(listModel.permission).isEqualTo(Manifest.permission.TURN_SCREEN_ON)
+        assertThat(listModel.setModeByUid).isTrue()
     }
 }
\ No newline at end of file
