Commit Graph

758 Commits

Author SHA1 Message Date
Treehugger Robot
27312fa26d Merge "Prevent adding duplicate TaskAnimationManager launcher destroyed callbacks" into main 2025-05-20 15:22:24 -07:00
Mykola Podolian
9e4b44afcd Merge changes from topic "remove_ipc" into main
* changes:
  [5/5] Removed unused IPC call.
  [4/5] Cover DragToBubbleController with tests.
  [3/5] Implement DragToBubbleController.
  [2/5] Hook up DragToBubbleController and prepare launcher to use it.
  [1/5] Added DragToBubbleController
2025-05-16 16:01:03 -07:00
Schneider Victor-Tulias
2e6148a430 Prevent adding duplicate TaskAnimationManager launcher destroyed callbacks
Flag: EXEMPT code cleanup
Bug: 416536400
Test: TaskAnimationManagerTest; ran test with and without change
Change-Id: I8bdee3adeeca07e386f3058910d5e2160359f7e9
2025-05-16 15:40:46 -04:00
mpodolian
8499319bc2 [4/5] Cover DragToBubbleController with tests.
Implement tests that check DragToBubbleController public API

Bug: 411506181
Flag: com.android.wm.shell.enable_create_any_bubble
Test: DragToBubbleController.kt
Change-Id: I48fe5f45921fbedbe0f1921dfd21e9ecb14406bc
2025-05-16 11:33:52 -07:00
Treehugger Robot
242f038d09 Merge "Don't trigger getRecentTasks() calls when waiting for an old call" into main 2025-05-16 02:25:05 -07:00
Treehugger Robot
6bc72676ed Merge "Recreate DP for CD when displayInfo changes" into main 2025-05-15 18:07:54 -07:00
Treehugger Robot
bee486a7da Merge "Use desktop mode autostashing on desktop devices" into main 2025-05-15 17:33:29 -07:00
Ajinkya Chalke
1fd6090eb7 Recreate DP for CD when displayInfo changes
- Only IDP is updated when displayInfo changes but DPs of CD don't. As
  a result taskbars on CD end up reusing the old config DPs. For
  example, when user changes display size, displayInfo updates but
  taskbars on CD continue using old DP resources.
- So, update DP for CD when DisplayInfo changes.
- Also added using supplied context with dpToPx for calculating radius
  for taskbar roundedness at the ends.

Fix: 414933860
Test: m
Flag: com.android.window.flags.enable_taskbar_connected_displays

Change-Id: I7d8ed3c5ba69b755a58d3462a5da9ed7fd404198
2025-05-15 22:42:09 +00:00
Gustav Sennton
ffa5c2ad83 Don't trigger getRecentTasks() calls when waiting for an old call
TaskbarRecentAppsController#reloadRecentTasksIfNeeded() triggers a call
to fetch Recents tasks, that call is expensive as it goes through WM
Shell and the system server. If we trigger reloadRecentTasksIfNeeded()
multiple times we're queueing up multiple calls to fetch Recents tasks.

With this CL we avoid queueing up multiple calls, and instead just make
one new call when the old one finishes. That way we can only ever have
one call getRecentTasks() call triggered through
reloadRecentTasksIfNeeded() posted at any one time.

Bug: 415090968
Flag: com.android.window.flags.enable_taskbar_recent_tasks_throttle_bugfix
Test: TaskbarRecentAppsControllerTest
Change-Id: I58b66e4564af4e64837317a9de7be398395d8568
2025-05-15 20:18:21 +00:00
Ebru Kurnaz
6ddc86dc7e Merge "Use wm callbacks for sys decor in Launcher instead of command queue." into main 2025-05-15 09:44:19 -07:00
Ebru Kurnaz
88185ac745 Use wm callbacks for sys decor in Launcher instead of command queue.
Bug: 412615955
Test: DisplayRepositoryTest
Flag: com.android.window.flags.enable_sys_decors_callbacks_via_wm
Change-Id: I42865b2b9169e99e35e09e239f6a1b3e455b7894
2025-05-15 13:39:33 +00:00
mpodolian
dbd42b6f05 [1/5] Added DragToBubbleController
Added controller that would handles drags of launcher icons to the
bubble bar, displaying drop targets and creating application bubbles.

Bug: 411506181
Flag: com.android.wm.shell.enable_create_any_bubble
Test: build launcher
Change-Id: I593222d86f50248ceb2909ae73ccc021ef515e28
2025-05-14 17:29:11 -07:00
Brian Isganitis
70e62fce31 Merge changes from topic "taskbar-wmproxy-module" into main
* changes:
  Filter out DEFAULT_DISPLAY from Taskbar unit tests.
  Refactor test dagger graph to stub PerDisplayRepository instances.
  Only use mockito-kotlin in SandboxApplication.
2025-05-14 14:17:21 -07:00
Treehugger Robot
a65936447f Merge "Don't show overview via keyboard shortcut if blocked by SysUi state" into main 2025-05-14 06:44:39 -07:00
Steven Ng
d8f2df4124 Don't show overview via keyboard shortcut if blocked by SysUi state
Note: before this change, triggering overview keyboard (KB) shortcut at lock screen would result in the overview shown after the screen is unlocked. This behavior is counter-intuitive. And thus, this change will discard overview KB shortcut at lock screen regardless if an external display is connected,

Flag: EXEMPTED minor bug fix
Test: manually trigger overview KB shortcut at lockscreen in both the default & connected display. Observed that no overview is shown at lock screen and after unlock.
Test: manually trigger overview KB shortcut after lockscreen in both the default & connected display. Observed that the overview is shown at the focused display.
Test: atest NexusLauncherTests:RecentsAnimationDeviceState
Bug: 415040428
Change-Id: Ia585b7b62e5f8de5be6d7cda9ad24760398ca37a
2025-05-14 10:59:10 +00:00
Hyunyoung Song
21284c8e13 Merge "Revert "Prevent CtS invocation in fake landscape mode"" into main 2025-05-13 23:03:08 -07:00
Toni Barzic
2cf0d817a3 Use desktop mode autostashing on desktop devices
Updates few autostashing related conditions to use
`isTaskbarShowingDesktopApps()` instead of `isInDesktopMode()`, as the
former covers the case where the desktop flavour taskbar is shown
consistently (on desktop devices).

Bug: 390665752
Bug: 415991381
Flag: com.android.window.flags.enable_desktop_taskbar_on_freeform_displays
Test: On desktop device, verify that "Always show taskbar" is shown on
      home/in overview/in app outside desktop mode, and verify that the popup
      value shown is consistent with the value in desktop mode. Verify
      that taskbar does not get auto-stashed on home, even if "Always
      show Taskbar" value is false.
Change-Id: I4edfe20f5526210fdf767231d0906875fe04f806
2025-05-14 05:53:51 +00:00
helencheuk
d681164fe3 [Action Corner] Handle go home action
Handle go home and go back to previous screen for overview, split and full screen task

Bug: 397182595
Test: ActionCornerHandlerTest
Flag: com.android.systemui.shared.cursor_hot_corner
Change-Id: Ia928f102df6908058c02949db02a73430cea5ef1
2025-05-13 17:03:12 +00:00
Brian Isganitis
fffd860570 Filter out DEFAULT_DISPLAY from Taskbar unit tests.
All Taskbars are inflated on VirtualDisplays. We should ignore
DEFAULT_DISPLAY.

Flag: TEST_ONLY
Bug: 415326979
Test: Taskbar tests
Change-Id: If6700929840552001a8b16fa969003f2c21b3cfe
2025-05-12 17:10:57 -04:00
Brian Isganitis
ae80cbfed3 Refactor test dagger graph to stub PerDisplayRepository instances.
These are not being used yet in Taskbar, but they are hardcoding
DEFAULT_DISPLAY for the primary ID. In tests, we want the primary to be
considered the ID of the virtual display tests are running on.

This change also moves dagger classes to its own file for organization.

Flag: TEST_ONLY
Bug: 415326979
Test: Taskbar multivalent tests
Change-Id: Ibd0cdf46bc53dbd7a3dd5f34d7171d9a6cdebb38
2025-05-12 17:10:57 -04:00
Schneider Victor-tulias
5050b29f23 Merge changes from topic "reapply-load-plan" into main
* changes:
  Add support for save app pairs to recents in window
  Update RecentsView to allow re-apply load plan
  Update AbstractQuickStepTest to check non-recents states correctly
2025-05-12 11:29:33 -07:00
Hyunyoung Song
e48deacbd4 Revert "Prevent CtS invocation in fake landscape mode"
This reverts commit 299576a777.

Reason for revert: b/402037577

Change-Id: I240ffd68ccf3536d80eda1c63395c64c8e48de22
2025-05-12 08:47:50 -07:00
Schneider Victor-Tulias
db74f177a6 Update RecentsView to allow re-apply load plan
If the recents view is not attached to window when reloadIfNeeded is called, then mTaskListChangeId will be set, but applyLoadPlan will exit early without actually applying the loaded tasks. This is an issue since the recents list will remain outdated until the task stack changes. This has been causing issues in tapl tests with recents window enabled. Delaying the setting of mAppliedTaskListChangeId until the end of applyLoadPlan to fix this.

Flag: com.android.launcher3.enable_launcher_overview_in_window
Bug: 377678992
Test: TaplTestsQuickstep.testDismissLastGridRow
Change-Id: Iaa8441a74b54f86167a7963b0005c044f355d94e
2025-05-12 10:29:06 -04:00
Wen-chien Wang
495fb1e9b4 Merge "pin-shortcut: Check desktop state for the feature" into main 2025-05-09 17:06:48 -07:00
Wen-Chien Wang
e6816545b6 pin-shortcut: Check desktop state for the feature
This feature aims to work only for desktop mode. Add a check to
the desktop state when checking the aconfig feature flag.

Bug: 375648361
Test: EXEMPT flag update
Flag: com.android.window.flags.enable_pinning_app_with_context_menu
Change-Id: I19eb17d756f17892637bd303464748b505c89190
2025-05-09 00:31:27 +00:00
Rob Mickle
827d125937 Suppress home transitions from non-primary taskbar.
Note: enableOverviewOnConnectedDisplays must be true to enable the
functionality (taskbar button --> home) in the first place

Bug: 378443899
Test: m
Flag: com.android.window.flags.enable_reject_home_transition

Change-Id: Icf5e5939c8e4f59a7d87c30df0d74a151bdbd1d5
2025-05-08 09:08:13 -07:00
Sunny Goyal
57a195b790 Making workspaceData immutable
BgDataModel holds a mutable handle of the data, which ensures that all edits go through this class and there is a single place to keep the repository updated

Bug: 390572144
Test: Updated existing model tests
Flag: EXEMPT refactor
Change-Id: I991b707dd21801d1abd00510f676549947285012
2025-05-07 13:21:21 -07:00
Sunny Goyal
02a41c7e5c Moving PredictionHelper to kotlin
Bug: 390572144
Flag: EXEMPT refactor
Test: atest PredictionHelperTest
Change-Id: If94ae62d7e1412e6760423cf8ab43acba236c3e9
2025-05-06 10:49:30 -07:00
Sunny Goyal
53cc9a7806 Merge "Moving predicted items to ItemIdMap instead of extraItems" into main 2025-05-06 10:29:39 -07:00
Steven Ng
a5bc3c5677 Merge "Use grantManageKeyGesturesToRecents flag for granting recents key gesture events" into main 2025-05-06 04:22:26 -07:00
Sunny Goyal
aef6c7932e Moving predicted items to ItemIdMap instead of extraItems
> This allows the whole workspace model to be contained in itemIdMap instead of spread across multiple data containers
> Deprecating extraItems, all non-workspace data should use separate repositories
> Design: http://go/launchermodel-re-arch?#heading=h.5y8n4r164d5s

Bug: 390572144
Test: atest PredictionUpdateTaskTest
Flag: EXEMPT refactor
Change-Id: I886d0a8d5bbbf9f5c2054d4a2442bf03f9c4eab5
2025-05-05 15:52:37 -07:00
Treehugger Robot
51c9c19e89 Merge "Remove RecentTasksList implement of DesktopVisibilityController" into main 2025-05-02 18:26:06 -07:00
Treehugger Robot
1a597d619b Merge "Remove IME-specific touch passthrough for Taskbar" into main 2025-05-02 14:42:04 -07:00
Liran Binyamin
00dc879e2c Merge "Send bubble bar distance to shell" into main 2025-05-02 14:35:40 -07:00
Treehugger Robot
21779a4192 Merge "Moving WorkspaceItemFactory to dagger as PredictedItemFactory so that it can be reused" into main 2025-05-02 11:46:48 -07:00
Sunny Goyal
46b13eb184 Moving WorkspaceItemFactory to dagger as PredictedItemFactory so that it can be reused
Bug: 390572144
Flag: EXEMPTY refactor
Test: Presubmit
Change-Id: I41c5fea73452d7f4c1fd9980a89bcb7199eb19d7
2025-05-02 08:55:21 -07:00
Liran Binyamin
34024fe26a Send bubble bar distance to shell
We previously sent the top coordinate of the bubble bar to shell.
However when the screen height changes, launcher takes a bit longer
to update than shell. So instead of calculating the top coordinate
on the launcher side, we now send the amount of space between the
bubble bar and the bottom of the screen to shell, where we can offset
that as needed.

Bug: 392893178
Flag: com.android.wm.shell.enable_bubble_bar
Test: manual
       - send some bubbles
       - launch app
       - expand
       - swipe to home
       - fold and unfold
Change-Id: I57b96db49dab1e2304fde8dc55a99eaaf85e40f8
2025-05-02 10:54:39 -04:00
Ajinkya Chalke
98ce0f4ccb Ignore KeyboardQuickSwitchControllerTest to fix robo failure
Bug: 413540825
Flag: EXEMPT ignoring test
Test: atest
Change-Id: I75a15563fbc8cc500df73c9b1d1e9bf2e2d378b8
2025-05-01 16:16:19 -07:00
Tony Wickham
41b1c52c7f Remove IME-specific touch passthrough for Taskbar
It doesn't seem necessary anymore (and anyway, existing cases like
Taskbar being stashed while IME is showing handle this as well).
Removing the specific block fixes a bug where touches were going
to the underlying app even though Taskbar window is fullscreen
while editing a Folder name.

Fixes: 400859085
Test: TaskbarInsetsControllerTest
Flag: EXEMPT bugfix

Change-Id: If30acd0b3b9c3fd0b29b94ca963beb1c70162416
2025-05-01 16:43:31 +00:00
Steven Ng
84cde92450 Use grantManageKeyGesturesToRecents flag for granting recents key gesture events
Reason: Recents app can only listen to key gesture events after ag/33295605, which is gated by a read only flag, com.android.window.flags.grant_manage_key_gestures_to_recents.

Test: atest NexusLauncherTests:QuickstepKeyGestureEventsHandlerTest
Test: atest NexusLauncherTests:AllAppsActionManagerTest
Flag: com.android.window.flags.grant_manage_key_gestures_to_recents
Bug: 406452076
Change-Id: I66f8c9b2f23eb65bafc986321ff971c855ce00a3
2025-05-01 02:54:17 -07:00
Jagrut Desai
f52ffc1232 Auto-Stashing Functionality for Pinned Taskbar
This cl includes :
- Refactor to remove unpinning/pinning in desktop mode with refactor of DisplayController, TaksbarPinningController, and its tests.
- Combined the auto stashing conditions under one method shouldAllowTaskbarToAutoStash() which takes in consideration isTransientTaskbar, isInDesktop, and Always Show Taskbar option is turned on/off in desktop mode.
- enabled taksbar divider popup support in desktop mode.
- Intorduced animation for pinned taksbar when autostadhing is enabled.
- Enable to onSwipeToUnstashTaskbar for TaskbarInputStashController for pinned taksbar in desktop mode.

Test: Presubmit, Unit, Manual
Bug: 381535785
Flag: com.android.window.flags.enable_desktop_windowing_mode
Change-Id: Ie5ecf3a3c72bf8dfadf2d0c908269305fe5bad0b
2025-04-30 10:39:58 -07:00
Sunny Goyal
dd367a2218 Merge "Converting BgDataModel to Kotlin" into main 2025-04-30 10:19:46 -07:00
Sunny Goyal
036ced4703 Converting BgDataModel to Kotlin
This will allow the use of Flows in BgDataModel

Flag: EXEMPT refactor
Bug: 390572144
Test: Presubmit
Change-Id: I8fdd1635a19ae4d75260fb1ddb9cd7ab00cd0496
2025-04-29 15:37:11 -07:00
Ats Jenk
861f887dfe Merge changes I91a3b558,Ifc9c391a,I3da2bc22,Ied187c63,I859b7359 into main
* changes:
  Store bubble bar stashed state during rotation [6/N]
  Restore bubbles without affecting bar state [5/N]
  Do not animate bubbles from initial update [4/N]
  Store and restore selected bubble and expanded state [3/N]
  Do not animate bubble bar for initial state [2/N]
2025-04-29 13:17:42 -07:00
Treehugger Robot
7103e478b3 Merge "Register KEY_GESTURE_TYPE_RECENT_APPS[_SWITCHER] in the quickstep" into main 2025-04-29 04:53:12 -07:00
Ats Jenk
6c7cb1a5f0 Do not animate bubbles from initial update [4/N]
Bubbles that are restored with initial update should not be animated in.
If we restore the bubble bar after rotation, we need to show it
immediately. Attempting to animate the bubbles from initial update
causes the UI to flicker.

Bug: 357115534
Test: on home screen, have bubble bar expanded, rotate device, check
  bubble bar bubbles do not flicker after rotation
Test: have no bubbles in bubble bar, trigger a bubble, check it is
  animated
Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: I3da2bc22588c0f5d2dd9c7a3adfcd2c19c339809
2025-04-28 18:44:26 -07:00
Li Lin
6e718cffb1 Merge "Show Growth Framework nudge driven by nudge payload." into main 2025-04-28 17:01:20 -07:00
Li Lin
0f82810cdb Show Growth Framework nudge driven by nudge payload.
Current implementation of the nudge will show at default position
(bottom left corner) and may extended to other position in the future.
More detail at: go/al-growth-framework-nudge

Bug: 398033012
Test: NudgeControllerTest.*
Flag: com.android.launcher3.enable_growth_nudge
Change-Id: Idff9d62a5b1b26aa1cfbef5817f5425f8e94b7c9
2025-04-28 13:59:30 -07:00
Steven Ng
776e157934 Register KEY_GESTURE_TYPE_RECENT_APPS[_SWITCHER] in the quickstep
Before this change, the overview keyboard shortcut pipeline is as follow:
PhoneWindowManager (System server)
StatusBarManagerService (System server)
CommandQueue (SysUi)
Recent (SysUi)
OverviewProxyRecentsImpl (SysUi)
TISBinder (Quickstep launcher)
This cross-process communication chain through the system server, SysUI, and quick step launcher created significant challenges. Firstly, it complicated efforts to pass additional data to the key gesture handler. Secondly, it was less performant than the streamlined new approach. Lastly, the StatusBarManagerService's responsibilities were ambiguous because it also handled unrelated tasks, such as overview, wallet.

Flag: com.android.window.flags.enable_key_gesture_handler_for_recents
Test: atest NexusLauncherTests:com.android.quickstep.input.QuickstepKeyGestureEventsHandlerTest
Test: atest NexusLauncherTests:AllAppsActionManagerTest
Bug: 406452076
Change-Id: I2899e49c8c0a44c6ad58228db1c9eb587daf68c4
2025-04-28 17:19:35 +00:00
Sunny Goyal
07cfe33533 Renaming CONTAINER_PREDICTION to CONTAINER_ALL_APPS_PREDICTION
This avoids confusion with CONTAINER_HOTSEAT_PREDICTION

Bug: 390572144
Flag: EXEMPT refactor
Test: Presubmit
Change-Id: I0e110e2884dd0566bd2e621e60e7458605b9bad7
2025-04-28 09:30:12 -07:00