Fix the op mode dependency for the second toggle:

If OP_RECEIVE_SANDBOX_TRIGGER_AUDIO is toggled to deny,
OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA is set to deny and toggled.

If OP_RECEIVE_SANDBOX_TRIGGER_AUDIO is toggled to allow,
OP_RECEIVE_SANDBOXED_DETECTION_TRAINNING_DATA is unchanged.

Bug: 309677007
Test: presubmit
Change-Id: I83bbfdb71ad1aa0e29c55275948ec88fc7f83c6a
This commit is contained in:
Faye Yan
2024-01-17 22:44:42 +00:00
parent 17acb392bf
commit 78f99c6a67

View File

@@ -56,9 +56,12 @@ class VoiceActivationAppsListModel(context: Context) : AppOpPermissionListModel(
override val appOp = AppOpsManager.OP_RECEIVE_SANDBOX_TRIGGER_AUDIO
override val permission = Manifest.permission.RECEIVE_SANDBOX_TRIGGER_AUDIO
override val setModeByUid = true
private var receiveDetectionTrainingDataOpController:AppOpsController? = null
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {
super.setAllowed(record, newAllowed)
if (!newAllowed && receiveDetectionTrainingDataOpController != null) {
receiveDetectionTrainingDataOpController!!.setAllowed(false)
}
logPermissionChange(newAllowed)
}
@@ -79,20 +82,21 @@ class VoiceActivationAppsListModel(context: Context) : AppOpPermissionListModel(
isReceiveSandBoxTriggerAudioOpAllowed: () -> Boolean?
): ReceiveDetectionTrainingDataOpSwitchModel {
val context = LocalContext.current
val ReceiveDetectionTrainingDataOpController = remember {
receiveDetectionTrainingDataOpController = remember {
AppOpsController(
context = context,
app = record.app,
op = AppOpsManager.OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA,
)
}
val isReceiveDetectionTrainingDataOpAllowed = isReceiveDetectionTrainingDataOpAllowed(record, ReceiveDetectionTrainingDataOpController)
val isReceiveDetectionTrainingDataOpAllowed = isReceiveDetectionTrainingDataOpAllowed(record, receiveDetectionTrainingDataOpController!!)
return remember(record) {
ReceiveDetectionTrainingDataOpSwitchModel(
context,
record,
isReceiveSandBoxTriggerAudioOpAllowed,
ReceiveDetectionTrainingDataOpController,
receiveDetectionTrainingDataOpController!!,
isReceiveDetectionTrainingDataOpAllowed,
)
}.also { model -> LaunchedEffect(model, Dispatchers.Default) { model.initState() } }