Merge "Fix NPE crash when BP fallback to credentialUI and rotate" into 24D1-dev
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
index 9de71c1..94b1979 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
@@ -629,7 +629,7 @@
if (fpProp != null && fpProp.isAnyUdfpsType()) {
maybeUpdatePositionForUdfps(forceInvalidate /* invalidate */);
}
- if (faceProp != null && mBiometricView.isFaceOnly()) {
+ if (faceProp != null && mBiometricView != null && mBiometricView.isFaceOnly()) {
alwaysUpdatePositionAtScreenBottom(forceInvalidate /* invalidate */);
}
if (fpProp != null && fpProp.sensorType == TYPE_POWER_BUTTON) {
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 13bc8dd..b594f91 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
@@ -18,6 +18,7 @@
import android.app.ActivityTaskManager
import android.app.admin.DevicePolicyManager
import android.content.pm.PackageManager
+import android.content.res.Configuration
import android.hardware.biometrics.BiometricAuthenticator
import android.hardware.biometrics.BiometricConstants
import android.hardware.biometrics.BiometricManager
@@ -384,6 +385,33 @@
}
@Test
+ fun testAnimateToCredentialUI_rotateCredentialUI() {
+ val container = initializeFingerprintContainer(
+ authenticators = BiometricManager.Authenticators.BIOMETRIC_WEAK or
+ BiometricManager.Authenticators.DEVICE_CREDENTIAL
+ )
+ container.animateToCredentialUI(false)
+ waitForIdleSync()
+
+ assertThat(container.hasCredentialView()).isTrue()
+ assertThat(container.hasBiometricPrompt()).isFalse()
+
+ // Check credential view persists after new attachment
+ container.onAttachedToWindow()
+
+ assertThat(container.hasCredentialView()).isTrue()
+ assertThat(container.hasBiometricPrompt()).isFalse()
+
+ val configuration = Configuration(context.resources.configuration)
+ configuration.orientation = Configuration.ORIENTATION_LANDSCAPE
+ container.dispatchConfigurationChanged(configuration)
+ waitForIdleSync()
+
+ assertThat(container.hasCredentialView()).isTrue()
+ assertThat(container.hasBiometricPrompt()).isFalse()
+ }
+
+ @Test
fun testShowBiometricUI() {
val container = initializeFingerprintContainer()