This was a bug introduced in ag/28230638. Accidentally passed the
wrong boolean value. The bug is that the initial state animation
does not play, and the bubble bar remains invisible.
Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 352119655
Fixes: 352412093
Test: manual
- Clear all bubbles
- Send initial bubble
- Observe that the initial state animation plays correctly
Change-Id: Ie1435539e348c0a92a11db0b58a0b3bce6525cc0
The removal and update of bubbles happen in different processes, so
it's possible for race conditions to allow users to remove bubbles
without knowing that an update exists.
Passing the removal timestamp allows wm shell to determine whether
the removal happened before or after the latest update was received
for the bubble. This largely mitigates the race but does not solve
it completely. Will file a separate bug to track that.
Flag: com.android.wm.shell.enable_bubble_bar
Bug: 351026092
Test: Manual
- Note the issue here is a race condition so requires code
changes to force repro it
- Locally I added an artificial delay between the time the
- bubble is removed and until the removal is sent to wmshell
- Create bubbles and expand the bubble bar
- Dismiss bubble by dragging it to dismiss
- Send an update to the same bubble before removal is processed
in wmshell
- Verify bubble is added back
- Verify bubble is not removed when the removal is processed
in wmshell
Change-Id: I05ddc692fe30709125e380351b223d20a0778264
Fix bubble update animation when the updated bubble is the only
bubble in the bar.
Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 352119655
Test: Manual:
- Create 1 bubble in the bubble bar
- Send an update for that bubble
- Observe bubble bar is animated correctly
Change-Id: If569810dacf0ef77147a822c53ddebd09e35fe15
This change stores the bubble that was dismissed by drag temporarily
in BubbleBarView so that when we remove the bubble, we can avoid
updating it as part of the animation.
This is step 1 in this change. Next I'll look into removing the
bubble immediately after dismissing it from the menu, and lastly
update sysui to not send the removal event back to launcher.
Flag: com.android.wm.shell.enable_bubble_bar
Bug: 349826879
Test: manual
- have bubbles in the bubble bar and expand it
- drag a bubble to dismiss it
- observe the bubble does not reappear in the bar during
the animation
Change-Id: I6628ce779db4aac8d82edd4ecf2a25dedf8feef9
This change creates a BubbleAnimator class that handles animating
both new bubbles in and removed bubbles out.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/dMHGANplWjGC5HZT6MXyA4
Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 345687290
Test: atest BubbleAnimatorTest
Test: see demo
Change-Id: Ie060495f4b1421d1c8af48a861cd3e12dd0adbe8
Bounce the bubble bar when a new bubble is received while the bubble
bar is collapsed.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/fn7NWNY3htuR6K3wxhfcK2
Flag: com.android.wm.shell.enable_bubble_bar
Bug: 280605790
Test: atest BubbleBarViewAnimatorTest
Change-Id: I4c622454fd99f6bb5a332b3fe4aa2764c8af93af
Added animation for the updates of bubble bar icon sizes and padding
Fixes: 335575529
Flag: com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: BubbleBarViewAnimatorTest
Change-Id: I07d66b3a9d565f4fa6040c3c4bf4866e4d81a3a6
When a new bubble is added when the bubble bar is expanded,
we now scale in the new bubble.
This change only handles the case where we're not at the limit.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/hW4pwqpAttscedRMxnu5BN
Flag: com.android.wm.shell.enable_bubble_bar
Bug: 345795791
Test: manual
- Expand bubble bar
- Push a new bubble and verify it scales in
Change-Id: Iafae1d0c8feb8e5a8853d54e7299db261df4ebf4
When the animation of the first bubble is suppressed, immediately
stash or show the bubble bar to make sure it has been initialized
correctly.
Also we no longer automatically update the bubble bar visibility
based on its alpha value, since we're managing alpha and visibility
ourselves.
Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 343505267
Fixes: 343502240
Test: manually verified state for the following scenarios for the first bubble
- in app when keyboard is open
- in app -> open shade
- in app -> lock device
- on home -> open shade
- on home -> lock device
- in overview -> open shade
Test: manually sanity tested to make sure animations for more bubbles still work
Test: manual
- Open test bubble app
- Open keyboard and send a bubble
- The bubble should animate using a HUN since the keyboard is open
- Swipe back to hide the keyboard
- Observe that the bubble bar no longer shows to stash into the handle
Change-Id: I754a5a9c8e961af0cdd5ccadf83d3081d4414c7e
Stop sending entire bubble bar bounds to shell.
Keeping the bounds in sync was error prone as bubble bar can expand and
collapse. Bubbles can be added/removed.
In each of these cases we had to make sure that shell gets updated.
Shell only needed the full bounds for collapse/expand animation. But
after updating the animation, shell only needs the top coordinate of the
bubble bar.
Bug: 330585402
Flag: com.android.wm.shell.enable_bubble_bar
Test: bubble bar drag
- drag bar from right to left
- expand the bar
- check that expanded view scales in from left edge
- collapse and drag bar back, check the animation
Test: selected bubble drag
- drag expanded bubble from right to left
- check that expanded view scales in from the left edge
- drag the bubble back to right, check animation
Test: other bubble drag
- drag a unselected bubble from right to left
- check that the selected bubble expands in from left edge
- drag the bubble back to right, check animation again
Test: drag bubble from right to left, observe that expanded view
expand animation originates from the bubble bar
Change-Id: Ib66cef8d3c04bce54a69e30e99edd408a31f018f
Updates to existing bubbles now cause the bubble bar to animate in
similarly to new bubble notifications.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: manual
Change-Id: Ib53316889170e0392f055242c6206882084b4a46
The removeBubble method was only used for dismissing a bubble via drag
in Launcher. Renaming the method to indicate it is only for this
purpose.
This allows us to reduce remote calls from launcher to shell when a
bubble is dismissed via drag. Otherwise we would need to make two calls,
one for removing a bubble and other for stopping the drag.
As shell keeps track of drag status in launcher for hiding the expanded
view.
Also removing the bubble key from remote call to shell to signal drag
has finished. The bubble key was not used.
Bug: 330585402
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: drag a bubble that is not expanded to dismiss target, previously
expanded bubble should expand again
Change-Id: I57484aa3a2c0585ff7c3974d9f0d19dc1ab9dbd2
This change handles touches on the bubble bar while the bubble bar is animating.
We now update the taskbar touch region during the animation to make the bubble bar touchable.
When the bubble bar is touched during the animation, we now cancel the animation and allow dragging or clicking to expand.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/gtGS6FCrygN5RKueFtPs5E
BubbleBarTest 100x run: https://android-build.corp.google.com/abtd/run/L42600030003675041
Note that in the abtd run above there's a flake but that's for a different test which I'll look into separately.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605790
Bug: 280605846
Bug: 339066271
Fixes: 339244038
Test: See demo
Test: atest BubbleBarViewAnimatorTest
Change-Id: Icb8f4fa46ae4bb8c94ca931193d4a3cc49c5b718
This change animates the bubble bar for the first bubble.
When we're in home -- the bubble bar bounces in and stays visible
When we're in app -- the bubble bar bounces in, then animates to
the stashed handle.
When the bubble bar auto expands, we currently animate the bubble
bar already expanded. In the future we'll time the expansion
until after the bubble bar settles in.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/hIGwtb3YKyCT9Ke9adZNgY
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 339066271
Test: atest BubbleBarViewAnimatorTest
Change-Id: I80ce55676b72a50bab23623e0b5c1e602690682f
This change handles cancelling the currently running bubble animation when the stash state is changing.
Demo - http://recall/-/bJtug1HhvXkkeA4MQvIaiP/4jnBgnFaIPez6m7fVLSlf
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: I34628f8ad741228dd21285ad66e45ef2909fbdab
Adds support to pin bubble bar to other side of the screen by dragging
from one bubble. The entire bubble bar will move to the other side.
Implements the BaseBubbleBarPinController to handle dragging an
individual BubbleView.
Updates how translation and alpha get applied during BubbleBarView
location animation when a bubble is being dragged.
Dragged bubble is part of the BubbleBarView and when it is being
dragged, and we animate the bubble bar to the other side, we need to
ensure that the animation does not affect the dragged bubble.
Updating the translation and alpha for the BubbleBarView ViewGroup will
affect the dragged bubble as well. Updating how translation and alpha
gets applied to BubbleBarView so that it gets applied to individual
child views and then we can skip applying it to the dragged view.
Bug: 330585402
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: drag bubble from expanded bubble bar to left and right
Change-Id: I1fe2ba9fd466ff97d3b3af763bdcce30c3f98606
Create a new API to animate bubble bar position.
Animating it will not update its laid out location.
To update bubble bar laid out location, BubbleBarUpdate can be used.
Applying a location change from BubbleBarUpdate no longer animates the
change.
Bug: 330585402
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: long press bubble bar and drag it to left and right
Change-Id: I2572da4c063fc8e07cf07c4303778d343baa4ec4
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
Make the animating bubble touchable and expand the bubble bar when tapping on it.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/c4wBVtrT5YIgxL5kVuuoDU
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: I09281c2ebc9921750ada42dfc27e95d1ad0bd83b
Made bubble bar icon size adjustable and listen to the task bar
icon size changes. Additionally fixes an issue where the pointer arrow
could be misplaced.
Test: BubbleBarViewAnimatorTest.kt
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 295027436
Fixes: 334781761
Change-Id: Ie4ceee84cc00baa0186a3d5b431080c8495c7285
This change suppresses the new bubble animation when the notification shade is open and when the device is locked.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Fixes: 332912942
Test: manual
- Use test app to trigger a bubble with delay
- Lock the device/pull down the notification shade
- Observe the bubble is not animating
- Unlock/collapse the shade
- Observe new bubble was added to the bubble bar
Change-Id: I0b1d42a9d57b29807f113ae45ff60349341272ef
When launcher receives the initial bubble state update from sysui, don't animate the bubbles. The initial update is sent when bubble bar is created and not when new bubbles are created.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: manual
Change-Id: I74b09220be22d7382fa6d7c1351d5e60a799a054
Check whether the state update indicates that the bubble bar is expanding, and pass that to the bubblebarviewcontroller so that we can suppress the new bubble animation if we're expanding from stashed.
Note that in some cases the notification service may not include the auto expand flag on the message it sends to sysui, so launcher will end up getting 2 separate messages. We may need to handle that separately.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: manual
- create bubble that auto expands
- observe that the bubble does not animate
- note that in some cases the notification service may not include the auto expand flag, will look into that separately.
Change-Id: Id7e2db5fd32d391413c57d83effb4b23b1085125
Shell keeps track of bubble bar bounds for positioning and animating the
expanded view.
Bubble bar location can be changed when dragging the expanded view or
bubble bar itself.
Previously bounds were only reported when expanding a bubble. But after
adding drag support, bounds can change outside of expand action.
Implement a new bubbles API to report bubble bar bounds to shell
whenever they change in launcher.
Keep track of last reported bounds to ensure that we only send bounds
over when they change and when expand API has not already reported the
bounds.
Bug: 332423960
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: drag expanded bubble from one side to the other, collapse it,
observe that collapse animation collapses the view into the bar
Change-Id: If1bf31a04b8f134a1b055fddccd276e924ed98b6
This change animates a new bubble bar bubble. Currently only handles the case where the bubble is added when the bubble bar is stashed.
There's no synchronization with the stash handle yet either.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605790
Test: atest BubbleBarViewAnimatorTest
Change-Id: Ic3f5edc0dde204f871cf7e1288bd50620e6beebb
Only set bubble bar alpha to 0 and mark it collapsed when bubbles are
hidden.
When bubble bar should be hidden due to system ui state, only update
visibility.
Bug: 324068295
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: trigger a buble from bubbles test app
- swipe to home screen
- observe bubble bar is shown
- swipe notification shade down and away again
- observe bubble bar is hidden when shade is open, and shown when
closed
- expand bubble bar
- repeat swipe shade down and away, observe expanded bubble is hidden
while shade is open and bubble is expanded when shade is swiped away
Change-Id: Icc717ab250061f14f02a558eb9f7301fdc08c5c7
Bubble bar pointer arrow was being drawn outside of BubbleBarView
bounds.
This caused issues when alpha was applied to the BubbleBarView. With
alpha, BubbleBarView draw was clipped to its bounds and arrow was no
longer visible. This led to the arrow flickering during move animations.
Move animation updates alpha.
Move the pointer arrow inside the bounds of the bar view. Update the bar
height to include the arrow.
Update callers who rely on bubble bar content height to take into
account extra height for the arrow.
Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: move bubble bar left and right, observe arrow is visible
Change-Id: I05866b5c944361b2f10437c3641527ed3c594047
When it is not the initial bubble data, animate bubble bar location
change.
Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: manual, move expanded view from one side to the other, observe the
location change animates
Change-Id: I52117a31d02e7160ca1d3dc3e724bda2e38f6cbf
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
Fix bubble bar collapse and expand animations when bubble bar is pinned
to the left.
When system language is set to an RTL language, bubble bar gets pinned
to the left edge of the screen.
Bubble bar should expand to the right and collapse to the left. Bubbles
in the bubble bar should be ordered from right to left. The most recent
bubble should be at the right in the bubble bar.
Known issue:
- when the most recent bubble is removed, the arrow animates to a new
position, but the background is not animated, resulting in arrow
getting detached from the container. Will be fixed by animating the
background.
Flag: LEGACY persist.wm.debug.bubble_bar DEVELOPMENT
Bug: 273310265
Test: with LTR language set as the system language
- expand bubble bar with 1 bubble
- expand bubble bar with multiple bubbles
- select second bubble, observe after collapse it is set as first
- dismiss a bubble from bubble bar by dragging
Test: with RTL language set as the system language
- expand bubble bar with 1 bubble
- expand bubble bar with multiple bubbles
- select second bubble, observe after collapse it is set as first
- dismiss a bubble from bubble bar by dragging
Change-Id: Ic46a5b1a6e45ad225ba509a61147cc6a8cdd0397
When the bubble bar becomes visible the space between icons in the
hotseat is now adjusted. This change only does it when the QSB is
above the icons, but this will be changed in the future to be based
on the amount of space between the hotseat and the edge of the screen.
When the hotseat is adjusted, the new width is smaller by the size of
2 icons. The icons are then translated to be evenly spaced within the
boundaries of the new width.
Since the adjustment is only applied when the QSB is above the icons,
it is resized accordingly to the new width.
All visual updates currently snap to the new position, but will be animated
in a follow up.
Demo: https://recall.googleplex.com/projects/3391fc5c-599d-4827-b6f8-d2deb160aa99/sessions/fad1a5c5-e9cf-4586-92e4-1e92df3b002e
Bug: 280494203
Test: Manual (on tangor)
- Set device to landscape
- Make the bubble bar visible by adding a bubble
- Rotate to portrait mode
- Observe that the hotseat is adjusted
- Rotate to landscape
- Observe that the hotseat adjustment is removed
- Rotate back to portrait
- Observe that the hotseat is adjusted again
- Dismiss the bubble to hide he bubble bar
- Observe the hotseat adjustment is removed
Change-Id: I5b02a60b6cb301ffa2507a6d825c748a782cca18
Launcher support for the user education logic described in ag/24587530.
Bug: 275077944
Test: TBD
Flag: WM_BUBBLE_BAR
Change-Id: I2b9a6ecde332de6305ad574c41d8322d8bb5d7ad
A single bubble and the bubble stack dismiss functionality is implemented using `BubbleDragController`. It attaches a touch listener to the corresponding views and handles gesture interactions.
* When the view is long clicked the dragging to dismiss interaction starts. It scales up the dragged view and presents the dismiss view in the bottom of the window.
* When the bubble or the bubble stack is dragged close to the dismiss target area, it gets pulled towards it and sticks to it. The `MagnetizedObject` and `MagneticTarget` classes are used for it.
* When the dragged view is released outside of the dismiss area, it moves back to the initial position with animation.
* When the dragged bubble is released inside of the dismiss area, it will dismiss the bubble with animation and remove it from the stack.
* When the dragged bubble bar stack is released inside the dismiss area, all the bubbles will get dismissed and the bubble bar will dissapear.
Bug: 271466616
Test: manual, TBD
Flag: WM_BUBBLE_BAR
Change-Id: I83393898be61ec522db92688ac2e111ef7d72fe6
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