Merge "Show alt bouncer if needed when dismissing keyguard w/ callback." 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 2d7da38..0a4022a 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
@@ -16,6 +16,7 @@
 
 package com.android.systemui.keyguard.domain.interactor
 
+import com.android.app.tracing.coroutines.launchTraced as launch
 import com.android.internal.policy.IKeyguardDismissCallback
 import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
 import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
@@ -39,7 +40,6 @@
 import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.merge
-import com.android.app.tracing.coroutines.launchTraced as launch
 import kotlinx.coroutines.withContext
 
 /** Encapsulates business logic for requesting the keyguard to dismiss/finish/done. */
@@ -53,8 +53,8 @@
     private val primaryBouncerInteractor: PrimaryBouncerInteractor,
     private val selectedUserInteractor: SelectedUserInteractor,
     private val dismissCallbackRegistry: DismissCallbackRegistry,
+    private val alternateBouncerInteractor: AlternateBouncerInteractor,
     trustRepository: TrustRepository,
-    alternateBouncerInteractor: AlternateBouncerInteractor,
     powerInteractor: PowerInteractor,
 ) {
     /*
@@ -151,13 +151,16 @@
                     dismissCallbackRegistry.addCallback(callback)
                 }
 
-                // This will either show the bouncer, or dismiss the keyguard if insecure.
-                // We currently need to request showing the primary bouncer in order to start a
-                // transition to PRIMARY_BOUNCER. Once we refactor that so that starting the
-                // transition is what causes the bouncer to show, we can remove this entire method,
-                // and simply ask KeyguardTransitionInteractor to transition to a bouncer state or
-                // dismiss keyguard.
-                primaryBouncerInteractor.show(true)
+                // This will either show the bouncer, or dismiss the keyguard if insecure. We
+                // currently need to request showing the bouncer in order to start a transition to
+                // *_BOUNCER. Once we refactor that so that starting the transition is what causes
+                // the bouncer to show, we can remove this entire method, and simply call
+                // KeyguardDismissTransitionInteractor#startDismissKeyguardTransition.
+                if (alternateBouncerInteractor.canShowAlternateBouncer.value) {
+                    alternateBouncerInteractor.forceShow()
+                } else {
+                    primaryBouncerInteractor.show(true)
+                }
             }
         }
     }
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..339210c 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
@@ -38,8 +38,8 @@
             primaryBouncerInteractor = primaryBouncerInteractor,
             selectedUserInteractor = selectedUserInteractor,
             dismissCallbackRegistry = dismissCallbackRegistry,
-            trustRepository = trustRepository,
             alternateBouncerInteractor = alternateBouncerInteractor,
+            trustRepository = trustRepository,
             powerInteractor = powerInteractor,
         )
     }