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

Commit fbe69ea4 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Play padlock animation after solving challenge

The animation would start only when the keyguard starts to fade,
which is too late. Now it will play together with the PIN pad
dismissal

Test: solve challenge with and without bypass
Fixes: 139919454
Change-Id: I21fe60fced3ef3ff7bbe2314f52c13bd197b2839
parent a34d0b78
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -93,7 +93,6 @@ public class KeyguardBouncer {
    private int mBouncerPromptReason;
    private boolean mIsAnimatingAway;
    private boolean mIsScrimmed;
    private ViewGroup mLockIconContainer;

    public KeyguardBouncer(Context context, ViewMediatorCallback callback,
            LockPatternUtils lockPatternUtils, ViewGroup container,
@@ -190,10 +189,6 @@ public class KeyguardBouncer {
        return mIsScrimmed;
    }

    public ViewGroup getLockIconContainer() {
        return mRoot == null || mRoot.getVisibility() != View.VISIBLE ? null : mLockIconContainer;
    }

    /**
     * This method must be called at the end of the bouncer animation when
     * the translation is performed manually by the user, otherwise FalsingManager
@@ -374,11 +369,6 @@ public class KeyguardBouncer {

    private void showPrimarySecurityScreen() {
        mKeyguardView.showPrimarySecurityScreen();
        KeyguardSecurityView keyguardSecurityView = mKeyguardView.getCurrentSecurityView();
        if (keyguardSecurityView != null) {
            mLockIconContainer = ((ViewGroup) keyguardSecurityView)
                    .findViewById(R.id.lock_icon_container);
        }
    }

    /**
+16 −4
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
    private boolean mShowingLaunchAffordance;
    private boolean mKeyguardJustShown;
    private boolean mUpdatePending;
    private boolean mBouncerPreHideAnimation;

    private final KeyguardMonitor.Callback mKeyguardMonitorCallback =
            new KeyguardMonitor.Callback() {
@@ -125,11 +126,14 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange

                @Override
                public void onKeyguardFadingAwayChanged() {
                    if (!mKeyguardMonitor.isKeyguardFadingAway() && mBlockUpdates) {
                    if (!mKeyguardMonitor.isKeyguardFadingAway()) {
                        mBouncerPreHideAnimation = false;
                        if (mBlockUpdates) {
                            mBlockUpdates = false;
                            update(true /* force */);
                        }
                    }
                }
            };
    private final DockManager.DockEventListener mDockEventListener =
            new DockManager.DockEventListener() {
@@ -464,6 +468,14 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
        }
    }

    /**
     * Animate padlock opening when bouncer challenge is solved.
     */
    public void onBouncerPreHideAnimation() {
        mBouncerPreHideAnimation = true;
        update();
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({ERROR, UNLOCK, LOCK, SCANNING})
    @interface LockAnimIndex {}
@@ -511,7 +523,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange

    private int getState() {
        KeyguardUpdateMonitor updateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
        if ((mUnlockMethodCache.canSkipBouncer() || !mKeyguardShowing
        if ((mUnlockMethodCache.canSkipBouncer() || !mKeyguardShowing || mBouncerPreHideAnimation
                || mKeyguardMonitor.isKeyguardGoingAway()) && !mSimLocked) {
            return STATE_LOCK_OPEN;
        } else if (mTransientBiometricsError) {
+8 −0
Original line number Diff line number Diff line
@@ -4538,6 +4538,14 @@ public class StatusBar extends SystemUI implements DemoMode,
        return isBouncerShowing() && mStatusBarKeyguardViewManager.bouncerNeedsScrimming();
    }

    /**
     * When {@link KeyguardBouncer} starts to be dismissed, playing its animation.
     */
    public void onBouncerPreHideAnimation() {
        mNotificationPanel.onBouncerPreHideAnimation();
        mStatusBarWindow.onBouncerPreHideAnimation();
    }

    /**
     * @return a PackageManger for userId or if userId is < 0 (USER_ALL etc) then
     *         return PackageManager for mContext
+5 −4
Original line number Diff line number Diff line
@@ -279,14 +279,15 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
                        0 /* delay */);
            } else {
                final long duration;
                final int delay;
                if (needsBypassFading()) {
                    duration = KeyguardBypassController.BYPASS_PANEL_FADE_DURATION;
                    delay = 0;
                } else {
                    duration = AppearAnimationUtils.DEFAULT_APPEAR_DURATION / 2;
                    delay = 120;
                }
                CrossFadeHelper.fadeOut(mLockIconContainer,
                        duration /* duration */,
                        0 /* delay */, null /* runnable */);
                CrossFadeHelper.fadeOut(mLockIconContainer, duration, delay, null /* runnable */);
            }
        }
    }
@@ -516,7 +517,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
    public void startPreHideAnimation(Runnable finishRunnable) {
        if (mBouncer.isShowing()) {
            mBouncer.startPreHideAnimation(finishRunnable);
            mNotificationPanelView.onBouncerPreHideAnimation();
            mStatusBar.onBouncerPreHideAnimation();
        } else if (finishRunnable != null) {
            finishRunnable.run();
        }
+9 −0
Original line number Diff line number Diff line
@@ -527,6 +527,15 @@ public class StatusBarWindowView extends FrameLayout {
        }
    }

    /**
     * When {@link KeyguardBouncer} starts to be dismissed and starts to play its animation.
     */
    public void onBouncerPreHideAnimation() {
        if (mLockIcon != null) {
            mLockIcon.onBouncerPreHideAnimation();
        }
    }

    public class LayoutParams extends FrameLayout.LayoutParams {

        public boolean ignoreRightInset;