* Moving things out of RecentsView to avoid
dependency on a non-testable class
* Also helping prevent bloating RecentsView.java
Bug: 266482558
Test: Single Chrome instance in recents. Initiate split
with Chrome from workspace, tap on Chrome again in Taskbar,
ensure no crash.
Change-Id: I99ec704479ffaa860f4d80c2cb9f54182f31f41a
- Added support for escape(backtick on some keyboards) keyboard keys
- Added support for d-pad left and right keyboard keys
- Fixed janky behaviour when quick switching too quickly.
- Removed unused code
Bug: 269618928
Test: Tried quick switch very quickly, tried escape, d-pad left and right keys in RTL and LTR modes
Change-Id: Ie03207cb349891e9c2de18502f3f65b7c8f9c018
Preparatory change for adding the KeyboardQuickSwitchView and associated flows.
Test: Manually tested alt-tab and alt-shift-tab in and out of overview on a tablet and phone
Bug: 258854035
Change-Id: I468481a023e82d3ef7c7d4d44c5b9435173b49ae
Before this cl, both Launcher and System UI processes were registering for hinge angle and device state (e.g. folded/unfolded) change events to calculate the current unfold animation progress. In some cases, launcher ui thread was busy, delaying the progress calculation from the hinge angle value (that was received ~at the same time by both processes). This resulted in launcher and sysui unfold animation not being synchronized in some cases.
With this cl, System UI process uses OverviewProxyService to send the unfold events to Launcher. In this way, both process always have the exact same progress (+- 1 frame)
This is currently guarded by a launcher flag, by default with the new behaviour, to allow devs to compare the experience and easily debug potential regressions.
Bug: 268490854
Test: Analysed perfetto trace + RemoteUnfoldTransitionProgressProviderTest + manual
Change-Id: If15fd6fe39abb3d922c5fdb327100206dfa3665d
This allows for custom animations in classes inheriting from
QuickstepLauncher
Bug: 260637266
Test: flashed device and verified animation
Change-Id: I21fa112851e9ce43037151fc4c2fd21e90056712
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
Rather than use a feature flag for this feature, the on/off state will
be stored as a system setting and will be changed via a QuickSettings
tile.
Bug: b/264452057
Test: Verified that the new QuickSettings tile doesn't crash via normal
interactions (pressing, long-pressing, etc.). Also verified that
ViewCapture is turned on when the QuickSettings tile is in the enabled
state and is turned off when it is in the disabled state.
Change-Id: I90551511ac2766dc30c51a25aec2c96e3e552ce9
* Consolidated init calls in SplitSelectStateController
* Also add support to launch from taskbar all apps
* Add logic in SplitSelectStateController to know whether
or not we need to dismiss existing TaskView vs relying
on mSplitHiddenTaskView null check
* Default click handling for SplitShortcut is to start
split selection mode
Bug: 251747761
Test: Initiated split from smart actions, thumbnail app
icon, home, taskbar in overview, all apps. Saw it choose
the latest thumbnail
Change-Id: Ib4f64e619c97615af458a19a9c0efd86c92979d9
This CL adds a layer of OnBackPressedHanlderRouter to Launcher:
1. 4 OnBackPressedHandler(s) are added in such order: auto cancel action mode handler, drag handler, view handler and state handler
2. first handler who can handle back will handle the entire back gesture
3. Let WidgetsFullSheet to handle widget to all apps transition
Bug: b/260956481
Test: manual
Change-Id: Idbce3dcec746226dd68aaabaddc8fe01334e9673
This is eventually allow us to move all register to background thread
Also creating a single ScreenOn tracked which is used at multiple places
Bug: 264465756
Test: Verified on device
Change-Id: Ibadf9ca43218e578954420d97a733adfa0a94fc7
Merged-In: Ib410e5bf02773cefde5bf0a0a1f2f1c108718d24
This flag allows to avoid an initial measure pass by getting the window size by the LayoutParams.
Test: Recorded a trace before and after this change and compared the doFrames
Bug: 265150323
Change-Id: I2c1e440b73437df9f328d64c98d160bed11282f3
This is needed to easily spot unwanted DeviceProfile changes in perfetto traces, as each one causes many new inflation and slows down the ui thread considerably.
Test: recorded trace with this log
Bug: 258214245
Change-Id: I805d56d4dfe1c08d7f28215c0462d01fcaece84e
If freeform tasks are shown, skip applying depth effect and scrim
changes. These cause the background to flicker while showing freeform
tasks and for example showing the transient taskbar.
Bug: 263264985
Test: swipe up to show transient taskbar, observe launcher background
does not blur or flicker to black
Change-Id: I5b10d0f0c7065e903cb761488367c02d7e31d8b2
This fixes a concurrency issue where HingeSensorAngleProvider was being stopped and started at the same time in a thread-pool after a fast fold/unfold, despite not providing concurrency guarantees.
In sysui, the background executor provided was already single threaded, so no issue arisen. From Launcher, THREAD_POOL_EXECUTOR was provided.
In a follow up cl, I'll add a @SingleThreadBackground annotation to the executor used in the unfold lib.
Bug: 261320823
Test: manually stress tested fold/unfold.
Change-Id: Iccf1f1f7246d8592d4d80a032479aa75f0050655
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
Fix: 235358918
Test: Manual
1. Rebooted the device and verified that widgets are still updating properly
2. Changed the theme from dark to daylight, then from daylight back to dark and verified that widgets are working
3. Kept the device on for several days and verified that widgets are still updating
4. Turn on auto-rotate for the launcher, open any app then exit, verified that widgets will not vanish and reappear
5. Add & remove widgets from the screen, added widgets are still updating
Change-Id: I98ee902f7d16b47bd77626201a4fefc897ba17a0
The wrapper class is created for further changes that will run the wrapped host in the background.
Test: N/A
Bug: 235358918
Change-Id: I9bd6fc2749c5d4a4d3391fb75d0c3ff1e13d17bf
The ViewCapture functionality is extracted into a common Library accessible to the Launcher and SystemUi modules.
Test: None yet
Change-Id: I4be394ed8dc86e30f6b8c69c438b8bc943e7907c
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
- Made BaseDepthController.setDepth/mDepth private, all get/set should be done through STATE_DEPTH or WIDGET_DEPTH
- Generified ClampedDepthProperty into Utilities.ClampedProperty to apply on STATE_DEPTH
Bug: 240580498
Test: Go to walppaper&style, set new wallpaper, then go to widget picker, wallpaper depth should transition smoothly
Change-Id: I53cdedf970fd7ffba6a952c4edf4b34251b01f07
In DeviceFoldStateProvider.kt, FOLD_UPDATE_FINISH_HALF_OPEN is emitted if the rotation changes while the animation is in progress.
This targets the case when the device goes to tabletop mode during the transition.
+ Using RotationChangeProvider to fix problems when the new orientation change was received in a background thread unexpectedly. This fixes: (1) wrong launcher icons movement after the rotation, and (2) wrong dark overlay scrim after rotation.
+ Minor formattig fixes by ktfmt
Bug: 241743859
Test: DeviceFoldStateProviderTest && NaturalRotationUnfoldProgressProviderTest && manual stress testing
Change-Id: Iee234e4b832cad8298b69356fce7c14d75e89ccc