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

Commit 2aedf52b authored by Mady Mellor's avatar Mady Mellor Committed by Android (Google) Code Review
Browse files

Merge "If we're going to overview we might need to unstash" into main

parents 4acf6996 fd6772ab
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ import com.android.launcher3.anim.AnimatedFloat;
import com.android.launcher3.anim.AnimatorListeners;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.statemanager.StateManager;
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.BubbleLauncherState;
import com.android.launcher3.uioverrides.QuickstepLauncher;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
@@ -479,8 +480,12 @@ public class TaskbarLauncherStateController {
            boolean onOverview = mLauncherState == LauncherState.OVERVIEW;
            boolean hotseatIconsVisible = isInLauncher && mLauncherState.areElementsVisible(
                    mLauncher, HOTSEAT_ICONS);
            controllers.bubbleStashController.setBubblesShowingOnHome(hotseatIconsVisible);
            controllers.bubbleStashController.setBubblesShowingOnOverview(onOverview);
            BubbleLauncherState state = onOverview
                    ? BubbleLauncherState.OVERVIEW
                    : hotseatIconsVisible
                            ? BubbleLauncherState.HOME
                            : BubbleLauncherState.IN_APP;
            controllers.bubbleStashController.setLauncherState(state);
        });

        TaskbarStashController stashController = mControllers.taskbarStashController;
+17 −2
Original line number Diff line number Diff line
@@ -56,14 +56,29 @@ interface BubbleStashController {
        fun runAfterInit(action: Runnable)
    }

    /** Launcher states bubbles cares about */
    enum class BubbleLauncherState {
        /* When launcher is in overview */
        OVERVIEW,
        /* When launcher is on home */
        HOME,
        /* We're in an app */
        IN_APP,
    }

    /** The current launcher state */
    var launcherState: BubbleLauncherState

    /** Whether bubble bar is currently stashed */
    val isStashed: Boolean

    /** Whether launcher enters or exits the home page. */
    var isBubblesShowingOnHome: Boolean
    val isBubblesShowingOnHome: Boolean
        get() = launcherState == BubbleLauncherState.HOME

    /** Whether launcher enters or exits the overview page. */
    var isBubblesShowingOnOverview: Boolean
    val isBubblesShowingOnOverview: Boolean
        get() = launcherState == BubbleLauncherState.OVERVIEW

    /** Updated when sysui locked state changes, when locked, bubble bar is not shown. */
    var isSysuiLocked: Boolean
+12 −19
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.launcher3.anim.AnimatedFloat
import com.android.launcher3.taskbar.TaskbarInsetsController
import com.android.launcher3.taskbar.bubbles.BubbleBarViewController
import com.android.launcher3.taskbar.bubbles.BubbleStashedHandleViewController
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.BubbleLauncherState
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.Companion.BAR_STASH_DURATION
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.Companion.BAR_TRANSLATION_DURATION
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.ControllersAfterInitAction
@@ -45,29 +46,21 @@ class PersistentBubbleStashController(
    private lateinit var bubbleBarScaleAnimator: AnimatedFloat
    private lateinit var controllersAfterInitAction: ControllersAfterInitAction

    override var isBubblesShowingOnHome: Boolean = false
        set(onHome) {
            if (field == onHome) return
            field = onHome
    override var launcherState: BubbleLauncherState = BubbleLauncherState.IN_APP
        set(state) {
            if (field == state) return
            val transitionFromHome = field == BubbleLauncherState.HOME
            field = state
            if (!bubbleBarViewController.hasBubbles()) {
                // if there are no bubbles, there's nothing to show, so just return.
                return
            }
            if (onHome) {
                // When transition to home we should show collapse the bubble bar
            // If we're transitioning anywhere, bubble bar should be collapsed
            updateExpandedState(expand = false)
            }
            if (transitionFromHome || field == BubbleLauncherState.HOME) {
                // If we're transitioning to or from home, animate the Y because we're in hotseat
                // on home but in persistent taskbar elsewhere so the position is different.
                animateBubbleBarY()
            bubbleBarViewController.onBubbleBarConfigurationChanged(/* animate= */ true)
        }

    override var isBubblesShowingOnOverview: Boolean = false
        set(onOverview) {
            if (field == onOverview) return
            field = onOverview
            if (!onOverview) {
                // When transition from overview we should show collapse the bubble bar
                updateExpandedState(expand = false)
            }
            bubbleBarViewController.onBubbleBarConfigurationChanged(/* animate= */ true)
        }
+11 −20
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.launcher3.taskbar.TaskbarStashController.TASKBAR_STASH_ALPHA_
import com.android.launcher3.taskbar.TaskbarStashController.TRANSIENT_TASKBAR_STASH_ALPHA_DURATION
import com.android.launcher3.taskbar.bubbles.BubbleBarViewController
import com.android.launcher3.taskbar.bubbles.BubbleStashedHandleViewController
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.BubbleLauncherState
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.Companion.BAR_STASH_DURATION
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.Companion.BAR_TRANSLATION_DURATION
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.ControllersAfterInitAction
@@ -81,36 +82,26 @@ class TransientBubbleStashController(
    override var isStashed: Boolean = false
        @VisibleForTesting set

    override var isBubblesShowingOnHome: Boolean = false
        set(onHome) {
            if (field == onHome) return
            field = onHome
    override var launcherState: BubbleLauncherState = BubbleLauncherState.IN_APP
        set(state) {
            if (field == state) return
            field = state
            if (!bubbleBarViewController.hasBubbles()) {
                // if there are no bubbles, there's nothing to show, so just return.
                return
            }
            if (onHome) {
                updateStashedAndExpandedState(stash = false, expand = false)
                // When transitioning from app to home we need to animate the bubble bar
            if (field == BubbleLauncherState.HOME) {
                // When to home we need to animate the bubble bar
                // here to align with hotseat center.
                animateBubbleBarYToHotseat()
            } else if (!bubbleBarViewController.isExpanded) {
                updateStashedAndExpandedState(stash = true, expand = false)
            }
            bubbleBarViewController.onBubbleBarConfigurationChanged(/* animate= */ true)
        }

    override var isBubblesShowingOnOverview: Boolean = false
        set(onOverview) {
            if (field == onOverview) return
            field = onOverview
            if (onOverview) {
            } else if (field == BubbleLauncherState.OVERVIEW) {
                // When transitioning to overview we need to animate the bubble bar to align with
                // the taskbar bottom.
                animateBubbleBarYToTaskbar()
            } else {
                updateStashedAndExpandedState(stash = true, expand = false)
            }
            // Only stash if we're in an app, otherwise we're in home or overview where we should
            // be un-stashed
            updateStashedAndExpandedState(field == BubbleLauncherState.IN_APP, expand = false)
            bubbleBarViewController.onBubbleBarConfigurationChanged(/* animate= */ true)
        }

+10 −9
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.launcher3.anim.AnimatedFloat
import com.android.launcher3.taskbar.TaskbarInsetsController
import com.android.launcher3.taskbar.bubbles.BubbleBarView
import com.android.launcher3.taskbar.bubbles.BubbleBarViewController
import com.android.launcher3.taskbar.bubbles.stashing.BubbleStashController.BubbleLauncherState
import com.android.launcher3.util.MultiValueAlpha
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -85,12 +86,12 @@ class PersistentBubbleStashControllerTest {
    fun setBubblesShowingOnHomeUpdatedToFalse_barPositionYUpdated_controllersNotified() {
        // Given bubble bar is on home and has bubbles
        whenever(bubbleBarViewController.hasBubbles()).thenReturn(false)
        persistentTaskBarStashController.isBubblesShowingOnHome = true
        persistentTaskBarStashController.launcherState = BubbleLauncherState.HOME
        whenever(bubbleBarViewController.hasBubbles()).thenReturn(true)

        // When switch out of the home screen
        getInstrumentation().runOnMainSync {
            persistentTaskBarStashController.isBubblesShowingOnHome = false
            persistentTaskBarStashController.launcherState = BubbleLauncherState.IN_APP
        }

        // Then translation Y is animating and the bubble bar controller is notified
@@ -110,7 +111,7 @@ class PersistentBubbleStashControllerTest {

        // When switch to home screen
        getInstrumentation().runOnMainSync {
            persistentTaskBarStashController.isBubblesShowingOnHome = true
            persistentTaskBarStashController.launcherState = BubbleLauncherState.HOME
        }

        // Then translation Y is animating and the bubble bar controller is notified
@@ -127,11 +128,11 @@ class PersistentBubbleStashControllerTest {
    @Test
    fun setBubblesShowingOnOverviewUpdatedToFalse_controllersNotified() {
        // Given bubble bar is on overview
        persistentTaskBarStashController.isBubblesShowingOnOverview = true
        persistentTaskBarStashController.launcherState = BubbleLauncherState.OVERVIEW
        clearInvocations(bubbleBarViewController)

        // When switch out of the overview screen
        persistentTaskBarStashController.isBubblesShowingOnOverview = false
        persistentTaskBarStashController.launcherState = BubbleLauncherState.IN_APP

        // Then bubble bar controller is notified
        verify(bubbleBarViewController).onBubbleBarConfigurationChanged(/* animate= */ true)
@@ -140,7 +141,7 @@ class PersistentBubbleStashControllerTest {
    @Test
    fun setBubblesShowingOnOverviewUpdatedToTrue_controllersNotified() {
        // When switch to the overview screen
        persistentTaskBarStashController.isBubblesShowingOnOverview = true
        persistentTaskBarStashController.launcherState = BubbleLauncherState.OVERVIEW

        // Then bubble bar controller is notified
        verify(bubbleBarViewController).onBubbleBarConfigurationChanged(/* animate= */ true)
@@ -150,7 +151,7 @@ class PersistentBubbleStashControllerTest {
    fun isSysuiLockedSwitchedToFalseForOverview_unlockAnimationIsShown() {
        // Given screen is locked and bubble bar has bubbles
        persistentTaskBarStashController.isSysuiLocked = true
        persistentTaskBarStashController.isBubblesShowingOnOverview = true
        persistentTaskBarStashController.launcherState = BubbleLauncherState.OVERVIEW
        whenever(bubbleBarViewController.hasBubbles()).thenReturn(true)

        // When switch to the overview screen
@@ -211,14 +212,14 @@ class PersistentBubbleStashControllerTest {
    fun bubbleBarTranslationYForTaskbar() {
        // Give bubble bar is on home
        whenever(bubbleBarViewController.hasBubbles()).thenReturn(false)
        persistentTaskBarStashController.isBubblesShowingOnHome = true
        persistentTaskBarStashController.launcherState = BubbleLauncherState.HOME

        // Then bubbleBarTranslationY would be HOTSEAT_TRANSLATION_Y
        assertThat(persistentTaskBarStashController.bubbleBarTranslationY)
            .isEqualTo(HOTSEAT_TRANSLATION_Y)

        // Give bubble bar is not on home
        persistentTaskBarStashController.isBubblesShowingOnHome = false
        persistentTaskBarStashController.launcherState = BubbleLauncherState.IN_APP

        // Then bubbleBarTranslationY would be TASK_BAR_TRANSLATION_Y
        assertThat(persistentTaskBarStashController.bubbleBarTranslationY)
Loading