Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 377db02c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Update light reveal + udfps icon vis" into sc-dev am: c4e370db

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14093565

Change-Id: I4d482d44c5566dc001d09e92d44941ab3aa88e39
parents a5d1fdc7 c4e370db
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;
    }

+1 −21
Original line number Diff line number Diff line
@@ -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<T extends UdfpsAnimationView>

    @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<T extends UdfpsAnimationView>
     * authentication.
     */
    boolean shouldPauseAuth() {
        return (mNotificationShadeExpanded && mStatusBarState != KEYGUARD)
                || mStatusBarState == SHADE_LOCKED
                || mStatusBarState == FULLSCREEN_USER_SWITCHER;
        return mNotificationShadeExpanded;
    }

    /**
@@ -188,13 +177,4 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView>
                    updatePauseAuth();
                }
            };

    private final StatusBarStateController.StateListener mStateListener =
            new StatusBarStateController.StateListener() {
                @Override
                public void onStateChanged(int newState) {
                    mStatusBarState = newState;
                    updatePauseAuth();
                }
            };
}
+7 −2
Original line number Diff line number Diff line
@@ -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
+9 −0
Original line number Diff line number Diff line
@@ -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.
     */
+39 −7
Original line number Diff line number Diff line
@@ -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<Ud
    @NonNull private final StatusBarKeyguardViewManager mKeyguardViewManager;
    @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @NonNull private final DelayableExecutor mExecutor;
    @NonNull private final KeyguardViewMediator mKeyguardViewMediator;

    @Nullable private Runnable mCancelRunnable;
    private boolean mShowBouncer;
    private boolean mQsExpanded;
    private boolean mFaceDetectRunning;
    private boolean mHintShown;
    private boolean mTransitioningFromHome;
    private int mStatusBarState;

    protected UdfpsKeyguardViewController(
            @NonNull UdfpsKeyguardView view,
@@ -59,11 +66,13 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
            @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager,
            @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor,
            @NonNull DelayableExecutor mainDelayableExecutor,
            @NonNull DumpManager dumpManager) {
            @NonNull DumpManager dumpManager,
            @NonNull KeyguardViewMediator keyguardViewMediator) {
        super(view, statusBarStateController, statusBar, dumpManager);
        mKeyguardViewManager = statusBarKeyguardViewManager;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mExecutor = mainDelayableExecutor;
        mKeyguardViewMediator = keyguardViewMediator;
    }

    @Override
@@ -94,6 +103,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        mStatusBarStateController.removeCallback(mStateListener);
        mAlternateAuthInterceptor.hideAlternateAuthBouncer();
        mKeyguardViewManager.setAlternateAuthInterceptor(null);
        mTransitioningFromHome = false;

        if (mCancelRunnable != null) {
            mCancelRunnable.run();
@@ -106,17 +116,18 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        super.dump(fd, pw, args);
        pw.println("mShowBouncer=" + mShowBouncer);
        pw.println("mFaceDetectRunning=" + mFaceDetectRunning);
        pw.println("mTransitioningFromHomeToKeyguard=" + mTransitioningFromHome);
    }

    /**
     * Overrides non-bouncer show logic in shouldPauseAuth to still auth.
     */
    private void showBouncer(boolean forceShow) {
        if (mShowBouncer == forceShow) {
    private void showBouncer(boolean show) {
        if (mShowBouncer == show) {
            return;
        }

        mShowBouncer = forceShow;
        mShowBouncer = show;
        updatePauseAuth();
        if (mShowBouncer) {
            mView.animateUdfpsBouncer();
@@ -128,18 +139,26 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
    /**
     * Returns true if the fingerprint manager is running but we want to temporarily pause
     * authentication. On the keyguard, we may want to show udfps when the shade
     * is expanded, so this can be overridden with the forceShow method.
     * is expanded, so this can be overridden with the showBouncer method.
     */
    public boolean shouldPauseAuth() {
        if (mShowBouncer) {
            return false;
        }

        if (mStatusBarState != KEYGUARD) {
            return true;
        }

        if (mTransitioningFromHome && mKeyguardViewMediator.isAnimatingScreenOff()) {
            return true;
        }

        if (mQsExpanded) {
            return true;
        }

        return super.shouldPauseAuth();
        return false;
    }

    private void cancelDelayedHint() {
@@ -176,12 +195,25 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
            new StatusBarStateController.StateListener() {
        @Override
        public void onDozeAmountChanged(float linear, float eased) {
            mView.onDozeAmountChanged(linear, eased);
            if (linear != 0) showBouncer(false);
            mView.onDozeAmountChanged(linear, eased);
            if (linear == 1f) {
                // transition has finished
                mTransitioningFromHome = false;
            }
            updatePauseAuth();
        }

        @Override
        public void onStatePreChange(int oldState, int newState) {
            mTransitioningFromHome = oldState == StatusBarState.SHADE
                    && newState == StatusBarState.KEYGUARD;
            updatePauseAuth();
        }

        @Override
        public void onStateChanged(int statusBarState) {
            mStatusBarState = statusBarState;
            mView.setStatusBarState(statusBarState);
        }
    };
Loading