Merge "Notify the dismiss callbacks when we finish transitioning to GONE." into main
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt
index d7e6bdb..4457f1d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt
@@ -23,10 +23,12 @@
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.keyguard.DismissCallbackRegistry
+import com.android.systemui.keyguard.KeyguardWmStateRefactor
 import com.android.systemui.keyguard.data.repository.KeyguardRepository
 import com.android.systemui.keyguard.data.repository.TrustRepository
 import com.android.systemui.keyguard.shared.model.DismissAction
 import com.android.systemui.keyguard.shared.model.KeyguardDone
+import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.power.domain.interactor.PowerInteractor
 import com.android.systemui.user.domain.interactor.SelectedUserInteractor
 import com.android.systemui.util.kotlin.Utils.Companion.toQuad
@@ -35,6 +37,7 @@
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.map
@@ -56,6 +59,7 @@
     trustRepository: TrustRepository,
     alternateBouncerInteractor: AlternateBouncerInteractor,
     powerInteractor: PowerInteractor,
+    keyguardTransitionInteractor: KeyguardTransitionInteractor,
 ) {
     /*
      * Updates when a biometric has authenticated the device and is requesting to dismiss
@@ -76,9 +80,9 @@
                     primaryBouncerInteractor.isShowing,
                     alternateBouncerInteractor.isVisible,
                     powerInteractor.isInteractive,
-                    ::Triple
+                    ::Triple,
                 ),
-                ::toQuad
+                ::toQuad,
             )
             .filter { (trustModel, primaryBouncerShowing, altBouncerShowing, interactive) ->
                 val bouncerShowing = primaryBouncerShowing || altBouncerShowing
@@ -144,9 +148,7 @@
      *
      * TODO(b/358412565): Support dismiss messages.
      */
-    fun dismissKeyguardWithCallback(
-        callback: IKeyguardDismissCallback?,
-    ) {
+    fun dismissKeyguardWithCallback(callback: IKeyguardDismissCallback?) {
         scope.launch {
             withContext(mainDispatcher) {
                 if (callback != null) {
@@ -163,4 +165,14 @@
             }
         }
     }
+
+    init {
+        if (KeyguardWmStateRefactor.isEnabled) {
+            scope.launch {
+                keyguardTransitionInteractor.currentKeyguardState
+                    .filter { it == KeyguardState.GONE }
+                    .collect { dismissCallbackRegistry.notifyDismissSucceeded() }
+            }
+        }
+    }
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorKosmos.kt
index ace1157..52416ba 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorKosmos.kt
@@ -41,5 +41,6 @@
             trustRepository = trustRepository,
             alternateBouncerInteractor = alternateBouncerInteractor,
             powerInteractor = powerInteractor,
+            keyguardTransitionInteractor = keyguardTransitionInteractor,
         )
     }