Commit Graph

20 Commits

Author SHA1 Message Date
Alex Chau 13b7ceeff0 Clean-up unnecessary desktop windowing flag usage
- mDesktopVisibilityController will now be null if desktop windowing flag is disabled
- As a result, all code that uses mDesktopVisibilityController no longer need to check desktop windowing flag
- DesktopTaskView/DesktopTask only populates when flag is enabled, so we don't need to check flag if we already check DesktopTaskView/DesktopTask
- Removed the flag check in SplitToWorkspaceController, as we shouldn't enable split from workspace base on desktop windowing, contextual split already have its own flag
- Also avoid creating GroupTask or DesktopTask for freeform tasks when flag is off, to avoid a crash in RecentsView

Bug: 332655617
Test: manual with desktop windowing flag on/off
Flag: ACONFIG com.android.window.flags.enable_desktop_windowing_mode DEVELOPMENT
Change-Id: I0e45f73ad2b0d99dfb4ec3215f973679ca93957c
2024-04-04 12:21:43 +01:00
Alex Chau 59781a7d79 Remove DesktopTaskView.isDesktopModeSupported
- Use Flags.eanbleDesktopWindowingMode directly
- Also clean up unnecessary and improper flag usage

Bug: 309008406
Flag: ACONFIG com.android.window.flags.enable_desktop_windowing_mode DEVELOPMENT
Test: presubmit
Change-Id: I86ce317ce577f279d2ce819d6dc1738204c2631e
2024-03-21 14:05:27 +00:00
Orhan Uysal 6d73b0a201 Make taskbar visibilty change only in desktop.
Make the DesktopVisibilityController not change the taskbar visibility
when there are no freeform tasks visible.

Test: Go from freeform to fullscreen, observe taskbar doesn't pop up
Bug: 323129412
Flag: ACONFIG com.android.wm.shell.enable_desktop_windowing DEVELOPMENT
Change-Id: I67f246cfc2ddc198326c093fd0af83886de8b0a9
2024-02-22 17:13:42 +00:00
Ivan Tkachenko b6fb50b676 Fix RemoteTargetGluer crash
- Updated DesktopVisibilityController to track the numer of visible
  freeform windows, and use it to initialize RemoteTargetGluer.
- Updated IDesktopTaskListener to observe visible freeform windows count
- Added resize remoteTargetHandles logic in RemoteTargetGLuer to update
  handles size with targets.apps.size on assign.
- This is a workaround and should be removed when RemoteTargetGLuer
  intialisation logic is refactored.

Bug: 288121021
Flag: None
Test: Manual
Change-Id: I0297616b4a140fac810c9736bddf6f817d0a98ed
2024-01-29 11:16:39 +00:00
Tony Wickham 4e7411c54c Temporary workaround for taskbar hiding in Desktop
Taskbar still hides during the transition, but then reappears
after settling.

Flag: LEGACY ENABLE_HOME_TRANSITION_LISTENER enabled
Bug: 314207404
Test: manual
Change-Id: Ie3d29b3d40e513f39cb34176baa781c9f2853e57
2024-01-10 19:59:25 +00:00
Ats Jenk 5c25c3a19d Use aconfig flag for desktop mode
Refactors all flag access in Launcher to be from DesktopTaskView and using a method instead of a static field.
Also using static import for the method so if we need to move it, only imports needs to be updated.

Bug: 304778354
Flag: ACONFIG com.android.wm.shell.enable_desktop_windowing TEAMFOOD
Test: enable the aconfig flag, check that desktop windowing is available

Change-Id: Ia2bdfd865802a635878d72cfb5a90c21dad6ed08
2023-10-27 10:58:07 -07:00
Ats Jenk 0927251a7b Account for freeform tasks being visible in overview
When live tiles are enabled, desktop tasks remain visible while in
overview. This is due to tasks remaining in running state.
Update DesktopVsibilityController to handle this case. If in freeform,
it should return that freeform tasks are not visible to any callers.
Also move launcher state handling to inside the controller so we don't
have this handling in other places.
Introduce separate handling of background and overview state. In
background state we want to keep the freeform task visibility state
matching the actualy visibility. And show the launcher views and resume
the activity.
In overview state we want to override the freeform visibility and show
launcher views.

Bug: 297590571
Test: open an app on desktop
      - swipe up for taskbar multiple times, observe that we remain on
        desktop
      - swipe up for taskbar and launch an app, observe it launches on
        desktop
      - swipe up to recents, observe that recents UI is shown and task
        remains running
      - swipe up to recents, launch desktop again from recents
      - swipe up to recents, launch another fullscreen app from recents
      - swipe up from a fullscreen, launch desktop from recents
Change-Id: Id5cef7111da6929c8435ef9d221db1abd8361b15
2023-10-05 15:53:42 -07:00
Ats Jenk 521a7e428c Fix flicker when swiping from desktop to home
When swiping up from desktop, we need to temporarily show launcher views
when user may go to overview. Hide them again when user just swiped up for
taskbar. But not hide them user is swiping home.
Previously we were always hiding launcher views when user swiped up from
desktop and that led to home or transient taskbar.
This change ensures that we only change the visibility of launcher views
when overview ui is hidden, freeform tasks are still visible, and
gesture has ended.
Otherwise there were flickers when, after swiping home, we were hiding
launcher views and then showing them again shortly after as the freeform
tasks were now hidden.

Bug: 297562634
Test: be on desktop with some open apps
      - swipe up to go home, observe that there are no flickers from
        home screen icons, widgets or hotseat
      - swipe up for transient taskbar, observe desktop apps remain
        visible
      - swipe up to go to overview, observe the other fullscreen apps
        flow in from the side

Change-Id: I14f9f95a3a22fbca6878ecea24848f271dc951d7
2023-09-11 21:43:02 +00:00
Sukesh Ram 3f2338a8e8 Remove Windowing Prototype 1 from Codebase
Refactor codebase to remove Proto1 as it is no longer supported.

Test: aTest WMShellUnitTests
Bug: 297217817
Change-Id: Ifaf67754c048d913fe203f4b34efc3c9c611039c
2023-08-30 17:40:13 +00:00
Ats Jenk 97c6160359 Merge "Fix tap on navbar handle when on desktop" into udc-qpr-dev 2023-08-01 17:28:57 +00:00
Ats Jenk 7d72bcd46e Fix tap on navbar handle when on desktop
Tapping on navbar handle was hiding the stashed taskbar handle.
When tappin on navbar handle, it starts the recents animation. Which
gets cancelled. Normally, the fullscreen app being visible, it means
launcher activity will be paused after. But when on desktop, launcher is
visible in the background and we need to manually set it to paused
state.
When recents gesture is cancelled after navbar handle tap, the gesture
end state is null. Detect this in DesktopVisibiltyController and mark
launcher as paused in this case.

Bug: 286140120
Flag: persist.wm.debug.desktop_mode_2
Test: open an app on desktop, tap on navbar, observe that user remains
      on desktop
Change-Id: Iee915026265721d42a0b722d6b1595521f20a59a
2023-07-28 17:33:00 -07:00
Ats Jenk cf25610a28 Flag stashing desktop when going home
Put logic to stash desktop apps behind a flag. Turn it off by default.

Bug: 292109910
Flag: persist.wm.debug.desktop_stashing
Test: turn off the flag, open an app on the desktop and go home
      observe that user is taken to home screen and subsequent launches
      are in full screen
      turn on the flag, open app on the desktop and go home
      observe that there is a toast shown for desktop and next app is
      launched to desktop
Change-Id: Ic6f9a3644bb09d4fb877f4694843a7c20969f925
2023-07-25 14:20:00 -07:00
Ats Jenk da7e55591e Use listener to track desktop task visibility in launcher
Launcher registers a listener with WMShell to receive updates about
desktop stashed state. The same listener can be used to receive updates
about desktop visibility.
Previously launcher was relying on sysui state flag for desktop
visibility. But this flag is not checked when launcher starts. Only
updates are handled. When launcher restarts and desktop is visible,
launcher state was not correctly set.
This listener is "sticky", meaning when a listener registers, it will
receive a callback with the current value. This allows launcher to
update its state on start.

Flag: persist.wm.debug.desktop_mode_2
Bug: 280490493
Test: move an app to desktop, observe launcher icons are hidden
Test: swipe home from a desktop app, observe launcher icons shown
Test: while desktop app is open, change system theme to dark or light,
  observer launcher is restarted and icons remain hidden
Change-Id: Id8be1989b32d9ccd2e0539b65529fed096342ac3
2023-06-02 23:20:58 +00:00
Ats Jenk 9f11519936 Show a persistent toast when selecting desktop apps on home screen
When desktop stashed state changes, show a persistent popup on home
screen to select an app that will be launched on desktop.

Flag: persist.wm.debug.desktop_mode_2
Bug: 261234402
Test: launch an app on desktop, swipe home, observe the popup, launch an
  app, observe app is launched on desktop and popup is hidden
Test: stash desktop apps by going home while on desktop, press on the
  "exit desktop" button in the popup, observe popup is hidden, launch an
  app, observe it is launched in fullscreen

Change-Id: I66fe0ab977fa7b2059f149d7d0ab0cf92192c967
2023-05-18 09:31:27 -07:00
Ats Jenk 7cd5a681f7 Stash desktop apps on home gesture or taskbar home button press
When we detect the home gesture or tap on home button in taskbar,
check if desktop apps are visible. If they are, signal WMShell
to stash the desktop apps.

Flag: persist.wm.debug.desktop_mode_2
Bug: 261234402
Test: have gesture nav enabled, put an app on desktop and swipe up to
  home, verify toast is shown, and next app launches to desktop
Test: have 3-button nav enabled, put an app on desktop and press home,
  verify toast is shown, and next app launches to desktop
Change-Id: I824e640bfafa20cb3451cbd8f035fe9dca18094f
2023-05-16 11:57:50 -07:00
Ats Jenk d9f6d4e31c Fix invoking transient taskbar in desktop windowing prototypes
When transient taskbar is invoked, it starts the recents animation.
Recents animation triggers the launch of launcher activity. We need to
ensure that after recents animation is cancelled (since the gesture was
only for taskbar), we bring the desktop tasks back to front.

When the transient taskbar gesture finishes, we need to ensure that
launcher state is restored to normal. With fullscreen tasks, launcher
activity in stopped after gesture finishes as a fullscreen task is on
top. This stop triggers the launcher state to return to normal.
When freeform tasks are visible on top of launcher, launcher activity is
not stopped. This means we have to manually move launcher to normal
state after transient taskbar gesture finishes.

Bug: 267364407
Test: enable proto 1, switch to desktop mode and open some tasks, swipe
  up for transient taskbar, swipe up to recents view
Test: enable proto 2, move a task to desktop, swipe up for transient
  taskbar, swipe up to recents view
Change-Id: I712bc5086407c26779638d824f34674f7db1ff51
2023-02-08 15:16:43 -08:00
Ats Jenk f6ba9499de Fixes to support transient taskbar in desktop mode
Track gesture progress in desktop visibility controller. We need to
allow launcher to resume when gesture is in progress and freeform tasks
are visible.
Update overview state handling in desktop visibility controller. When
overview is enabled, launcher should be made visible, regardless of
freeform state. When exiting overview state, check freeform state to see
what should be shown and enabled.

Bug: 263264985
Test: manual, enable transient taskbar, move app to desktop, invoke transient
taskbar
Test: manual, enable transient taskarb, enable desktop mode, invoke
transient taskbar
Test: manual, disable transient taskbar, move app to desktop, swipe up
to overview
Test: manual, disable transient taskbar, enable desktop mode, swipe up
to overview

Change-Id: I63000441d9cf72769e6efb9d247ab4112c01839d
2023-01-04 17:27:54 -08:00
Ats Jenk 0ea4768a02 Taskbar fixes when apps move to desktop and back
Fixes to taskbar state when tasks are moved to desktop and fullscreen.

When freeform tasks are visible and we start a new task from taskbar, it
first launches in fullscreen. Transition handler in WMSHell switches it
to freeform as needed. This switch causes launcher activity to be paused
and then resumed. Resuming launcher activity while freeform tasks are
visible, puts the launcher into an incorrect state. (Launcher should
appear paused while freeform tasks are visible).

When a freeform task switches to fullscreen, freeform tasks are no
longer visible. This causes us to resume the launcher activity. We
should not do that if a fullscreen task is visible as it puts the
launcher into an incorrect state. It appears resumed even though the
activity is paused. Added a check to DesktopVisibilityController that
checks if the activity is actually resumed before marking it appear as
resumed.

Test: manual, switch a task to freeform, launch another freeform task
  from taskbar, taskbar should continue to be available
Test: manual, switch a task to freeform, switch the task back to
  fullscreen, taskbar should continue to be available
Bug: 261234278

Change-Id: Ia8d208619fabfcc9bffff6d8d227b236cb62a00c
2022-12-20 10:34:07 -08:00
Ats Jenk 8f5b9dd833 Check for both proto flags for common logic
Desktop mode has prototype 1 and prototype 2.
Check for both flags when logic is shared.

Bug: 260645044
Test: manual, check desktop mode 1 works
Change-Id: I40e84440222a9d5f007c2450606cd7c8f9628da2
2022-12-07 10:12:37 -08:00
Mady Mellor 9a90c2d521 Hide launcher when freeform tasks are visible
This CL introduces a new controller to manage the visibility of the
launcher workspace when desktop mode is active and freeform tasks
are visible.

This controller will be notified when the sysui state flag related
to freeform task visibility is changed.

The controller will modify the workspace visibility as well as
the flags on the activity indicating if it's been paused / resumed
based on freeform tasks being visible or not.

Bug: 245569277
Test: manual -  enable desktop mode and open some freeform tasks
             => observe that the contents of launcher is hidden and
                taskbar shows
             -  remove all of the freeform tasks
             => observe that the contents of launcher reappears along
                with the hotseat.
Change-Id: I378ab97b40cbb954a06f4e2426b195efddad905c
2022-10-21 10:06:54 -07:00