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

Commit 2736f2ed authored by Mike Schneider's avatar Mike Schneider Committed by Automerger Merge Worker
Browse files

Do not play unstash animation when unlocking the device am: 94f46e14 am: 14db451c

parents 7409f027 14db451c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
        onLauncherResumedOrPaused(mLauncher.hasBeenResumed(), true /* fromInit */);

        onStashedInAppChanged(mLauncher.getDeviceProfile());
        mTaskbarLauncherStateController.onChangeScreenState(
        mTaskbarLauncherStateController.updateStateForSysuiFlags(
                mControllers.getSharedState().sysuiStateFlags, true /* fromInit */);
        mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
    }
@@ -319,8 +319,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
    }

    @Override
    public void onChangeScreenState(int screenState) {
        mTaskbarLauncherStateController.onChangeScreenState(screenState, false /* fromInit */);
    public void updateStateForSysuiFlags(int sysuiFlags, boolean skipAnim) {
        mTaskbarLauncherStateController.updateStateForSysuiFlags(sysuiFlags, skipAnim);
    }

    @Override
+1 −3
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import static com.android.launcher3.taskbar.TaskbarManager.FLAG_HIDE_NAVBAR_WIND
import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_STATE_MASK;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;

import android.animation.AnimatorSet;
@@ -592,8 +591,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
        mControllers.voiceInteractionWindowController.setIsVoiceInteractionWindowVisible(
                (systemUiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0, fromInit);

        mControllers.uiController.onChangeScreenState(
                systemUiStateFlags & SYSUI_STATE_SCREEN_STATE_MASK);
        mControllers.uiController.updateStateForSysuiFlags(systemUiStateFlags, fromInit);
    }

    /**
+6 −0
Original line number Diff line number Diff line
@@ -30,6 +30,12 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas
            | SYSUI_STATE_BACK_DISABLED | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED
            | SYSUI_STATE_SCREEN_STATE_MASK;

    // If any of these SysUi flags (via QuickstepContract) is set, the device to be considered
    // locked.
    public static final int MASK_ANY_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING
            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;

    private final TaskbarActivityContext mContext;
    private int mKeyguardSysuiFlags;
    private boolean mBouncerShowing;
+25 −9
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.launcher3.taskbar;

import static com.android.launcher3.taskbar.TaskbarKeyguardController.MASK_ANY_SYSUI_LOCKED;
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP;
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE;
import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_HOME;
@@ -92,6 +93,9 @@ public class TaskbarLauncherStateController {
     */
    private static final int FLAG_LAUNCHER_ACTIVE_AT_SCREEN_OFF = 1 << 4;

    /** Whether the device is currently locked. */
    private static final int FLAG_DEVICE_LOCKED = 1 << 5;

    private static final int FLAGS_LAUNCHER_ACTIVE = FLAG_RESUMED | FLAG_TRANSITION_TO_RESUMED;
    /** Equivalent to an int with all 1s for binary operation purposes */
    private static final int FLAGS_ALL = ~0;
@@ -259,18 +263,23 @@ public class TaskbarLauncherStateController {
        mShouldDelayLauncherStateAnim = shouldDelayLauncherStateAnim;
    }

    /** Screen state changed, see QuickStepContract.SCREEN_STATE_* values. */
    public void onChangeScreenState(int screenState, boolean fromInit) {
    /** SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values. */
    public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) {
        final boolean prevScreenIsOn = hasAnyFlag(FLAG_SCREEN_ON);
        final boolean currScreenIsOn = hasAnyFlag(screenState, SYSUI_STATE_SCREEN_ON);

        if (prevScreenIsOn == currScreenIsOn) return;
        final boolean currScreenIsOn = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_ON);

        updateStateForFlag(FLAG_SCREEN_ON, currScreenIsOn);
        if (prevScreenIsOn != currScreenIsOn) {
            // The screen is switching between on/off. When turning off, capture whether the
            // launcher is active and memoize this state.
            updateStateForFlag(FLAG_LAUNCHER_ACTIVE_AT_SCREEN_OFF,
                    prevScreenIsOn && hasAnyFlag(FLAGS_LAUNCHER_ACTIVE));
        }

        if (fromInit) {
        boolean isDeviceLocked = hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED);
        updateStateForFlag(FLAG_DEVICE_LOCKED, isDeviceLocked);

        if (skipAnim) {
            applyState(0);
        } else {
            applyState();
@@ -448,7 +457,13 @@ public class TaskbarLauncherStateController {
            animatorSet.play(mTaskbarCornerRoundness.animateToValue(cornerRoundness));
        }

        if (mIconAlignment.isAnimatingToValue(toAlignment)
        if (hasAnyFlag(changedFlags, FLAG_DEVICE_LOCKED)) {
            // When transitioning between locked/unlocked, there is no stashing animation.
            mIconAlignment.cancelAnimation();
            // updateValue ensures onIconAlignmentRatioChanged will be called if there is an actual
            // change in value
            mIconAlignment.updateValue(toAlignment);
        } else if (mIconAlignment.isAnimatingToValue(toAlignment)
                || mIconAlignment.isSettledOnValue(toAlignment)) {
            // Already at desired value, but make sure we run the callback at the end.
            animatorSet.addListener(AnimatorListeners.forEndCallback(
@@ -656,6 +671,7 @@ public class TaskbarLauncherStateController {
        appendFlag(result, flags, FLAG_SCREEN_ON, "screen_on");
        appendFlag(result, flags, FLAG_LAUNCHER_ACTIVE_AT_SCREEN_OFF,
                "launcher_active_at_screen_off");
        appendFlag(result, flags, FLAG_DEVICE_LOCKED, "device_locked");
        return result.toString();
    }

+19 −15
Original line number Diff line number Diff line
@@ -27,16 +27,14 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_SHOW;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_HIDE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_SHOW;
import static com.android.launcher3.taskbar.TaskbarKeyguardController.MASK_ANY_SYSUI_LOCKED;
import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -89,7 +87,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
    public static final int FLAG_IN_SETUP = 1 << 7; // In the Setup Wizard
    public static final int FLAG_STASHED_SMALL_SCREEN = 1 << 8; // phone screen gesture nav, stashed
    public static final int FLAG_STASHED_IN_APP_AUTO = 1 << 9; // Autohide (transient taskbar).
    public static final int FLAG_STASHED_SYSUI = 1 << 10; //  app pinning, keyguard, etc.
    public static final int FLAG_STASHED_SYSUI = 1 << 10; //  app pinning,...
    public static final int FLAG_STASHED_DEVICE_LOCKED = 1 << 11; // device is locked: keyguard, ...

    // If any of these flags are enabled, isInApp should return true.
    private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP;
@@ -110,6 +109,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
    private static final int FLAGS_REPORT_STASHED_INSETS_TO_APP = FLAGS_STASHED_IN_APP
            & ~FLAG_STASHED_IN_APP_IME & ~FLAG_STASHED_IN_TASKBAR_ALL_APPS;

    // If any of these flags are enabled, the taskbar must be stashed.
    private static final int FLAGS_FORCE_STASHED = FLAG_STASHED_SYSUI | FLAG_STASHED_DEVICE_LOCKED
            | FLAG_STASHED_IN_TASKBAR_ALL_APPS | FLAG_STASHED_SMALL_SCREEN;

    /**
     * How long to stash/unstash when manually invoked via long press.
     *
@@ -219,10 +222,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
                boolean inApp = hasAnyFlag(flags, FLAGS_IN_APP);
                boolean stashedInApp = hasAnyFlag(flags, FLAGS_STASHED_IN_APP);
                boolean stashedLauncherState = hasAnyFlag(flags, FLAG_IN_STASHED_LAUNCHER_STATE);
                boolean forceStashed = hasAnyFlag(flags,
                        FLAG_STASHED_SYSUI
                                | FLAG_STASHED_IN_TASKBAR_ALL_APPS
                                | FLAG_STASHED_SMALL_SCREEN);
                boolean forceStashed = hasAnyFlag(flags, FLAGS_FORCE_STASHED);
                return (inApp && stashedInApp) || (!inApp && stashedLauncherState) || forceStashed;
            });

@@ -584,8 +584,12 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba

        // If Hotseat is not the top element during animation to/from Launcher, fade in/out a
        // already stashed Taskbar.
        boolean skipStashAnimation = !mControllers.uiController.isHotseatIconOnTopWhenAligned()
                && hasAnyFlag(changedFlags, FLAG_IN_APP);
        boolean hotseatTopElement = mControllers.uiController.isHotseatIconOnTopWhenAligned()
                || !hasAnyFlag(changedFlags, FLAG_IN_APP);
        // If transitioning between locked/unlocked device, do not play a stash animation.
        boolean unLockedTransition = hasAnyFlag(changedFlags, FLAG_STASHED_DEVICE_LOCKED);
        boolean skipStashAnimation = !hotseatTopElement || unLockedTransition;

        if (isTransientTaskbar) {
            createTransientAnimToIsStashed(mAnimator, isStashed, duration, animateBg, changedFlags,
                    skipStashAnimation);
@@ -905,11 +909,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
        updateStateForFlag(FLAG_STASHED_IN_APP_SYSUI, hasAnyFlag(systemUiStateFlags,
                SYSUI_STATE_QUICK_SETTINGS_EXPANDED
                        | SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED));
        updateStateForFlag(FLAG_STASHED_SYSUI, hasAnyFlag(systemUiStateFlags,
                SYSUI_STATE_SCREEN_PINNING
                        | SYSUI_STATE_BOUNCER_SHOWING
                        | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
                        | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED));
        updateStateForFlag(FLAG_STASHED_SYSUI,
                hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING));
        updateStateForFlag(FLAG_STASHED_DEVICE_LOCKED,
                hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED));

        // Only update FLAG_STASHED_IN_APP_IME when system gesture is not in progress.
        mIsImeShowing = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_IME_SHOWING);
@@ -1081,6 +1084,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
        appendFlag(sj, flags, FLAG_IN_SETUP, "FLAG_IN_SETUP");
        appendFlag(sj, flags, FLAG_STASHED_IN_APP_AUTO, "FLAG_STASHED_IN_APP_AUTO");
        appendFlag(sj, flags, FLAG_STASHED_SYSUI, "FLAG_STASHED_SYSUI");
        appendFlag(sj, flags, FLAG_STASHED_DEVICE_LOCKED, "FLAG_STASHED_DEVICE_LOCKED");
        return sj.toString();
    }

Loading