- 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
- 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
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
- 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
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
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
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
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
Refactor codebase to remove Proto1 as it is no longer supported.
Test: aTest WMShellUnitTests
Bug: 297217817
Change-Id: Ifaf67754c048d913fe203f4b34efc3c9c611039c
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
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
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
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
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
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
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
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
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
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