Commit Graph

13402 Commits

Author SHA1 Message Date
Jordan Silva ac49e0cb58 Fetch icon and thumbnail for completed task to prevent stale data
The data returned from getAllTaskData can sometimes replace recently fetched thumbnail and icon data with a null value due to a race condition. This occurs when getAllTaskData results are returned after, or at the same time as, the thumbnail and icon data is fetched. Consequently, the information displayed to the user is incorrect and remains so until the user re-enters Overview or scrolls. To address this issue, we propose to re-request the task data for requests that have already been completed.

Change-Id: I99ee7f38abab3c283c9f82bce7b1d069575ddc6e
Fix: 392069389
Doc: go/launcher-overview-unified-taskviewmodel
Flag: com.android.launcher3.enable_refactor_task_thumbnail
Test: OverviewImageTests
Test: TasksRepositoryTest
2025-01-27 07:14:08 -08:00
Cosmin Băieș 29d67ee492 Merge "Don't show both the IME Switcher and A11Y buttons" into main 2025-01-27 03:43:21 -08:00
Treehugger Robot 9815c49644 Merge "Add bug fix flag to guard enabling start launch transition from taskbar." into main 2025-01-27 03:31:27 -08:00
Jordan Silva fe4152e608 Merge "Refactor: Remove TaskThumbnailViewModel and introduce TaskViewModel" into main 2025-01-27 03:09:37 -08:00
Cosmin Băieș f90ebe5f70 Don't show both the IME Switcher and A11Y buttons
The IME Switcher shares the same spot with the accessibility button on
the navigation bar. In the previous implementation of the NavigationBar,
if the a11y button is visible, the IME Switcher button would not be.

With the recent unification of the navigation bar and the taskbar, both
buttons could be made visible at the same time. This fixes the taskbar
logic to only show the IME Switcher button when it should be visible and
the a11y button is not visible. This logic is only applied on phone
mode, the only case where the buttons overlap.

Flag: EXEMPT bugfix
Bug: 378803994
Test: switch to 3 button nav, show accessibility shortcut and dock it to
  the navigation bar, show the IME with at least two keyboard langauges,
  observe that only a11y button becomes visible
Change-Id: Ifc082d51e02d74f7dbf4516814121b67c0a6aa1a
2025-01-27 10:43:27 +01:00
Vania Desmonda 88c11031f9 Add bug fix flag to guard enabling start launch transition from taskbar.
Flag: EXEMPT adding flag
Test: EXEMPT adding flag
Bug: 391641359
Change-Id: Ia21f94bb28549700efce9967c79303b97224abe5
2025-01-27 06:24:50 +00:00
Lingyu Feng 9d98fb90c0 Merge "Add onDisplayRemoveSystemDecorations to TouchInteractionService" into main 2025-01-26 17:30:49 -08:00
Cosmin Băieș 1787eda528 Propagate IME back disposition state to SystemUI
Previously the navigation bar and taskbar were incorrectly using the
back dispositon state as the source of truth for the IME visibility.
While this can only be set while the IME is visible, it can (and is)
also unset despite the IME still being visible. This was fixed in [1].

While the taskbar previously did not take into account the back
dispositon state, by the IME visibility changing, the rotation of the
back button would also change, leading to an equivalent state. However,
with the fix from [1], this would no longer happen, with one scenario
being showing the IME and then the IME swithcer menu, which temporarily
unsets the back disposition mode while the menu is visible.

This propagates the back disposition state to SystemUI, so taskbar can
respond to changes in this value, rather than in the IME visibility.

  [1]: Ic57cea49f5ff49132802083b4f0c9b0e82db1cf7

Flag: EXEMPT bugfix
Test: switch to 3 button nav, show IME, show IME Switcher menu,
  observe back button rotation
  atest NavigationBarTest#testSetImeWindowStatusSysuiState_ImeVisibleImeSwitcherButtonVisible
  NavigationBarTest#testSetImeWindowStatusSysuiState_ImeVisibleImeSwitcherButtonNotVisible
  NavigationBarTest#testSetImeWindowStatusSysuiState_ImeNotVisibleImeSwitcherButtonVisible
  NavigationBarTest#testSetImeWindowStatusSysuiState_ImeVisibleBackDispositionAdjustNothing
Bug: 366129400
Change-Id: Ib05f9263afb754724021b5f3e48520eff5dad398
2025-01-25 01:18:11 +01:00
Cosmin Băieș e05eaa3cf0 Rename IME_SHOWN states to IME_VISIBLE
This renames the SysUI states related to the IME and IME Switcher button
visibility from "shown" to "visible", to maintain consistency.

Flag: EXEMPT refactor
Bug: 366129400
Test: n/a
Change-Id: I45219e62b633ca984de98df43f5c238604b38109
2025-01-25 01:18:11 +01:00
Cosmin Băieș c4ddddc2aa Remove redundant references to IME Switcher vis
The taskbar and bubble bar were using both the visibility of the IME and
that of the IME Switcher button to determine whether these bars should
be stashed. However, the IME Switcher button will never be visible while
the IME is not visible, so using its visibility is redundant.

This changes the stashing logic to only take into account the IME
visibility. Note, the IME is also considered visible even when a
hardware keyboard is connected, regardless of any UI being visible or
not. This visibility state determines various system behaviours.

Flag: EXEMPT refactor
Bug: 366129400
Test: open the IME and IME Switcher menu on large screen devices;
  observe taskbar behaviour
Change-Id: Ibcd16896582ca575538d8c1c3d2ab879090d075c
2025-01-25 01:18:11 +01:00
Cosmin Băieș ee04a3e0fd Remove unused FLAG_ROTATION_BUTTON_VISIBLE
The code related to this flag was removed in [1], but the flag
declaration, and two no-op usages were left over.

  [1]: I1de7fa061a6c6aba9f949a0bcf8cfced84273e3f

Flag: EXEMPT cleanup
Test: n/a
Bug: 366129400
Change-Id: If3d0751e0a9035ba8b0c66250df9339856788171
2025-01-25 01:18:11 +01:00
Eghosa Ewansiha-Vlachavas 432544a529 Merge "[2/n] Hide desktop button in overview for incompatible tasks" into main 2025-01-24 13:01:25 -08:00
Treehugger Robot 196ba82377 Merge "Removing redudntant objects from BgDataModel" into main 2025-01-24 12:00:33 -08:00
Treehugger Robot d77eed56f4 Merge "Fix for InteractionJankMonitorWrapper NPE" into main 2025-01-24 11:52:09 -08:00
Jagrut Desai 76545448dd Merge "Remove Forced Taskbar Hidden accessibility announcement and forced accessibility focus" into main 2025-01-24 11:36:52 -08:00
Jordan Silva 3bf3740891 Refactor: Remove TaskThumbnailViewModel and introduce TaskViewModel
- Remove TaskThumbnailViewModel and replace it with TaskViewModel
- Introduce TaskUiStateMapper class to map between TaskData and TaskThumbnailUiState
- Improve TaskView by introducing TaskViewModel and delegate to TaskContainer to show changes
- Refactor TaskThumbnailView to simplify its responsability and be able to receive TaskThumbnailUiState.
- Add TaskViewModel test and TaskUiStateMapper tests

Bug: 390583187
Doc: go/launcher-overview-unified-taskviewmodel
Flag: com.android.launcher3.enable_refactor_task_thumbnail
Test: OverviewImageTests
Test: TaskViewModelTest
Test: TaskUiStateMapperTest
Test: TaskThumbnailViewModelImplTest
Test: TaskThumbnailViewScreenshotTest
Change-Id: I90bb08d377d7a24ca803c552e0cf3897c8888b76
2025-01-24 11:36:22 -08:00
Jagrut Desai defdc6c2d8 Remove Forced Taskbar Hidden accessibility announcement and forced accessibility focus
This cl also removes forced hidden annoucement and focus for Bubble Bar since they are annouced together.
we are keeping the tasksbar show annoucement and focus since it is only way to notify user of taskbar being shown on screen until we figure out proper solution with talkback team.

Test: Manual, Presubmit
Bug: 383928453
Flag: EXEMPT bugfix
Change-Id: I2c32ea393da2509af49e2fce795759a6903b0451
2025-01-24 09:20:07 -08:00
Will Osborn bd40e543dc Fix for InteractionJankMonitorWrapper NPE
Test: trigger overview locally with recents-in-window flags on
Flag: EXEMPT bugfix
Bug: 366024009
Change-Id: I013ccc93354d6789a9b2633bdc90cce89d83cdcb
2025-01-24 15:22:01 +00:00
Treehugger Robot b22158206b Merge "Introduce SingleTask and SplitTask" into main 2025-01-24 02:59:37 -08:00
Treehugger Robot 9bc36997c4 Merge "[CD Taskbar] [CD Taskbar] Refactor TaskbarManager dump" into main 2025-01-23 18:37:03 -08:00
Treehugger Robot 446270599c Merge "Add debugging logs to understand why taskbar root layout would be null" into main 2025-01-23 18:28:18 -08:00
Mykola Podolian 10f4747b69 Merge "IPC for app icons drag events over the Bubble Bar" into main 2025-01-23 17:52:50 -08:00
Sukesh Ram 28b7077a38 Add debugging logs to understand why taskbar root layout would be null
Add debugging logs to understand why taskbar root layout would be null.

Flag: EXEMPT not adding new behavior
Bug: 382378283
Test: Manual
Change-Id: I1140360274667a6c3766f03e1f5f1592c09e13e1
2025-01-23 16:05:07 -08:00
Ahmed Fakhry f87e44376b Introduce SingleTask and SplitTask
See go/refactor-group-task for details. This CL introduces `SingleTask`
and `SplitTask` and makes `GroupTask` abstract.

Bug: 388593902
Test: m
Flag: EXEMPT pure refactor with no behavior change.
Change-Id: I96d0eb0600420ce5cb2fff30ed9d766224b6961e
2025-01-23 23:48:01 +00:00
Cosmin Băieș c48cc53bc2 Merge "Clarify state names for IME Switcher button" into main 2025-01-23 15:42:45 -08:00
Sukesh Ram 7d916904de [CD Taskbar] [CD Taskbar] Refactor TaskbarManager dump
Update debugging logs for TaskbarManager to be display specific.

Flag: EXEMPT not adding new behavior
Bug: 390004132
Test: Manual
Change-Id: I0222e3bce94bee410b3572d1bc820cc71a2c1a68
2025-01-23 14:28:00 -08:00
Jagrut Desai 7efe9257ce Merge "Fix Taskbar existing app launch in DW" into main 2025-01-23 13:49:20 -08:00
Sunny Goyal 777324ed15 Removing redudntant objects from BgDataModel
Bug: 390572144
Flag: EXEMPT refactor
Test: Updated model tests
Change-Id: Ied8a0bfdbfd324b9fb05724f1fcf67238aa37d16
2025-01-23 12:55:37 -08:00
Uwais Ashraf c1f65d0d7a Merge "Only cancel CoroutineScope of TaskThumbnailView instead of removing from RV." into main 2025-01-23 12:16:50 -08:00
mpodolian 5d904e0f67 IPC for app icons drag events over the Bubble Bar
Added an IPC call to inform the Bubble Bar in the launcher process
of drag events from the shell.

Bug: 388894910
Flag: com.android.wm.shell.enable_bubble_bar
Test: Manual. Check that events from the shell process successfully
reach the launcher process.

Change-Id: I01615911ce7e4250138aedaa5823f639b9163ff0
2025-01-23 11:10:18 -08:00
Treehugger Robot 9bd2d14fa4 Merge "Add SysUiProxy multiple desktops APIs" into main 2025-01-23 11:08:50 -08:00
Treehugger Robot ed5910ad52 Merge "Revert "Revert "Migrating RecentsAnimationDeviceState and depend..."" into main 2025-01-23 11:02:36 -08:00
Treehugger Robot 4e09250fd5 Merge "Convert TaskViewTouchController to Kotlin." into main 2025-01-23 09:51:04 -08:00
Jagrut Desai c900bda8da Fix Taskbar existing app launch in DW
The issue: we were blocking the opening of existing app in when multi-instance flag was tunred on.

The Solution:  we don't actually need to do this since, the multiple taskbar icons of the same app are blocked pm TaskbarRecentsAppsController

Test: Manual, Presubmit
Bug: 391143101
Flag: EXEMPT bugfix
Change-Id: Ic2aa7cca4fd18d9b8cf48a2778c6e666241a4f7f
2025-01-23 09:29:36 -08:00
Eghosa Ewansiha-Vlachavas c808bb1b23 [2/n] Hide desktop button in overview for incompatible tasks
Flag: NONE bug fix
Test: atest -c NexusLauncherTests:com.android.quickstep.DesktopSystemShortcutTest,
      atest -c NexusLauncherTests:com.android.quickstep.ExternalDisplaySystemShortcutTest
Fixes: 389923274

Change-Id: I82acc85ca57b5454f9eeedd800dcd7da9990f9c8
2025-01-23 17:14:52 +00:00
Uwais Ashraf b7a66372ff Only cancel CoroutineScope of TaskThumbnailView instead of removing from RV.
Removing TVs from RV was causing failures of CUJs (only in tests) when enabling TTV flag.

Bug: 390156722
Flag: com.android.launcher3.enable_refactor_task_thumbnail
Test: TaplTestsQuickstep.testOverview
Test: TaplTestsKeyboardQuickSwitch.testLaunchOverviewTask_fromHomeAllApps
Change-Id: I0aae99891941c04b543d1e29db9d6d87bc89ed8e
2025-01-23 16:56:13 +00:00
Ahmed Fakhry 1d112be382 Add SysUiProxy multiple desktops APIs
Add two new APIs for multiple desktops:
- `createDesk()`.
- `activateDesk()`.
Currently these APIs are not hooked up yet. This will be done in
follow-up CLs.

Also removes the unused `getVisibleTaskCount()` API.

Bug: 390715986
Test: m
Flag: com.android.window.flags.enable_multiple_desktops_frontend
Change-Id: I363f0e520f649572156047ebcd4ed6e542d77dc1
2025-01-23 16:41:30 +00:00
Artsiom Mitrokhin 8519be8f3a Merge "Use conditional stroke color for taskbak overflow entrypoint" into main 2025-01-23 08:31:28 -08:00
Treehugger Robot 86864f95c3 Merge "AllApps tray icon tap: use showDesktopApp() for existing Desktop tasks" into main 2025-01-23 03:34:55 -08:00
Pat Manning b426809ced Convert TaskViewTouchController to Kotlin.
Flag the change to use the previous class.

Fix: 391107339
Test: Manual.
Flag: com.android.launcher3.enable_expressive_dismiss_task_motion
Change-Id: Icf139fc0d6744766da548f2137597b2b020863c1
2025-01-23 10:57:17 +00:00
Treehugger Robot d32348bddb Merge "Show desktop tasks when taskbar is pinned on home" into main 2025-01-23 02:10:17 -08:00
Lingyu Feng 779bd3cd46 Add onDisplayRemoveSystemDecorations to TouchInteractionService
onDisplayRemoveSystemDecorations() is a new method in IOverviewProxy.aidl

Bug: 352461502
Flag: com.android.server.display.feature.flags.enable_display_content_mode_management
Test: manually (adb shell settings put secure mirror_built_in_display
{1|0})

Change-Id: I42d96ef27fd62d35ae1ca6134bd74752de3a2b5d
2025-01-23 01:30:20 -08:00
Gustav Sennton 1427068342 AllApps tray icon tap: use showDesktopApp() for existing Desktop tasks
When tapping an icon in the AllApps tray, before this CL, we would use
the WM Shell API startLaunchIntentTransition() to launch a task for that
app icon. However, this would break the window limit logic since in WM
Shell (startLaunchIntentTransition()) we think we're launching a new
task, when in fact we're just moving an existing one to the front.
With this CL we instead reuse the showDesktopApp() API whenever the app
we're trying to launch has an already visible / minimized Desktop task.

Bug: 391365151
Test: launch visible Desktop app from AllApps - doesn't overtrigger
window limit
Flag: com.android.window.flags.enable_desktop_app_launch_transitions_bugfix

Change-Id: Ia3638012226fe28c853ec6cfd0523a8fb23b8961
2025-01-23 00:46:08 -08:00
Sunny Goyal a5fef475a5 Revert "Revert "Migrating RecentsAnimationDeviceState and depend..."
Revert submission 31416515-revert-31332401-recents-device-state-LXBUANUQFL

Reason for revert: Fixing build breakage and resubmitting

Reverted changes: /q/submissionid:31416515-revert-31332401-recents-device-state-LXBUANUQFL

Change-Id: I3b89356df57f1e7ff1a9e364c0d766578e23798c
2025-01-22 18:31:06 -08:00
Toni Barzic f817372651 Show desktop tasks when taskbar is pinned on home
Updates taskbar and KQS to show (running) desktop tasks when taskbar is
shown on the home screen - adds `shouldShowDesktopTasksInTaskbar` method
to TaskbarDesktopModeController to be used instead of
`areDesktopTasksVisible*()` to determine whether to show desktop tasks
in the taskbar. The method, in addition to desktop tasks visibility,
also considers whether taskbar should be shown on the home screen, and
whether current launcher state is home.

The launcher state is fetched from `TaskbarStashController`, which
already keeps track of this state. This is likely not ideal, but can be
removed in the long term - see http://b/390665752.

Furthermore, updates ReventsModel login not to always filter out desktop
tasks with no non-minimized tasks (which is currently expected behavior
in overview) in `getTasks()`. The filtering is now done by the filter
passed to `getTasks()` method, instead of when processing tasks in the
background. The filter used by default is updated to filter out such
desktop tasks, but callsites from `KeyboardQuickSwitchController` and
`TaskbarRecentAppsController` are updated to use an empty filter, so
they can display desktop tasks when they're all minimized.

Bug: 376711722
Bug: 390665160
Test: Manual on desktop device - verify that taskbar and KQS when shown
on home screen display desktop tasks, including the case all tasks are
minimized.
Flag: com.android.window.flags.enter_desktop_by_default_on_freeform_displays

Change-Id: Iabc22e20bf64aa9a826b4a5952f1edc6ea639cdc
2025-01-22 22:36:02 +00:00
Liana Kazanova (xWF) 9b0a007ae3 Merge "Revert "Migrating RecentsAnimationDeviceState and dependent obje..."" into main 2025-01-22 14:05:04 -08:00
Liana Kazanova (xWF) fa30e3fc0e Revert "Migrating RecentsAnimationDeviceState and dependent obje..."
Revert submission 31332401-recents-device-state

Reason for revert: DroidMonitor: Potential culprit for http://b/391684419 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Reverted changes: /q/submissionid:31332401-recents-device-state

Change-Id: I3986328ee3aa8ebb822f7ef05b9f80ef68872aef
2025-01-22 13:50:08 -08:00
Vinay Joglekar 75a07a3e2d Merge "Consume callback sent from shell when overview task is entered desktop mode from desktop menu" into main 2025-01-22 13:32:46 -08:00
Treehugger Robot 966e15e7c8 Merge "Remove TEMP_PARAMS and instead create a new FullscreenDrawParams in constructor." into main 2025-01-22 12:22:52 -08:00
Anushree Ganjam efc40ac203 Remove TEMP_PARAMS and instead create a new FullscreenDrawParams in constructor.
Bug: 361850561
Test: Manual
Flag: EXEMPT Dagger
Change-Id: I5d2c289e58ff6151f651a5a6ec6bd8f567cb93d1
2025-01-22 10:16:40 -08:00