From 7d5bb558925ae1563365ac582a38959023e53e0d Mon Sep 17 00:00:00 2001 From: Beverly Date: Mon, 5 Apr 2021 11:36:57 -0400 Subject: [PATCH] Update light reveal + udfps icon vis When AOD is enabled/disabled, update visibility of the LightRevealScrim. When device is animating the screen off animation from Home => Keyguard, don't show the udfps icon. (Note, we still want to show the udfps icon on transitioning between LS <=> AOD). Move UdfpsKeyguard pauseAuth logic into UdfpsKeyguardViewController instead of abstract class UdfpsViewController. Test: manual Test: atest UdfpsKeyguardViewControllerTest Fixes: 182914128 Fixes: 184373073 Change-Id: Ic831e462d49a603bf214453e25b5bcbd925c5c3d --- .../biometrics/UdfpsAnimationView.java | 7 +- .../UdfpsAnimationViewController.java | 22 +------ .../systemui/biometrics/UdfpsController.java | 9 ++- .../biometrics/UdfpsKeyguardView.java | 9 +++ .../UdfpsKeyguardViewController.java | 46 +++++++++++-- .../systemui/statusbar/phone/StatusBar.java | 36 +++++++--- .../phone/dagger/StatusBarPhoneModule.java | 3 + .../biometrics/UdfpsControllerTest.java | 6 +- .../UdfpsKeyguardViewControllerTest.java | 65 +++++++++++++++---- .../statusbar/phone/StatusBarTest.java | 3 + 10 files changed, 150 insertions(+), 56 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java index 60fdbab8482ca..5647e43660752 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java @@ -32,9 +32,10 @@ import android.widget.FrameLayout; * - optionally can override dozeTimeTick to adjust views for burn-in mitigation */ abstract class UdfpsAnimationView extends FrameLayout { - + // mAlpha takes into consideration the status bar expansion amount to fade out icon when + // the status bar is expanded private int mAlpha; - private boolean mPauseAuth; + boolean mPauseAuth; public UdfpsAnimationView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -75,7 +76,7 @@ abstract class UdfpsAnimationView extends FrameLayout { getDrawable().setAlpha(calculateAlpha()); } - protected final int calculateAlpha() { + int calculateAlpha() { return mPauseAuth ? mAlpha : 255; } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java index 2f025f63034e3..f4993f46bf1db 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java @@ -16,10 +16,6 @@ package com.android.systemui.biometrics; -import static com.android.systemui.statusbar.StatusBarState.FULLSCREEN_USER_SWITCHER; -import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; -import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED; - import android.annotation.NonNull; import android.graphics.PointF; import android.graphics.RectF; @@ -68,18 +64,13 @@ abstract class UdfpsAnimationViewController @Override protected void onViewAttached() { - mStatusBarStateController.addCallback(mStateListener); - mStateListener.onStateChanged(mStatusBarStateController.getState()); mStatusBar.addExpansionChangedListener(mStatusBarExpansionChangedListener); - mDumpManger.registerDumpable(getDumpTag(), this); } @Override protected void onViewDetached() { - mStatusBarStateController.removeCallback(mStateListener); mStatusBar.removeExpansionChangedListener(mStatusBarExpansionChangedListener); - mDumpManger.unregisterDumpable(getDumpTag()); } @@ -106,9 +97,7 @@ abstract class UdfpsAnimationViewController * authentication. */ boolean shouldPauseAuth() { - return (mNotificationShadeExpanded && mStatusBarState != KEYGUARD) - || mStatusBarState == SHADE_LOCKED - || mStatusBarState == FULLSCREEN_USER_SWITCHER; + return mNotificationShadeExpanded; } /** @@ -188,13 +177,4 @@ abstract class UdfpsAnimationViewController updatePauseAuth(); } }; - - private final StatusBarStateController.StateListener mStateListener = - new StatusBarStateController.StateListener() { - @Override - public void onStateChanged(int newState) { - mStatusBarState = newState; - updatePauseAuth(); - } - }; } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index 7b5d7cb5a5253..2bdbf518e2037 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -52,6 +52,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.DozeReceiver; import com.android.systemui.dump.DumpManager; +import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; @@ -90,6 +91,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { @NonNull private final DumpManager mDumpManager; @NonNull private final AuthRippleController mAuthRippleController; @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; + @NonNull private final KeyguardViewMediator mKeyguardViewMediator; // Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple // sensors, this, in addition to a lot of the code here, will be updated. @VisibleForTesting final FingerprintSensorPropertiesInternal mSensorProps; @@ -310,7 +312,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull DumpManager dumpManager, @NonNull AuthRippleController authRippleController, - @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor) { + @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, + @NonNull KeyguardViewMediator keyguardViewMediator) { mContext = context; mInflater = inflater; // The fingerprint manager is queried for UDFPS before this class is constructed, so the @@ -324,6 +327,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { mDumpManager = dumpManager; mAuthRippleController = authRippleController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; + mKeyguardViewMediator = keyguardViewMediator; mSensorProps = findFirstUdfps(); // At least one UDFPS sensor exists @@ -491,7 +495,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { mKeyguardViewManager, mKeyguardUpdateMonitor, mFgExecutor, - mDumpManager + mDumpManager, + mKeyguardViewMediator ); case IUdfpsOverlayController.REASON_AUTH_BP: // note: empty controller, currently shows no visual affordance diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java index 4590182ac870f..fc906f2137f2b 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java @@ -97,6 +97,11 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } } + @Override + int calculateAlpha() { + return mPauseAuth ? 0 : 255; + } + void onDozeAmountChanged(float linear, float eased) { mFingerprintDrawable.onDozeAmountChanged(linear, eased); } @@ -153,6 +158,10 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { return mStatusBarState == StatusBarState.SHADE_LOCKED; } + boolean isHome() { + return mStatusBarState == StatusBarState.SHADE; + } + /** * Animates out the bg protection circle behind the fp icon to unhighlight the icon. */ diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java index 9d846fa54e5ba..dc0c685bf01ee 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java @@ -16,6 +16,8 @@ package com.android.systemui.biometrics; +import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; + import android.annotation.NonNull; import android.hardware.biometrics.BiometricSourceType; @@ -24,7 +26,9 @@ import androidx.annotation.Nullable; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.dump.DumpManager; +import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.util.concurrency.DelayableExecutor; @@ -45,12 +49,15 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController