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

Commit 6cd207ed authored by Selim Cinek's avatar Selim Cinek
Browse files

Disappearing UDFPS view when dragging down on lockscreen

Previously we didn't fade out the Fingerprint icon, it
now does

Fixes: 190580853
Test: drag down on lockscreen with udpfs, observe icon fading out
Change-Id: I45569ce25be4fcf66113580663cc77fadd4ac121
parent adc3f0b6
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -67,6 +67,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.concurrency.DelayableExecutor;
@@ -111,6 +112,7 @@ public class UdfpsController implements DozeReceiver {
    @NonNull private final FalsingManager mFalsingManager;
    @NonNull private final FalsingManager mFalsingManager;
    @NonNull private final PowerManager mPowerManager;
    @NonNull private final PowerManager mPowerManager;
    @NonNull private final AccessibilityManager mAccessibilityManager;
    @NonNull private final AccessibilityManager mAccessibilityManager;
    @NonNull private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    @Nullable private final UdfpsHbmProvider mHbmProvider;
    @Nullable private final UdfpsHbmProvider mHbmProvider;
    // Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple
    // 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.
    // sensors, this, in addition to a lot of the code here, will be updated.
@@ -503,6 +505,7 @@ public class UdfpsController implements DozeReceiver {
            @NonNull FalsingManager falsingManager,
            @NonNull FalsingManager falsingManager,
            @NonNull PowerManager powerManager,
            @NonNull PowerManager powerManager,
            @NonNull AccessibilityManager accessibilityManager,
            @NonNull AccessibilityManager accessibilityManager,
            @NonNull LockscreenShadeTransitionController lockscreenShadeTransitionController,
            @NonNull ScreenLifecycle screenLifecycle,
            @NonNull ScreenLifecycle screenLifecycle,
            @Nullable Vibrator vibrator,
            @Nullable Vibrator vibrator,
            @NonNull Optional<UdfpsHbmProvider> hbmProvider) {
            @NonNull Optional<UdfpsHbmProvider> hbmProvider) {
@@ -525,6 +528,7 @@ public class UdfpsController implements DozeReceiver {
        mFalsingManager = falsingManager;
        mFalsingManager = falsingManager;
        mPowerManager = powerManager;
        mPowerManager = powerManager;
        mAccessibilityManager = accessibilityManager;
        mAccessibilityManager = accessibilityManager;
        mLockscreenShadeTransitionController = lockscreenShadeTransitionController;
        mHbmProvider = hbmProvider.orElse(null);
        mHbmProvider = hbmProvider.orElse(null);
        screenLifecycle.addObserver(mScreenObserver);
        screenLifecycle.addObserver(mScreenObserver);
        mScreenOn = screenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_ON;
        mScreenOn = screenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_ON;
@@ -712,6 +716,7 @@ public class UdfpsController implements DozeReceiver {
                        mFgExecutor,
                        mFgExecutor,
                        mDumpManager,
                        mDumpManager,
                        mKeyguardViewMediator,
                        mKeyguardViewMediator,
                        mLockscreenShadeTransitionController,
                        this
                        this
                );
                );
            case IUdfpsOverlayController.REASON_AUTH_BP:
            case IUdfpsOverlayController.REASON_AUTH_BP:
+19 −0
Original line number Original line Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.R;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.KeyguardBouncer;
import com.android.systemui.statusbar.phone.KeyguardBouncer;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
@@ -54,6 +55,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
    @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @NonNull private final DelayableExecutor mExecutor;
    @NonNull private final DelayableExecutor mExecutor;
    @NonNull private final KeyguardViewMediator mKeyguardViewMediator;
    @NonNull private final KeyguardViewMediator mKeyguardViewMediator;
    @NonNull private final LockscreenShadeTransitionController mLockScreenShadeTransitionController;
    @NonNull private final UdfpsController mUdfpsController;
    @NonNull private final UdfpsController mUdfpsController;


    @Nullable private Runnable mCancelDelayedHintRunnable;
    @Nullable private Runnable mCancelDelayedHintRunnable;
@@ -63,6 +65,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
    private boolean mFaceDetectRunning;
    private boolean mFaceDetectRunning;
    private boolean mHintShown;
    private boolean mHintShown;
    private int mStatusBarState;
    private int mStatusBarState;
    private float mTransitionToFullShadeProgress;


    /**
    /**
     * hidden amount of pin/pattern/password bouncer
     * hidden amount of pin/pattern/password bouncer
@@ -81,12 +84,14 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
            @NonNull DelayableExecutor mainDelayableExecutor,
            @NonNull DelayableExecutor mainDelayableExecutor,
            @NonNull DumpManager dumpManager,
            @NonNull DumpManager dumpManager,
            @NonNull KeyguardViewMediator keyguardViewMediator,
            @NonNull KeyguardViewMediator keyguardViewMediator,
            @NonNull LockscreenShadeTransitionController transitionController,
            @NonNull UdfpsController udfpsController) {
            @NonNull UdfpsController udfpsController) {
        super(view, statusBarStateController, statusBar, dumpManager);
        super(view, statusBarStateController, statusBar, dumpManager);
        mKeyguardViewManager = statusBarKeyguardViewManager;
        mKeyguardViewManager = statusBarKeyguardViewManager;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mExecutor = mainDelayableExecutor;
        mExecutor = mainDelayableExecutor;
        mKeyguardViewMediator = keyguardViewMediator;
        mKeyguardViewMediator = keyguardViewMediator;
        mLockScreenShadeTransitionController = transitionController;
        mUdfpsController = udfpsController;
        mUdfpsController = udfpsController;
    }
    }


@@ -116,6 +121,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        updatePauseAuth();
        updatePauseAuth();


        mKeyguardViewManager.setAlternateAuthInterceptor(mAlternateAuthInterceptor);
        mKeyguardViewManager.setAlternateAuthInterceptor(mAlternateAuthInterceptor);
        mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(this);
    }
    }


    @Override
    @Override
@@ -127,6 +133,9 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        mStatusBarStateController.removeCallback(mStateListener);
        mStatusBarStateController.removeCallback(mStateListener);
        mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor);
        mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor);
        mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
        mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
        if (mLockScreenShadeTransitionController.getUdfpsKeyguardViewController() == this) {
            mLockScreenShadeTransitionController.setUdfpsKeyguardViewController(null);
        }


        if (mCancelDelayedHintRunnable != null) {
        if (mCancelDelayedHintRunnable != null) {
            mCancelDelayedHintRunnable.run();
            mCancelDelayedHintRunnable.run();
@@ -256,11 +265,21 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
        }
        }
    }
    }


    /**
     * Set the progress we're currently transitioning to the full shade. 0.0f means we're not
     * transitioning yet, while 1.0f means we've fully dragged down.
     */
    public void setTransitionToFullShadeProgress(float progress) {
        mTransitionToFullShadeProgress = progress;
        updateAlpha();
    }

    private void updateAlpha() {
    private void updateAlpha() {
        // fade icon on transition to showing bouncer
        // fade icon on transition to showing bouncer
        int alpha = mShowingUdfpsBouncer ? 255
        int alpha = mShowingUdfpsBouncer ? 255
                : Math.abs((int) MathUtils.constrainedMap(0f, 255f, .4f, .7f,
                : Math.abs((int) MathUtils.constrainedMap(0f, 255f, .4f, .7f,
                        mInputBouncerHiddenAmount));
                        mInputBouncerHiddenAmount));
        alpha *= (1.0f - mTransitionToFullShadeProgress);
        mView.setUnpausedAlpha(alpha);
        mView.setUnpausedAlpha(alpha);
    }
    }


+7 −0
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ import com.android.systemui.ExpandHelper
import com.android.systemui.Gefingerpoken
import com.android.systemui.Gefingerpoken
import com.android.systemui.R
import com.android.systemui.R
import com.android.systemui.animation.Interpolators
import com.android.systemui.animation.Interpolators
import com.android.systemui.biometrics.UdfpsKeyguardViewController
import com.android.systemui.classifier.Classifier
import com.android.systemui.classifier.Classifier
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
@@ -108,6 +109,11 @@ class LockscreenShadeTransitionController @Inject constructor(
     */
     */
    private var nextHideKeyguardNeedsNoAnimation = false
    private var nextHideKeyguardNeedsNoAnimation = false


    /**
     * The udfpsKeyguardViewController if it exists.
     */
    var udfpsKeyguardViewController: UdfpsKeyguardViewController? = null

    /**
    /**
     * The touch helper responsible for the drag down animation.
     * The touch helper responsible for the drag down animation.
     */
     */
@@ -291,6 +297,7 @@ class LockscreenShadeTransitionController @Inject constructor(
                    // Fade out all content only visible on the lockscreen
                    // Fade out all content only visible on the lockscreen
                    notificationPanelController.setKeyguardOnlyContentAlpha(1.0f - scrimProgress)
                    notificationPanelController.setKeyguardOnlyContentAlpha(1.0f - scrimProgress)
                    depthController.transitionToFullShadeProgress = scrimProgress
                    depthController.transitionToFullShadeProgress = scrimProgress
                    udfpsKeyguardViewController?.setTransitionToFullShadeProgress(scrimProgress)
                }
                }
            }
            }
        }
        }
+4 −0
Original line number Original line Diff line number Diff line
@@ -53,6 +53,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.concurrency.FakeExecutor;
@@ -117,6 +118,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
    @Mock
    @Mock
    private AccessibilityManager mAccessibilityManager;
    private AccessibilityManager mAccessibilityManager;
    @Mock
    @Mock
    private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    @Mock
    private ScreenLifecycle mScreenLifecycle;
    private ScreenLifecycle mScreenLifecycle;
    @Mock
    @Mock
    private Vibrator mVibrator;
    private Vibrator mVibrator;
@@ -176,6 +179,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
                mFalsingManager,
                mFalsingManager,
                mPowerManager,
                mPowerManager,
                mAccessibilityManager,
                mAccessibilityManager,
                mLockscreenShadeTransitionController,
                mScreenLifecycle,
                mScreenLifecycle,
                mVibrator,
                mVibrator,
                Optional.of(mHbmProvider));
                Optional.of(mHbmProvider));
+4 −0
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
@@ -65,6 +66,8 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
    @Mock
    @Mock
    private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
    private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
    @Mock
    @Mock
    private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    @Mock
    private DumpManager mDumpManager;
    private DumpManager mDumpManager;
    @Mock
    @Mock
    private DelayableExecutor mExecutor;
    private DelayableExecutor mExecutor;
@@ -106,6 +109,7 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
                mExecutor,
                mExecutor,
                mDumpManager,
                mDumpManager,
                mKeyguardViewMediator,
                mKeyguardViewMediator,
                mLockscreenShadeTransitionController,
                mUdfpsController);
                mUdfpsController);
    }
    }