Commit Graph

216 Commits

Author SHA1 Message Date
Randy Pfohl ccab1b83e8 Merge "Small refactor to displayDecor listeners" into main 2025-03-20 13:31:08 -07:00
Randy Pfohl 941634bb53 Small refactor to displayDecor listeners
Test: Ran tests and verified callbacks

Flag: com.android.launcher3.enable_launcher_overview_in_window

Bug: 292269949

Change-Id: I33a4219209495f1960094ba766c1d5c82d70d9d1
2025-03-20 15:00:33 +00:00
Tony Wickham 32888e1519 Fix TaskarUIController being wrong with Overview-in-Window enabled
- isHomeAndOverviewSame now returns true for launcher in window
- added isHomeAndOverviewSameActivity to differentiate specifically
  when Overview is hosted in the Launcher activity (currently only
  used for launcherChildTask handling, which we can clean up in a
  follow up change)
- overviewIntent now equals homeIntent for launcher in window
- fixed containerInterface to always use FallbackoverviewInWindow
  when overview-in-window is enabled; this means TaskbarManager
  gets the proper RecentsViewContainer for creating the correct
  TaskbarUIController
- updated getSwipeUpHandlerFactory based on isHomeAndOverviewSame
  change above

Fixes: 401382430
Test: InputConsumerUtilsTest, manual
Flag: com.android.launcher3.enable_fallback_overview_in_window
Flag: com.android.launcher3.enable_launcher_overview_in_window

Change-Id: Ie8edd55b47d6438af36b9d2a788d72d69afa02f3
2025-03-19 11:37:19 -07:00
Sukesh Ram 16e04e84eb [CD Taskbar] Move DisplayController method calls to BaseTaskbarContext
To ensure consistent, controllable Taskbar in Connected Displays Behavior, move all independent calls to the singleton DisplayController's various methods into one place in BaseTaskbarContext, where we have access to the parent context and can override default behaviors of these methods throughout taskbar if in external display.

Flag: EXEMPT not adding new behavior
Bug: 401553128
Test: m
Change-Id: If9efc0cfc18bac3ee75bb64bf5280ea979d1faa2
2025-03-17 03:15:45 -07:00
Sukesh Ram a9b92cb68f Merge "[CD Taskbar] Stop External Taskbar Destruction on Window Close" into main 2025-03-14 00:17:32 -07:00
Sukesh Ram dca6b4da8b [CD Taskbar] Stop External Taskbar Destruction on Window Close
When all windows on external taskbar are closed, exit desktop mode is trigggered. We stop this signal from destroying the external taskbar. This is because we want to be in desktop mode as long as we are connected to a non-mirroring display.

Flag: com.android.window.flags.enable_taskbar_connected_displays
Bug: 401553128
Test: m
Change-Id: I23b61172bb13f1377c4532a56e7838fbe2140f20
2025-03-13 16:15:08 -07:00
Treehugger Robot d7c4922ddf Merge "Enable Perceptible tasks when in desktop mode." into main 2025-03-13 13:09:40 -07:00
Treehugger Robot d8eac67aad Merge "Associate ResetGestureInputConsumer and NO_OP input consumers with display IDs" into main 2025-03-13 11:19:33 -07:00
Sukesh Ram bf31635e25 Merge "Remove Taskbar WindowToken upon onDisplayRemoved" into main 2025-03-13 10:45:40 -07:00
Schneider Victor-Tulias 9419102ec1 Associate ResetGestureInputConsumer and NO_OP input consumers with display IDs
All input consumers should be associated with display IDs, especially since these are used by TouchInteractionService.onConsumerInactive and they will be using per-display objects.

Flag: com.android.launcher3.enable_gesture_nav_on_connected_displays
Bug: 382130680
Test: InputConsumerUtilsTest
Change-Id: Ic14121db2361da1f0a819221b85256b1b3926774
2025-03-13 15:58:30 +00:00
Lingyu Feng e1eaa0e3d6 Remove Taskbar WindowToken upon onDisplayRemoved
This CLs removes DeviceProfile of the display before destroying the
taskbar in onDisplayRemoved(). This makes sure DeviceProfile is null
when destroyTaskbarForDisplay() is called in onDisplayRemoved(), so that
removeTaskbarRootViewFromWindow() can be executed when display mirroring
starts.

Bug: 401180264
Test: adb shell settings put secure mirror_built_in_display 1
Flag: EXEMPT bug fix
Change-Id: I42cb8a1ecfdf1aa57d8ee3d01242a156f8a92cd9
2025-03-13 15:54:33 +09:00
Andy Wickham 250d85698c Merge "Adds all_apps_blur flag." into main 2025-03-12 11:25:50 -07:00
Thu-Huong Vu 09846676b5 Merge "Register SimpleBroadcastReceiver permission." into main 2025-03-12 10:36:22 -07:00
Andy Wickham ccb3a5c25c Adds all_apps_blur flag.
This enables blur both for Taskbar and Launcher, but in slightly
different ways.

For Taskbar All Apps, we apply blur to the overlay window, and
for Launcher All Apps, we utilize the existing DepthController to
blur the wallpaper window. For similicity, we currently fade out
workspace/hotseat to avoid awkward view + window blurs which
don't look that good. This is not the POR, but I think it achieves
most of the effect and will help us get some blur exposure.

Separately I will continue to investigate options such as blurring
workspace in a clever way so it feels blended with the wallpaper,
reusing the Taskbar window and connecting it to LauncherState, or
using a SurfaceView (though I spent quite some time trying this and
it seemed the same as the original issue).

In both cases, we use a 20-30% opacity scrim with a set color, and a
panel that blends 40% opacity of a dark/light color with 10% white.

Also updated some incorrect isTablet checks which really should have
been checking shouldShowAllAppsOnSheet(), which includes the
all_apps_sheet_for_handheld flag.

Demo: https://drive.google.com/file/d/1Ov9Dg3R9YHNfisfxNf97ZIhlDeEA1IWj/view?usp=sharing&resourcekey=0-l_SDpqpS4HtOb10a3b_jNg

Other upcoming improvements: interpolator tweaks, colors of things
inside the app panel (tabs, private space, search results, etc).

Bug: 400827727
Bug: 371343636
Test: Manual
Flag: com.android.launcher3.all_apps_blur
Change-Id: Ic7063cd822f39a5977715b5477f825bf11e57bdf
2025-03-11 23:34:03 +00:00
Sukesh Ram feda773d48 Merge "[CD Taskbar] Make External Taskbar 3-Button & Persistent" into main 2025-03-11 09:32:47 -07:00
Eric Lok dd3456bde0 Enable Perceptible tasks when in desktop mode.
Eligibilty of perceptible tasks is no longer configured per device. It
is now determined based off of system capabilities (supports PC mode or
freeform windows) - "desktop mode".

Bug: 397076790
Test: Manual
Flag: com.android.server.am.perceptible_tasks
Change-Id: I5932d6f82b40cbe7d78b3c485351b3729fcfeb27
2025-03-11 03:24:08 +00:00
Thu-Huong Vu 48dd9eee1c Register SimpleBroadcastReceiver permission.
Update SimpleBroadcastReceiver API to pass in broadcast permission and
register Growth Broadcast Receiver with permission to prevent other apps
from triggering Growth Nudge on their behalf.

Flag: EXEMPT add separately
Test: Manual
Bug: 397739323
Change-Id: I3a9d5e131ced752af0a1b35d400eed6d170fc81e
2025-03-10 23:29:33 +00:00
Sukesh Ram c166a373a9 [CD Taskbar] Make External Taskbar 3-Button & Persistent
The gesture handle still persists in conjunction with the three buttons. In addition to being forced into three button mode, the taskbar on external displays needs to never enter transient mode. More info and before/after images on bug.

Flag: com.android.window.flags.enable_taskbar_connected_displays
Bug: 399718805
Test: Manual
Change-Id: Iff5c297c8ac4823fa24e7a8e4becd0447224cac0
2025-03-10 13:58:21 -07:00
Randy Pfohl d94ca57547 Move flags to desktopmodeflag
Flag: com.android.launcher3.enable_fallback_overview_in_window
Flag: com.android.launcher3.enable_launcher_overview_in_window
Flag: com.android.launcher3.enable_state_manager_proto_log
Flag: com.android.launcher3.enable_recents_window_proto_log

Test: built and ran locally with flags on and off

Bug: b/401073215
Bug: b/401073401
Bug: b/401075030
Bug: b/401076625

Change-Id: I1bd2822d20f677445610b912dd82ff160bff4143
2025-03-10 19:08:55 +00:00
Jagrut Desai bf0727b60d Fix Taskbar not present in Desktop Mode after unlocking
The problem: with taskbar animation for Desktop mode we were checking, if we are already in DW then don't recreate taskbar. This was put in as condition so where DisplayController Info change we don't recreate twice. first being from transilition listerners and second being form info change in display controller.

The solution: Ignore the info change listener when there is already ongoing recreation is in progress.

Test: Presubmit
Bug: 399826787
Flag: EXEMPT bugfix

Change-Id: Ib86e79b3b4c86e515e44d1d1dd7ca98ed694c365
2025-03-05 18:58:38 -08:00
Eric Lok 59d0c16f6b Fix issue where tasks were not reliably marked as Perceptible
Flag enablement is for desktop devices only.

Bug: 395538503
Test: Manual
Flag: com.android.server.am.perceptible_tasks
Change-Id: Ifa13e42de5592bcd5e6a57ab574b6dc4f8710dd9
2025-03-03 08:34:42 +00:00
Treehugger Robot eb808032f1 Merge "Propagate the display id with SysUIState changes to launcher" into main 2025-02-28 22:14:13 -08:00
Toni Barzic 26ad16592a Taskbar on home should open all apps that support drag to workspace
If taskbar is shown on home screen, have the taskbar all apps button
toggle the launcher activity version of all apps UI. This makes the
behavior consistent with how all apps system action (keyboard shortcut)
works, and addresses a gap in functionality where users are unable to
drag apps from the taskbar all apps UI to the workspace.

Bug: 392118517
Flag: com.android.window.flags.enter_desktop_by_default_on_freeform_displays
Test: On desktop device, toggle all apps from taskbar on home screen,
      drag and app from all apps to workspace.
Change-Id: Ida0f230bf38c6e1e35041556f33de1be85daf785
2025-02-28 21:31:46 +00:00
Nicolo' Mazzucato 6bccfb49c2 Propagate the display id with SysUIState changes to launcher
This changes the ILauncherProxy.aidl interface to also allow propagating the display id from SysUI to launcher for each SysUIState update.

The SysUI part of filling SysUI state correctly has not been implemented yet. But for now, only default display flags are propagated anyway.

On the launcher side, the sysui state is propagated correctly to each taskbar instance (there is one for each display)

Bug: 362719719
Bug: 398011576
Bug: 399371607
Test: LauncherProxyServiceTest
Flag: com.android.systemui.shade_window_goes_around
Change-Id: Ic9fa55ca82e4fe395a915c4d611afc8835c5d65d
2025-02-28 10:34:55 +00:00
Thu-Huong Vu 803145f6f5 Merge "Add a growth broadcast receiver in taskbar." into main 2025-02-25 09:45:00 -08:00
Sukesh Ram f1ec7a7699 [CD Taskbar] Refactor TaskbarManager - Add Debugging Support for Stability.
Refactor TaskbarManager & add Debugging Support for Stability. Centralize all existing logging behind existing logging methods.

Bug: 398878697
Bug: 382378283
Bug: 391653300
Test: m
Flag: EXEMPT not adding new behavior
Change-Id: I3f131b5e9ce720140c1d3eb46a53a4763926df83
2025-02-25 02:52:48 -08:00
Treehugger Robot 3ac18ead77 Merge "[CD Taskbar] Create a seperate device profile for external displays." into main 2025-02-25 01:47:59 -08:00
Sukesh Ram 23d9282043 [CD Taskbar] Create a seperate device profile for external displays.
Remove legacy all apps UI from secondary display.

Bug: 398306484
Test: m
Flag: com.android.window.flags.enable_taskbar_connected_displays
Change-Id: I93214fbf7fbda0b2f809e4d72424264276164831
2025-02-24 23:44:56 -08:00
Thu-Huong Vu 4aa26a3944 Add a growth broadcast receiver in taskbar.
The growth broadcast receiver will be used to receive broadcast from
Growth Framework and show a nudge on screen.

Refer to go/al-growth-framework-nudge

Test: Manual
Bug: b/396165728
Flag: com.android.launcher3.enable_growth_nudge
Change-Id: Iebf006c733f6f9d079a4c3b03d78fb7c9dd3e5e7
2025-02-25 00:29:42 +00:00
Jagrut Desai 8b2e5eff9b Desktop Mode Taskbar Recreate Animation
This Cl includes
       - addition of entry/exit callback methods in DesktopVisibilityController.
       - taskbar manager now listens to desktop mode changes.
       - TaskbarBackrgroundRedererer can now individually animation backgrounds for transient and persistent taskbars
       - new channel for taskbar icon alpha added to TaskbarViewController
       - new animated float to handle background alpha while we are recreating taskbar with animation.

Solution:

we use the callabck we get from DekstopVisibilty for entry/exit to first change logic of when we are considered inDesktopMode. Upon entry/exit we notify display controller for info change.
we also at notify taskbar manager who is now a listener to the desktop mode change and start the recreate process. TaskbarManager first animates existing taskbar out of user view and then follows the original recreate flow.

Test: Presubmit
Bug: 343882478
Flag: com.android.window.flags.enable_desktop_windowing_mode
Change-Id: Ib827564cacd194f499e7d9b1965e2bb13e3548ab
2025-02-24 11:59:53 -08:00
Eric Lok 8504c427c7 Merge "Mark tasks on launcher as perceptible" into main 2025-02-19 15:55:22 -08:00
Treehugger Robot af35666c20 Merge "[CD Taskbar] Create new taskbars only when we have system decor" into main 2025-02-19 14:39:03 -08:00
Sukesh Ram 1b4d00e250 [CD Taskbar] Create new taskbars only when we have system decor
Only allow for new taskbars  when wm.shouldShowSystemDecors=true.

Bug: 397250946
Change-Id: I29577224e763ca44a2b1878691dce3e3aa1534ff
Test: m
Flag: com.android.window.flags.enable_taskbar_connected_displays
2025-02-19 11:25:27 -08:00
Lingyu Feng 0392cb8a7d Remove taskbar when display mirroring starts
Bug: 397095099
Change-Id: I0d21650af45aec084c0b48b50e22e8072d3f9192
Test: adb shell settings put secure mirror_built_in_display 1
Flag: com.android.server.display.feature.flags.enable_display_content_mode_management
2025-02-18 22:37:44 -08:00
David Stevens 1189ee33c6 Mark tasks on launcher as perceptible
Mark all tasks on launcher as perceptible tasks.
Flag enablement is for desktop devices only.

Bug: 370890207
Test: Manual
Flag: com.android.server.am.perceptible_tasks
Change-Id: Ic9022dcb07f2fc2d1bd1277bc1a83233ebc5626e
2025-02-17 01:06:13 +00:00
Sukesh Ram edec1fbbfd [CD Taskbar] Staging - Add/Remove Taskbars
Tablet to Monitor connection renders Extended Mode.

Test: Manual
Bug: 390426030
Flag: com.android.window.flags.enable_taskbar_connected_displays
Change-Id: I16e2e4911446c42d5351d7086154d6c720bca284
2025-02-14 01:50:33 -08:00
Adnan Begovic 1b26bb4a74 launcher3: Improve SimpleBroadcastReceiver.
Unless explicitly annotated, parameters in java are by
  default nullable. There are a few cases where a null context
  may be passed to the unregisterReceiverSafely function
  of SimpleBroadcastReceiver.

  To mitigate misuses or incorrect contexts being passed for
  register vs unregister, keep the context as a strong reference
  in the constructor.

  Also added NonNull annotations for any public callsites to
  enforce behavior.

Bug: 395019017, 395966395
Flag: NONE - bug fixed
Test: manual - presubmit
Change-Id: Ie371fa45cadceaf51cf184b446df9123ef27c337
2025-02-12 13:43:34 -08:00
Treehugger Robot 6c33393fe3 Merge "Revert "Refactor all uses of DisplayController singleton INSTANCE"" into main 2025-02-12 12:34:41 -08:00
Sunny Goyal c864281f3c Revert "Refactor all uses of DisplayController singleton INSTANCE"
Revert submission 31490053-DisplayControllRefactorForCD

Reason for revert: Leak is displayProvider

Reverted changes: /q/submissionid:31490053-DisplayControllRefactorForCD

Change-Id: Ib65150cdde765be009b5c4ce960f9fe025de9e60
2025-02-12 10:27:18 -08:00
Treehugger Robot fb683dff89 Merge "Refactor all uses of DisplayController singleton INSTANCE" into main 2025-02-12 05:47:46 -08:00
Will Osborn 5f8b6206ce Refactor all uses of DisplayController singleton INSTANCE
And make DisplayController display id aware

Test: locally tested on Tangor
Flag: EXEMPT refactor
Bug: 392858637

Change-Id: I805cd7323c48a2988c95b9fda7f6cfe4c153860c
2025-02-12 10:46:34 +00:00
Treehugger Robot 1844db355f Merge "Disable All Apps keyboard shortcut during user setup." into main 2025-02-11 19:58:28 -08:00
ELIYAZ MOMIN (xWF) 31d6be8891 Revert "Moving TisBinder to its own class"
This reverts commit ce9ad064d6.

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

Change-Id: I12d1eb66ae03e2638a503c103d0b1fa8a863b6b5
2025-02-11 08:18:42 -08:00
Sunny Goyal ce9ad064d6 Moving TisBinder to its own class
> Using callback patter for various change events instead of routing it
  via  TIS

Bug: 386288280
Test: Presubmit
Flag: EXEMPT refactor
Change-Id: I95577d6a1c17103cb947ef1200c1c22b68fd1d9c
2025-02-11 00:21:51 -08:00
Sukesh Ram 47f0f6dc8e [CD Taskbar] Fix Window Context & Enable External Context adding
Use variable constrained within TaskbarManager for primary displays and add external window contexts as new displays are added. Ensures the lifecycle of window context map isn't tied to the required instances of primaryWindowContext.

Test: m
Bug: 395702003
Bug: 393984037
Bug: 391653300
Flag: com.android.window.flags.enable_taskbar_connected_displays
Change-Id: Idc461b8e6e249060feffac703dff1bf7d5974512
2025-02-10 16:25:16 -08:00
Ajinkya Chalke 4078347cbf [CD][Alt+Tab] Implement skeleton code for KQS on CD
- This change will not render KQS on connected display (CD) even with the flag ON as taskbars are not yet created for connected displays.

Bug: 382762871
Change-Id: Id59fb23630aaf0e74c35818f2a4ca56e5ef2e7bb
Flag: com.android.launcher3.enable_alt_tab_kqs_on_connected_displays
Test: manually built and run the CUJ
2025-02-09 19:06:45 +00:00
Sukesh Ram 5d8e6bcdee [CD Taskbar] New NavigationBarPanelContext per instance of taskbar
Create a new New NavigationBarPanelContext per instance of taskbar object for each new instance of taskbar.

Test: m
Bug: 394421505
Flag: EXEMPT not adding new behavior
Change-Id: I6c82140fac9e6a00f0462ea1a593c13f49c3deee
2025-02-04 18:08:25 -08:00
Brian Isganitis 6dec35f18e Disable All Apps keyboard shortcut during user setup.
Flag: EXEMPT bugfix
Fix: 394238663
Test: go/testedequals
Change-Id: I4a9175613686a358bd62800789b30262d9dc39cb
2025-02-04 19:43:30 -05:00
Treehugger Robot 5c11f67ca3 Merge "[CD Taskbar] Refactor TaskbarManager - Make Window Contexts also follow map pattern" into main 2025-01-31 18:02:23 -08:00
Sukesh Ram 2f74082b3b [CD Taskbar] Refactor TaskbarManager - Make Window Contexts also follow map pattern
Make Window Contexts also follow map pattern.

Flag: EXEMPT not adding new behavior
Bug: 391706879
Test: Manual
Change-Id: Ib0672e653b9dbfcb3597210ca244f110515cd4dc
2025-01-31 21:53:46 +00:00