Commit Graph

24 Commits

Author SHA1 Message Date
mpodolian 810bfb755d Only update handle alpha on system UI flag update.
Added logic to check if handle view alpha should be updated during SysUi
flag updates.

Fixes: 417125892
Test: Manual. Create a new bubble on the home screen, observe the stash
handle is not visible.
Have stashed bubble bar and multiple system languages.
Go to settings (or ane other apps that has input fields). Click on
search to trigger keyboard pop up. Observe that stash handle is hidden.
Collapse the keyboard and observe that stash handle is shown again.
Flag: EXEMPT bug-fix

Change-Id: I0976f37ca24ba816ee5eed6d4f1b4e6999b54c29
2025-05-12 11:26:42 -07:00
mpodolian e877d5f2a7 Hide bubble bar stash handle on the keyboard open.
Added SYSUI_STATE_IME_VISIBLE flag to MASK_HIDE_HANDLE_VIEW to hide the
bubble bar stash handle view. Also update alpha to 1 for the stash
handle view when visibility is updated to VISIBLE.

Fixes: 403363673
Flag: com.android.wm.shell.enable_bubble_bar
Test: Manual. Have stashed bubble bar and multiple system languages.
Go to settings (or ane other apps that has input fields). Click on
search to trigger keyboard pop up. Observe that stash handle is hidden.
Collapse the keyboard and observe that stash handle is shown again.

Change-Id: I5c8518cf02cc784243f9f55a95022279b2608760
2025-05-07 12:22:52 -07:00
Ats Jenk f46ebe0378 Control stash handle visibility directly
Stash handle alpha animator was set to control the visibility of the
view. This caused issues with the state as sometimes the alpha animation
conflicted with the state of the bubble bar. And caused the handle to be
visible when the bubble bar (or handle) should not be.

Remove the ability for the handle alpha animator to manage the
visibility. We already have logic in place to ensure that the stash
handle is visible or invisible based on the state. And it is not needed
for the animator to manage it.

Bug: 392121302
Flag: com.android.wm.shell.enable_bubble_bar
Test: atest NexusLauncherRoboTests
Test: move an app to bubble, move it back to fullscreen, check that
  handle is hidden
Test: check that handle is hidden and shown when in app and opening
  notif shade
Test: check that handle is hidden and shown when in app and locking and
  unlocking device
Test: check that handle is shown when receiving bubbles in app and the
  bar stashes after showing new bubbles
Change-Id: I4af8b4fa38f63b3cbc01f9cf59e66d7fc651ab13
2025-03-27 15:23:38 -07:00
Mykola Podolian 6ddfa5dfd5 Drag and drop from the search view on the overview screen.
When the bubble bar is stashed and an icon is dragged from the search
grid towards it, the bubble bar should be un-stashed. Conversely, if the
icon is dragged to the opposite location of the stashed bubble bar, the
handle should teleport out, and the collapsed bubble bar should
teleport in.
This change implements logic that addresses this behavior.

Bug: 399678274
Test: Manual. Drag and drop application icons from the search grid to
the bubble bar drop areas.
Flag: com.android.wm.shell.enable_create_any_bubble

Change-Id: Ief9ef3e5c24f8199b2812fd0adf63ae3f6cf8f32
2025-03-20 09:39:35 -07:00
Ats Jenk 9ca662a7f7 Use a reveal animator for bubble icons (2/n)
Use a similar animation for bubble bar icons as we use for taskbar. When
stashing or unstashing, use a reveal animator to show the icons.
Previously we were scaling the icons to the desired size.
New reveal animator matches what is used for taskbar.

Bug: 345488489
Test: TransientBubbleStashControllerTest
Test: stash and unstash bubble bar in app by swiping up from taskbar
Test: expand and collapse bubble bar in app by swiping up on bar
Test: expand and collapse bubble bar on home screen by tapping on it

Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: I24b0c64673d6becfa2ed68993bb95fe78e105670
2024-09-09 15:23:51 -07:00
Luca Zuccarini d75eacf30d 3/3 Move some Shell utils to the Shared package.
Bug: 322791067
Flag: EXEMPT move only
Test: NA
Change-Id: Iabc42e4c1d9c13667e9d91be5789cf295f3332e1
2024-09-02 09:23:34 +00:00
Ats Jenk ba6c9f06ed Merge "Scale bubble bar to the width of the handle" into main 2024-08-30 23:06:43 +00:00
Ats Jenk dff855e702 Merge "Update bubble bar stash and unstash animation" into main 2024-08-30 19:30:14 +00:00
Ats Jenk da9e36e4e7 Scale bubble bar to the width of the handle
When animating bubble bar from the stash handle, scale the width to the
handle.
Bubble bar is already almost the size of the handle, but a small scale
is still added.

Bug: 345488489
Flag: com.android.wm.shell.enable_bubble_bar
Test: atest TransientBubbleStashControllerTest
Test: slow animations down and unstash and stash bubble bar, observe
  that the width of the bubble bar scales down to the handle
Change-Id: I54dc228fa41d4d494bfb15e191d2ba563c0970c7
2024-08-30 10:17:29 -07:00
Ats Jenk 9ab2b8c785 Update bubble bar stash and unstash animation
Bubble bar should stash and unstash from the handle.
Update the animation to match what is used for the taskbar animation.
Fix the stash handle reveal animation to animate the stash bounds to
bubble bar bounds and back.
This gives the effect of the handle morphing into the bubble bar and
bubble bar morphing back into the handle.

Bug: 345680453
Flag: com.android.wm.shell.enable_bubble_bar
Test: atest TransientBubbleStashControllerTest
Test: have bubbles in bubble bar and be in app, swipe up for taskbar and
  observe the bubble bar handle transforming into the bubble bar
Test: with taskbar and bubbles expanded, check that bubble bar
  transforms into the handle
Change-Id: I8508e9207092774cbdb990e65f7f84e56a924d0c
2024-08-29 22:34:19 -07:00
Mady Mellor 8104ad3321 Follow RegionSamplingHelper being moved into shell
- update imports for usages in launcher

Flag: EXEMPT updating imports & bp file for class moving to sysui
Test: make; gradle build for launcher; treehugger
Bug: 353160491
Change-Id: I6d9d004e8ab6f67f494927424d2651c5b848e967
2024-08-29 11:17:04 -07:00
Mady Mellor 788a6ebb74 Make an input consumer for bubble bar
Instead of unstashing bubble bar in TaskbarUnstashInputConsumer
handle it in its own input consumer instead. This is a nicer
separation of concerns and simplifies the logic in both places.

Additionally, this fixes issues where swiping up the bubble bar
handle might initiate / be handled by gesture nav (or all apps) when
really any events originating on bubble UI should be managed by
bubbles instead.

Adds some mostly mock'd tests to check that the static method used
to indicate if bubbles should take the event or not works correctly.

Flag: com.android.wm.shell.enable_bubble_bar
Test: manual - test swipe up on bubble bar handle in an app
             - test swipe up on bubble bar on home - it should
               open & all apps / launcher transition shouldn't happen
             - longpress to drag bubbles around on home and overview,
               try the collapsed bar & individual bubbles in the
               expanded bar
             - test dragging on the bubble bar after it's revealed
               in an app
Test: atest BubbleBarInputConsumerTest
Bug: 345488529
Change-Id: I964d213d71de15e4350cff5202dfb9343de1af14
2024-08-19 15:26:37 -07:00
Liran Binyamin 46111b109e Support expanding the bar while animating
Update the BubbleBarAnimator to handle auto expanding bubbles as
well as expand signals that are received while animating the bubble
bar.

The expansion starts after the bar reaches its peak height. If the
hide animation starts before the expansion signal is received, we
ignore it.

Next step is to delay showing the expanded view until the bubble bar
starts expanding.

Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 353644484
Fixes: 356415377
Bug: 339683389
Test: atest BubbleBarViewAnimatorTest
Change-Id: I79a63f0b8728abc1ab3345f0116cbfcba2918643
2024-08-08 03:46:07 -04:00
mpodolian 484ff0fe9c Integrated new BubbleStashControllers into the existing code.
Integrated the PersistentTaskbarStashController and the
TransientTaskbarStashController into the launcher code. Made changes to
the TaskbarInsetsController to set appropriate touchable zones. Updated
the TaskbarUIController to not start the overview transition on clicks
for the collapsed bubble bar.

Bug: 346391377
Fixes: 350065038
Fixes: 355664783
Flag: com.android.wm.shell.enable_bubble_bar_in_persistent_task_bar
Test: com.android.launcher3.taskbar package tests

persistent taskbar and transient taskbar manual testing:
- on launcher home screen expand bubble bar, switch between bubbles,
remove bubble via bubble menu, add bubble, remove bubble with the drug
gesture, add bubble, collapse bubble bar
- repeat previous test on launcher overview screen and inside any
application
- after last test drag expanded bubble view to the opposite side of the
screen

Change-Id: I50f2c510854c4895fdfc9bd453a261c2103286fd
2024-07-30 18:36:05 -07:00
Liran Binyamin 29a3e5d676 Animate the bubble bar to show new bubble
This change updates that animation that plays when a new bubble notification is received. We now animate the entire bubble bar rather than the individual bubble.

Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/dwbsZJZlqLwJ2IG7RfJZ7c

Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: I2dc58ad61b880d76c9eefa462c3aee4e8bbb3584
2024-04-26 20:50:43 -04:00
Liran Binyamin e79120af38 Update new bubble animation
This change is a rewrite of the new bubble animation. Previously we chained the handle animation and the bubble animation so that they run sequentially.
That caused the transition from the handle to the bubble to be jarring.

We now use a single spring animation along the y axis that starts from the position of the handle to the position of where the bubble will end up.
The animation is split into 3 logical parts, where initially the bubble animates out, then the bubble starts animating in, and the last part is the overshoot of the spring animation, which is used to mark the bubble fully visible and ensure that from that point on, the bubble is only moving but doesn't change in scale or transparency as the bounce effect is playing.
Using a single animation path allows for a smooth transition from the handle to the bubble view.

Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/hHNUBdNJPiWi9gMbqy45UJ

Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: Ic1d3244574b8500d4aad2e9c718e61c1c34bd82a
2024-04-11 11:51:10 -04:00
Liran Binyamin 597ced3033 Animate the stash handle for new bubbles
The stash handle now animates out before the new bubble animates in, and animates back in after the new bubble is hidden.
There's still some additional polish needed :)

Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/z30Ob1rcDUkNEphLAQsgV

Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: I03449286b01ec96de9834e24a707652ddbe49fb0
2024-04-04 14:26:08 -04:00
Ats Jenk cd0f35383f Introduce bubble bar location that is driven by shell
Adds bubble bar location to the update object that is sent by shell.
Allows repositioning the bubble bar if the location changes.

Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT

Test: manually sending the update to reposition, dragging coming soon
Change-Id: Id430a98116d860a7badcf607edc166c751e12cf8
2024-03-06 10:17:11 -08:00
Ats Jenk 14f76fe13b Move bubble bar stashed handle to the left for RTL
When system language is set to an RTL language, we move the bubble bar
to the left.
Move the stashed bubble bar handle to the left in this case.
Tweak the bubble bar expand animation so that the bubbles expand from
the left edge.

Flag: LEGACY persist.wm.debug.bubble_bar DEVELOPMENT
Bug: 273310265
Test: repeat following steps with LTR and RTL system languages
  - add couple of bubbles to bubble bar, open an app, observe stashed
    handle on the left
  - swipe up from system navbar to show taskbar and bubble bar
  - swipe up from bubble bar handle to show bubble bar and expand it
  - drag bubble bar to dismiss target and back out and release
Change-Id: Ia3b7892bba732a5278168d63db0594087f55fad4
2024-01-23 17:16:49 -08:00
Liran Binyamin d7f1942d4a Let the bubble bar handle gestures over the bubble bar.
This change introduces a motion event flag to signal that the gesture
is being originated over the bubble bar (similar to the nav bar gesture flag). Downstream consumers use this flag to ignore the event in order
to allow the bubble bar to handle it.

The black screen in b/293348900 seemed to be related to the recents
shell transition closing the app that was in the foreground before
swiping on the bubble bar handle. Not sure why it ended up with a black
screen, but this change avoids starting the recents transition entirely.

Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/BSxLROoflr1i2yy0v6Y4G

Fixes: 294421126
Bug: 293348900
Test: Manual:
      - Add bubble to the bubble bar
      - Swipe up over the bubble bar
      - Observe that the bubble bar expands

      - Launch application
      - Swipe up on the bubble bar handle
      - Observe that the bubble bar expands

Change-Id: Iea15829de97edb6bfbfb7007388865230faaf736
2023-09-26 12:02:27 -04:00
Liran Binyamin f172c0b3b5 Set the stash handle bounds deterministically
The bounds of the bubble stash handle is calculated based on the bounds of
the bubble bar. The problem is that the bubble bar could be invisible, which
results in incorrect bounds set for the handle.

This change sets the bounds for the handle based on the width of the screen.

Fixes: 290992144
Test: Manual
        - Remove bubbles
        - Restart Launcher
        - Open the bubble test app and double tap on a chat
        - Observe that the handle animates in
Change-Id: Ida260014d59b88387de010891c18057f3b091e93
2023-07-26 15:38:58 -04:00
Liran Binyamin 60240207bb Handle the event of first bubble added.
When the first bubble is added we set the visibility of the bubble bar
to VISIBLE if the stash controller is unstashed. The issue is that once
bubbles are gone we no longer update the stash state in the controller,
so it becomes stale and can't be used when the first bubble is added.

This change introduces a new method for handling the transition from
the state where both bar and handle are invisible into the state where
one of them becomes visible. We can't use the existing stashBubbleBar
and showBubbleBar methods because those transition from one to the other.
Using them when both are invisible results in one of them becoming visible
and then invisible again.

Fixes: 290992144
Fixes: 291074646

Test: Manual:
       - Add bubble in the test app by double-tapping on a chat (non expanding notification)
       - Observe that the handle becomes visible and the bar is invisible
       - Dismiss bubble
       - Add bubble in the test app by tapping on the button on the right (auto expanding)
       - Observe that the bar becomes visible and expanded
Change-Id: I61334c67c255a6ed074fa8c834f4a5a1547539bf
2023-07-19 17:02:57 -04:00
Liran Binyamin 2f1b547a4b Crash fix in BubbleStachedHandleViewController.
Switching between gesture nav and 3 button nav may lead to a state where
the RegionSamplingHelper is unexpectedly null.

Bug: 269670598
Test: In Settings switch navigation modes until launcher crashes.
Change-Id: I56d6eea81070f367db292c1ded9866452f6e2650
2023-06-07 11:55:02 -04:00
Mady Mellor 14e53a6b2e Creates BubbleStashController & BubbleStashedHandleViewController
Adds two controllers to manage and animate the stash / unstash state
of the bubble bar. Adds them to BubbleControllers.

Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: I1a67da888384b1ae0fe3f79a25ea6a2c1b7eef87
2023-04-18 16:46:02 -07:00