Loading quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +7 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading quickstep/src/com/android/launcher3/taskbar/bubbles/stashing/BubbleStashController.kt +17 −2 Original line number Diff line number Diff line Loading @@ -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 Loading quickstep/src/com/android/launcher3/taskbar/bubbles/stashing/PersistentBubbleStashController.kt +12 −19 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) } Loading quickstep/src/com/android/launcher3/taskbar/bubbles/stashing/TransientBubbleStashController.kt +11 −20 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) } Loading quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/bubbles/stashing/PersistentBubbleStashControllerTest.kt +10 −9 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading @@ -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) Loading @@ -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 Loading Loading @@ -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 Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +7 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading
quickstep/src/com/android/launcher3/taskbar/bubbles/stashing/BubbleStashController.kt +17 −2 Original line number Diff line number Diff line Loading @@ -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 Loading
quickstep/src/com/android/launcher3/taskbar/bubbles/stashing/PersistentBubbleStashController.kt +12 −19 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) } Loading
quickstep/src/com/android/launcher3/taskbar/bubbles/stashing/TransientBubbleStashController.kt +11 −20 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) } Loading
quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/bubbles/stashing/PersistentBubbleStashControllerTest.kt +10 −9 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading @@ -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) Loading @@ -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 Loading Loading @@ -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