Commit Graph

371 Commits

Author SHA1 Message Date
Tracy Zhou 95c4c8d268 Fix crash from folding/unfolding
This is fundamentally caused by the phone device profile not having task bar related attributes, which crashes in icon alignment animation. We had resolved it by skipping this animation based on isPhoneMode check. However, we passed in launcherDp instead of taskbarDp (from TaskbarActivityContext) which doesn't always have the most up to date information in race conditions (e.g. repetitively fold/unfold)

Fixes: 311431054
Test: repetively fold/unfold, make sure it doesn't crash
Change-Id: I65f600112da4123d337b3f59a2fe6dd13ac7af74
2023-12-14 18:39:42 -08:00
Tracy Zhou 9ccd5d4257 Introduce taskbar_phone_size
In small screen, we use 48dp for nav bar height, while it's 60dp for task bar.

Bug: 230395757
Test: manual
Change-Id: Ia7083a1b2246981466e1163404c63b645a6bf5b1
2023-12-13 00:38:15 -08:00
Jagrut Desai 2be2b93256 Merge "TaskbarPinningController Unit Tests" into main 2023-12-12 16:19:00 +00:00
Jeremy Sim 160225029d Merge "App Pairs: Launch animation" into main 2023-12-12 00:58:49 +00:00
Jagrut Desai 70de8a4823 TaskbarPinningController Unit Tests
Test: Presubmit
Bug: 265439107
Flag: NONE

Change-Id: I5da3558adf88126b07c5d6217ee4fbbcc1e2e348
2023-12-11 14:46:55 -08:00
Tracy Zhou 901b190153 Merge "Pass in navigation bar panel context created by task bar when taskbar navbar unification is on" into main 2023-12-11 21:47:59 +00:00
Jeremy Sim 23fcbf2f73 App Pairs: Launch animation
[App Pairs 7/?]

This patch implements the app pair launch animation from icon. Adds a new function, composeFadeInSplitLaunchAnimator(), in SplitAnimationController, that builds the combined launcher + shell animation.

Bug: 309618233
Flag: ACONFIG com.android.wm.shell.enable_app_pairs DEVELOPMENT
Test: Manual
Change-Id: I8e95f629ae2a71f1bd6cbb356f5e33233e5c2906
2023-12-11 13:09:06 +09:00
Jeremy Sim 2987d95ba4 App Pairs: Implement Taskbar functionality
[App Pairs 8/?]

This CL adds taskbar functionality for app pairs:
- Ability to drag an app pair icon to Taskbar
- App pair launch from Home Taskbar
- App pair launch from Overview Taskbar
- App pair launch from in-app Taskbar

KNOWN ISSUES:
- Bug (b/315190686): if user is inside a running split pair and attempts to launch the same pair from an app pair icon on taskbar, Overview tiles get temporarily messed up (recoverable by leaving Overview)
- User can attempt to split with an app pair icon on the Taskbar. This should result in a "can't split with this" bounce animation on the SplitInstructionsView (to be implemented). Currently does nothing.

Bug: 274835596
Flag: ACONFIG com.android.wm.shell.enable_app_pairs DEVELOPMENT
Test: Manual
Change-Id: I5256547af236fc2deeb192d60bfe1f2b7ddc5647
2023-12-08 15:07:45 -08:00
Saumya Prakash 55fdc45ecc Merge "Ensure Taskbar stashes when launching an app from folder" into main 2023-12-08 22:59:45 +00:00
Saumya Prakash 86285d477d Ensure Taskbar stashes when launching an app from folder
We use the folder closing callback to trigger a call to stash the
taskbar if an app was launched. We can check whether an app was launched
from a folder based on whether a folder's view is open when
an app is launched. This ensures that the taskbar only stashes after the
folder is done animating.

Flag: NA
Fix: 295296529
Test: Launched an app in a folder on taskbar. Also ensured that other
taskbar behavior remains unchanged.

Change-Id: Ib5a797186978ee960e44b6b62c833eead03bccd0
2023-12-08 20:16:15 +00:00
Tony Wickham 18551f29fe Remove ENABLE_TRANSIENT_TASKBAR and long-press stash support
Flag: NA
Test: manual, TaplTestsTaskbar, TaplTestsPersistent, TaplTestsTransient
Fixes: 270395798
Change-Id: I4ecf5ddcd1206e846538175c684043c5e065fd5d
2023-12-06 22:13:10 +00:00
Tracy Zhou 7fae462565 Pass in navigation bar panel context created by task bar when taskbar navbar unification is on
When the flag is on, task bar is created with window context navigation bar. The floating rotation button window context should be in navigation bar panel.

Fixes: 309930089
Test: N/A
Change-Id: I730a4b898d9fb65cc5d7544dcb37dfe32d49a632
2023-12-05 12:53:51 -08:00
Tracy Zhou ec26a138d5 Do not apply rounded corner background to task bar when it's in phone mode
Fixes: 311428370
Test: Make sure nav bar in landscape phone mode doesn't have weird clips
Change-Id: I0c402dd10a3bd39afd5692d21ef8adaad04646db
2023-12-04 22:07:04 -08:00
Jagrut Desai a5ad8bed64 Decreasing the intensity of haptic feedback for taskbar invocation
Test: Presubmit, Manual
Bug: 308496668
Flag: NONE
Change-Id: Ic8c28b8e84bf9f388a73c518c91840d958287546
2023-11-29 19:03:33 -08:00
Jagrut Desai 90dd098c85 Migrate ENABLE_TASKBAR_PINNING to aconfig flag
Test: Manual, Presubmit
Bug: 265437087
Flag: ACONFIG com.android.launcher3.enable_taskbar_pinning DISABLED

Change-Id: I4800230c04feceefa2398e189c493c8c4a7b2fe5
2023-11-09 23:20:03 +00:00
Tracy Zhou f2d7be1cec Make enableTaskbarNoRecreate() depend on ENABLE_TASKBAR_PINNING and ENABLE_TASKBAR_NAVBAR_UNIFICATION
We want to turn on the flag when either of the dependent features is on

Bug: 299193589
Test: N/A
Change-Id: I7b48ff2be0cf9da3b6bc00d75370fa585ce4140d
2023-11-08 14:52:58 -08:00
Tracy Zhou 6fe69f5a2a Migrate HIDE_NAVBAR_WINDOW to aconfig and rename is to enable_taskbar_navbar_unification
Bug: 309671494
Test: N/A
Change-Id: If35d807c17351146029498a876a055384eff3c2f
2023-11-07 13:51:38 -08:00
Jagrut Desai b10f2a3d03 Refactor TaskbarActivityContext#applyDeviceProfile
Test: presubmit
Bug: 308024141
Flag: LEGACY ENABLE_TASKBAR_PINNING DISABLED
Change-Id: Ic0ecc80f9b61910a917b93cbe62139e2c5d0d9d2
2023-10-26 16:12:12 -07:00
Jagrut Desai 24231d9994 Merge "Taskbar pinning animation with no recreate" into main 2023-10-26 21:33:41 +00:00
Jagrut Desai 631b284836 Taskbar pinning animation with no recreate
Test: Manual, Visual
Bug: 265436799
Flag: LEGACY ENABLE_TASKBAR_PINNING DISABLED

Change-Id: I84a4d1efdb0bd4a0f856fa1f46b6489ef54a3841
2023-10-26 10:36:48 -07:00
Tracy Zhou f767c86896 Add task bar window of TYPE_NAVIGATION_BAR when FLAG_HIDE_NAVBAR_WINDOW is on
Bug: 304426019
Test: manual
Change-Id: I0c09e57db5a9bf6391605d5ec667cf12c96a2042
2023-10-25 14:54:01 -07:00
Tracy Zhou 00f9e52575 Migrate ENABLE_TASKBAR_NO_RECREATION to launcher.aconfig
Bug: 274517647
Test: manual
Change-Id: I29fe58691440ee757c9f391bd574ef80eefb5ae6
2023-10-24 18:42:15 -07:00
Pat Manning 1eb8bd8735 Merge "Increase pinned taskbar height to fit tooltips." into main 2023-10-23 16:13:03 +00:00
Pat Manning 5643e7c047 Increase pinned taskbar height to fit tooltips.
Fix: 305706286
Flag: ACONFIG com.android.launcher3.enable_cursor_hover_states TRUNKFOOD
Test: TaskbarHoverToolTipControllerTest

Change-Id: I767947a752eae7a928d59fe332bc62b9fd5b5f37
2023-10-23 15:52:48 +01:00
Jon Miranda 00c3d78191 Add HomeTransitionListener to launcher.
Fixes: 279514548
Bug: 284474103
Bug: 306053414

Flag: LEGACY ENABLE_HOME_TRANSITION_LISTENER DISABLED
Test: App launch -> Hotseat -> Taskbar stashes
      Transluscent app launch and launcher still visible -> No change
      Going home -> Hotseat visible

Change-Id: I6db5253ada3e3b37dfae124f3ee88a9805804fb8
2023-10-20 15:46:11 -07:00
Jagrut Desai f56bfabaa4 Merge "Change Taskbar Window height logic for taskbar pinning." into main 2023-10-06 23:33:30 +00:00
Jagrut Desai 0dce287a6c Change Taskbar Window height logic for taskbar pinning.
- Breakout CL part 6
- This is a breakout cl from ag/24272821 to make it more readable and atomic.
- This cl makes default taskbar window height to be transient when the taskbar pinning flag is on, so we don't see taskbar window cutoff during animation.

Test: Manual, Visual
Bug: 265170176
Flag: ENABLE_TASKBAR_PINNING
Change-Id: I37e8ad0f2c4d144476828f101019dcacdea7acb2
2023-10-03 16:53:32 -07:00
Liran Binyamin e41e6185e4 Make the bubble bar flag dynamic in Launcher.
Changing the flag currently requires a reboot, because it is read once when the process starts and never changes.
This change triggers a re-read of the flag value from SystemProperties whenever Taskbar is recreated.
This allows setting the flag as part of integration tests for bubble bar.

Bug: 273994695
Test: Manual:
       - turn flag off
       - create bubbles
       - observe floating bubbles are added
       - turn flag on
       - change navigation mode to gesture navigation
       - observe bubble bar becomes visible
Change-Id: I277ea6aa2c8d3ab04094537bf4cd31630310dfec
2023-10-03 10:49:30 -04:00
Vinit Nayak dd96f79b36 Merge "Provide bgExecutor for RotationButtonController" into udc-qpr-dev am: 8ad9393213 am: a6f66eeba7
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/24761312

Change-Id: I3f6610ca6dd3087298e84d24ceb0570d3d2749ee
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-16 02:45:25 +00:00
Vinit Nayak 9b3598f154 Provide bgExecutor for RotationButtonController
Bug: 289341065
Test: Unfolded, checked perfetto trace, it
shows up not on UI thread

Change-Id: I9a080c9a5c3c57f38eb6719ed73952dde4f6bba1
2023-09-15 10:46:00 -04:00
Liran Binyamin a833af316b Adjust the hotseat when the bubble bar becomes visible
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
2023-09-13 17:08:42 -04:00
Brian Isganitis 3c0303b6ac Focus Taskbar search EditText and show IME on meta key toggle.
Test: adb shell input keyevent 117
Fix: 300116542
Flag: ENABLE_ALL_APPS_SEARCH_IN_TASKBAR
Change-Id: Iaf15240f49e978078cd586169be1665e1a86eda5
2023-09-12 20:23:47 +00:00
Tracy Zhou ca9b884118 Merge "Always recreate TaskbarActivityContext" into main 2023-09-12 02:24:45 +00:00
Jagrut Desai fb4694d51e Merge "Apply ForciblyShown WindowLayoutParam flags for Transient Taskbar" into udc-qpr-dev am: 733d440ac1 am: a1e8f327ff
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/24709295

Change-Id: Id84c65adba08bae631cccfd6792c6a90b6992637
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-11 23:47:46 +00:00
Jagrut Desai 6472119d4b Apply ForciblyShown WindowLayoutParam flags for Transient Taskbar
Test: Manual
Bug: 278078311
Flag: Not needed
Change-Id: Ia963e45b3b4e6d928b6292b80b73394e76fe2325
2023-09-11 09:39:23 -07:00
Tracy Zhou 01cc856157 Always recreate TaskbarActivityContext
- Add ENABLE_TASKBAR_NO_RECREATION flag
  When the flag is turned on,
  * Always destroy and recreate
  * Move task bar drag layer lifecycle from TaskbarActivityContext to TaskbarManager
  * Wrap the drag layer into a fullscreen root view

Note that in order to preserve the window across multiple TaskbarActivityContext creations, the inset types and ids must stay the same, so it's extracted out.

Bug: 274517647
Test: Fold and unfold a few times. Use a few applications. Make sure the task bar is visible and in the right place (tested with ENABLE_TASKBAR_NO_RECREATION and FLAG_HIDE_NAVBAR_WINDOW both on, both off, and one on and one off)
Change-Id: Ic3f0aa3d056fe178a53b76b2ad6cc6b9bffd5898
2023-09-10 22:43:47 -07:00
Jagrut Desai 54677143b1 Add haptic feeback for Transient Taskbar
Bug: 264851582
Test: Manual
Flag: Not needed
Change-Id: Id5f0e386968291f4c4a897bebf40c59aba33c3d4
2023-09-08 15:39:12 -07:00
Tracy Zhou d9d17ce133 Init nav mode in TaskbarActivityContext between fold/unfold
In RotationButtonController, we show the floating rotation button either when the bar is visible, or when the device is in gesture nav mode, even in an immersive app. The issue here is that mNavMode is not correctly initialized after the device is unfolded.

Fixes: 272164624
Test: Open townhall. Fold and then unfold. Tilt the device and make sure the floating rotation button shows.
Change-Id: I09025132fdca5c764e66d9ac21f29b853741d257
2023-08-21 22:38:13 +00:00
Brian Isganitis 18dd200832 Merge "Launch Taskbar All Apps with Meta key when it's available." into udc-qpr-dev 2023-08-09 17:15:12 +00:00
Brian Isganitis a8ad7e448c Launch Taskbar All Apps with Meta key when it's available.
Taskbar All Apps will be chosen over Launcher's when we are in an app or
in overview. Otherwise, we fallback to toggling Launcher All Apps.

Test: Manual, adb shell input keyevent 117
Fix: 282111244
Flag: ENABLE_ALL_APPS_SEARCH_IN_TASKBAR
Change-Id: I68e4cb3a80d42e233f7d9ad33fc3791b5c75d219
2023-08-08 19:32:02 +00:00
Jeremy Sim 6390654526 Merge "App Pairs: Implement save, inflate, launch, and delete" into udc-qpr-dev 2023-08-08 00:56:04 +00:00
Vinit Nayak 3adfa41951 Merge "Ensure matching insets for taskbar gesture and 3 button nav" into udc-qpr-dev 2023-08-03 00:49:21 +00:00
Vinit Nayak 1fd1b68870 Ensure matching insets for taskbar gesture and 3 button nav
* WM checks that the number of insets don't change for
a given window once it's added. Previously when we changed
nav modes the window was removed and a new one was added, so
changing insets amounts/types didn't matter.
* Now that we use the same window and re-provide the insets,
the number of them provided have to match (insets values themselves
can change as much as needed)
* Fix minor bug when checking bit mask for gravity

Test: Switch between nav modes, no crash; no change in behavior
w/ flag turned off
Bug: 274517647
Flag: persist.wm.debug.hide_navbar_window
Change-Id: I750f843e8210ba1c800b61ac79664265924c054a

Change-Id: Idba4e8e1888fa58bf872c04cb042f77a8b5b0573
2023-08-02 14:21:31 -07:00
Jeremy Sim 94fd07e5da App Pairs: Implement save, inflate, launch, and delete
This is the third of several patches implementing the App Pairs feature behind a flag.

This patch includes:
- AppPairIcon and associated XML. Actual icon asset is placeholder for now
- Ability to launch split pair on click
- Icon can be moved around, incl. to Taskbar
- App pair can be deleted by dragging to "Remove" drop zone
- Icon persists on Launcher reload

Change-Id: I88aec6fbc814be98f9ef048bbc5af889d0797970
Flag: ENABLE_APP_PAIRS (set to false)
Bug: 274835596
Test: Not included in this CL, but will follow
2023-08-02 12:08:41 -07:00
Ivan Tkachenko 90a769d1d3 Bubble bar dismiss interaction
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
2023-07-28 18:17:09 +00:00
Mady Mellor e7cc3997d0 Revert "Bubble bar drag to dismiss"
Revert submission 23879277-bubble_bar_dismiss

Reason for revert: issues with touch

Reverted changes: /q/submissionid:23879277-bubble_bar_dismiss

Change-Id: I4311abff0e542907b09b0aa865d68257b47f6af1
2023-07-12 22:27:17 +00:00
Ivan Tkachenko eceb797d2f Bubble bar drag to dismiss
* Added dismiss view to the taskbar
* Bubble drag to dismiss of:
  * A single bubble when the bubble bar stack is expanded
  * All bubbles when the bubble bar stack is colapsed
* Added dismiss related calls to WMShell in SystemUI through SystemUIProxy

Bug: 271466616
Test: manual, TBD
Flag: WM_BUBBLE_BAR
Change-Id: Ibb62a0b1ab9fafa8a3acf07450ce2132ed605adc
2023-07-12 07:13:12 +01:00
Winson Chung 55eedd4e5c Merge "Fix an issue with nav bar translations not being updated" into udc-dev am: a53261b9cd am: a8e08175ad
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/23923806

Change-Id: Id330daa9c44cad3ef1733ba2319a8b69260ef99b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-07 20:01:36 +00:00
Winson Chung ccd359d76c Fix an issue with nav bar translations not being updated
- There are flows where the shared taskbar state is updated prior
  to being destroyed, and not updated to the latest values when
  the taskbar is recreated.

  ie.
    unfolded -> lock screen -> LauncherTaskbarUiController's
      mTaskbarInAppDisplayProgress[SYSUI_SURFACE_PROGRESS_INDEX]
      is set to 1 due to the notif shade (lockscreen) showing.
      This is written into TaskbarSharedState's sysuiStateFlags
      and inAppDisplayProgressMultiPropValues.
    fold -> TaskbarActivityContext is destroyed
    unlock -> TaskbarManager and TaskbarSharedState's
      sysuiStateFlags are updated while the device is folded
    unfold -> TaskbarActivityContext is recreated and initialized
      which restores from the shared state's
      inAppDisplayProgressMultiPropValues. It also tries to reapply
      the shared state's sysuiStateFlags, but this doesn't update
      inAppDisplayProgressMultiPropValues because the state's
      "enabled" state is not updated (default is no flag set, and
      lockscreen sysui state is not set anymore).
    -> The restored inAppDisplayProgressMultiPropValues value
       results in the wrong translation.

- Note that after the above, the NavbarButtonsViewController state
  is actually correct and reflects the SysUI state, but the
  LauncherTaskbarUiController state is wrong.  This CL tries to
  manually update the ui controller to the correct state when it
  is recreated.
- CL also fixes a separate issue where LauncherTaskbarUIController
  could potentially overwrite the saved state progresses while
  restoring them due to the state callback being called

Bug: 283346744
Test: Unfold -> Lockscreen -> Fold -> Unlock -> Unfold and ensure
      the buttons are translated correctly



Change-Id: I43e473faf4fa2a493b9705506e3755df8f6264e7
Signed-off-by: Winson Chung <winsonc@google.com>
2023-07-06 22:01:49 +00:00
Vinit Nayak 15a9feb67f Add support for taskbar phone 3 button seascape
* Ignore orientation check from ag/22709055 for now,
that will be reverted. This causes recreateTaskbar() to
not run when folding the device

Bug: 274517647
Test: Tested 3 button nav in portrait/landscape/seascape
Flag: persist.wm.debug.hide_navbar_window
Change-Id: Ied02ead677d496b465c748257e32b7db5eb9580c
2023-07-06 13:58:30 -07:00