Loading packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +7 −1 Original line number Diff line number Diff line Loading @@ -338,7 +338,13 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks, @Override public void hideAuthenticationDialog() { if (DEBUG) Log.d(TAG, "hideAuthenticationDialog"); if (DEBUG) Log.d(TAG, "hideAuthenticationDialog: " + mCurrentDialog); if (mCurrentDialog == null) { // Could be possible if the caller canceled authentication after credential success // but before the client was notified. return; } mCurrentDialog.dismissFromSystemServer(); Loading packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java +18 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.hardware.biometrics.BiometricManager.Authenticators; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; import static junit.framework.TestCase.assertNotNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; Loading Loading @@ -291,6 +290,24 @@ public class AuthControllerTest extends SysuiTestCase { // Corner case tests @Test public void testCancelAuthentication_whenCredentialConfirmed_doesntCrash() throws Exception { // It's possible that before the client is notified that credential is confirmed, the client // requests to cancel authentication. // // Test that the following sequence of events does not crash SystemUI: // 1) Credential is confirmed // 2) Client cancels authentication showDialog(Authenticators.DEVICE_CREDENTIAL, BiometricPrompt.TYPE_NONE); verify(mDialog1).show(any(), any()); mAuthController.onDismissed(AuthDialogCallback.DISMISSED_CREDENTIAL_AUTHENTICATED); verify(mReceiver).onDialogDismissed(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED); mAuthController.hideAuthenticationDialog(); } @Test public void testShowNewDialog_beforeOldDialogDismissed_SkipsAnimations() { showDialog(Authenticators.BIOMETRIC_WEAK, BiometricPrompt.TYPE_FACE); Loading Loading
packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +7 −1 Original line number Diff line number Diff line Loading @@ -338,7 +338,13 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks, @Override public void hideAuthenticationDialog() { if (DEBUG) Log.d(TAG, "hideAuthenticationDialog"); if (DEBUG) Log.d(TAG, "hideAuthenticationDialog: " + mCurrentDialog); if (mCurrentDialog == null) { // Could be possible if the caller canceled authentication after credential success // but before the client was notified. return; } mCurrentDialog.dismissFromSystemServer(); Loading
packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java +18 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static android.hardware.biometrics.BiometricManager.Authenticators; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; import static junit.framework.TestCase.assertNotNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; Loading Loading @@ -291,6 +290,24 @@ public class AuthControllerTest extends SysuiTestCase { // Corner case tests @Test public void testCancelAuthentication_whenCredentialConfirmed_doesntCrash() throws Exception { // It's possible that before the client is notified that credential is confirmed, the client // requests to cancel authentication. // // Test that the following sequence of events does not crash SystemUI: // 1) Credential is confirmed // 2) Client cancels authentication showDialog(Authenticators.DEVICE_CREDENTIAL, BiometricPrompt.TYPE_NONE); verify(mDialog1).show(any(), any()); mAuthController.onDismissed(AuthDialogCallback.DISMISSED_CREDENTIAL_AUTHENTICATED); verify(mReceiver).onDialogDismissed(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED); mAuthController.hideAuthenticationDialog(); } @Test public void testShowNewDialog_beforeOldDialogDismissed_SkipsAnimations() { showDialog(Authenticators.BIOMETRIC_WEAK, BiometricPrompt.TYPE_FACE); Loading