Fix BP did not dismiss after swiping up the notification bar

AuthBiometricView doesn't use dismissWithoutCallback/dismissFromSystemServer
to close BP, so move disable operation to onDetachedFromWindow to avoid
AuthDialogPanelInteractionDetector work abnormally.

Bug: b/277841109
Test: atest AuthContainerTest
Change-Id: I1a699c7b8791fe0402f0d8da6bf6666385838e23
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
index e42f051..517f94f 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
@@ -637,6 +637,7 @@
 
     @Override
     public void onDetachedFromWindow() {
+        mPanelInteractionDetector.disable();
         OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher();
         if (dispatcher != null) {
             findOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mBackCallback);
@@ -674,7 +675,6 @@
 
     @Override
     public void dismissWithoutCallback(boolean animate) {
-        mPanelInteractionDetector.disable();
         if (animate) {
             animateAway(false /* sendReason */, 0 /* reason */);
         } else {
@@ -685,7 +685,6 @@
 
     @Override
     public void dismissFromSystemServer() {
-        mPanelInteractionDetector.disable();
         animateAway(false /* sendReason */, 0 /* reason */);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetector.kt b/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetector.kt
index 6c62a39..b72801d 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetector.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetector.kt
@@ -30,6 +30,7 @@
     @MainThread
     fun disable() {
         if (action != null) {
+            Log.i(TAG, "Disable dectector")
             action = null
             shadeExpansionStateManager.removeExpansionListener(this::onPanelExpansionChanged)
         }
@@ -40,7 +41,7 @@
         mainExecutor.execute {
             action?.let {
                 if (event.tracking || (event.expanded && event.fraction > 0)) {
-                    Log.v(TAG, "Detected panel interaction, event: $event")
+                    Log.i(TAG, "Detected panel interaction, event: $event")
                     it.onPanelInteraction.run()
                     disable()
                 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
index b4696e4..f914e75 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
@@ -170,24 +170,16 @@
     }
 
     @Test
-    fun testFocusLossAfterRotating() {
+    fun testActionCancel_panelInteractionDetectorDisable() {
         val container = initializeFingerprintContainer()
-        waitForIdleSync()
-
-        val requestID = authContainer?.requestId ?: 0L
-
-        verify(callback).onDialogAnimatedIn(requestID)
-        container.onOrientationChanged()
-        container.onWindowFocusChanged(false)
-        waitForIdleSync()
-
-        verify(callback, never()).onDismissed(
-                eq(AuthDialogCallback.DISMISSED_USER_CANCELED),
-                eq<ByteArray?>(null), /* credentialAttestation */
-                eq(requestID)
+        container.mBiometricCallback.onAction(
+                AuthBiometricView.Callback.ACTION_USER_CANCELED
         )
+        waitForIdleSync()
+        verify(panelInteractionDetector).disable()
     }
 
+
     @Test
     fun testActionAuthenticated_sendsDismissedAuthenticated() {
         val container = initializeFingerprintContainer()