From cd7dcc5983e55e2e9ca3ac2d40d6c35cc2ea5b2f Mon Sep 17 00:00:00 2001 From: Chandru Date: Thu, 17 Nov 2022 12:08:47 +0000 Subject: Stop face auth if occluding app doesn't want face auth. Fixes: 259521464 Test: atest KeyguardUpdateMonitorTest Test: manually, 1. Enroll face auth (Bypass or non-bypass doesn't matter) 2. Lock the phone 3. Open bouncer to unlock (face auth lock out state doesn't matter). 4. Enter the pin/pattern/password to unlock 5. Camera protection ring should not grow in size, scanning animation should not show up. Change-Id: Ic35d8538a97bdab3ed22456f5055cbe20f1b56a1 --- .../com/android/keyguard/KeyguardUpdateMonitor.java | 4 ++-- .../android/keyguard/KeyguardUpdateMonitorTest.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index bba4e2c6a9ff..7ced45abc960 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -751,8 +751,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab */ public void requestFaceAuthOnOccludingApp(boolean request) { mOccludingAppRequestingFace = request; - updateFaceListeningState(BIOMETRIC_ACTION_UPDATE, - FACE_AUTH_TRIGGERED_OCCLUDING_APP_REQUESTED); + int action = mOccludingAppRequestingFace ? BIOMETRIC_ACTION_UPDATE : BIOMETRIC_ACTION_STOP; + updateFaceListeningState(action, FACE_AUTH_TRIGGERED_OCCLUDING_APP_REQUESTED); } /** diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java index 1cce472b7c73..c81bb3443700 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java @@ -1284,6 +1284,24 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { assertThat(mKeyguardUpdateMonitor.isFaceDetectionRunning()).isEqualTo(true); } + @Test + public void testRequestFaceAuthFromOccludingApp_whenInvoked_startsFaceAuth() { + mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(true); + + assertThat(mKeyguardUpdateMonitor.isFaceDetectionRunning()).isTrue(); + } + + @Test + public void testRequestFaceAuthFromOccludingApp_whenInvoked_stopsFaceAuth() { + mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(true); + + assertThat(mKeyguardUpdateMonitor.isFaceDetectionRunning()).isTrue(); + + mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false); + + assertThat(mKeyguardUpdateMonitor.isFaceDetectionRunning()).isFalse(); + } + @Test public void testRequireUnlockForNfc_Broadcast() { KeyguardUpdateMonitorCallback callback = mock(KeyguardUpdateMonitorCallback.class); -- cgit v1.2.3-59-g8ed1b