- As part of b/405384582's investigation I discovered that when changing navigation mode with 3P Launcher, DeviceProfile.isGestureMode didn't get update when switching between gesture and 3 button
- This is because unlike Launcher activity, RecentsActivity doens't listen for IDP changes and update its DeviceProfile accordingly, adding the listener solved the problem
- This also makes b/405384582 no longer reproducible for 3 button mode
Bug: 405384582
Test: Switch navigation mode with 3P launcher
Flag: EXEMPT bugfix
Change-Id: I85b57f5c85d7356517d04e601b705ec0cade2d96
Instead of incrementing and decrementing the zIndex, we set a fix value: elevation + constant. And we reset the value back to the initial elevation. This avoids the elevation becoming negative when tapping on the chip multiple times.
Fix: 407505697
Flag: com.android.launcher3.enable_overview_icon_menu
Test: OverviewImageTest
Test: OverviewSplitTaskImageTest
Test: Manual. Tap multiple times on the App chip.
Change-Id: Icb1b5df1674131416ec6722adb8f2c2563d81f18
This reverts commit 62ad6217ac.
Reason for revert: we need the original fix
Fix: 405836159
Fix: 406159877
Fix: 406157493
Test: Manual (swipe home and immediately to all apps)
Test: atest FlickerTestsIme:com.android.server.wm.flicker.ime.CloseImeOnGoHomeTest#cujCompleted[ROTATION_0_3_BUTTON_NAV] -- --abi arm64-v8a
Flag: EXEMPT bugfix
Change-Id: Ibc58cbef929422ee23d452f0db40b082debce3a4
I had previously hidden workspace with All Apps blur because the
approaches I had tried looked poor. However, I found that this
approach is both simple and relatively performant! Essentially,
wallpaper is still pushed back and blurred by the DepthController.
When the DepthController applies blur, we also apply it to the
Workspace and Hotseat. In addition, we scale these at the same
rate as the depth when swiping to all apps. Perhaps we can have
the DepthController control this scale too, but for now we just
use the same Interpolator. The result looks pretty cohesive.
Demo: https://drive.google.com/file/d/1KyKc0c5BsAEOrT3K4buOW3U9-Gk0e7vE/view?usp=sharing&resourcekey=0-MI1gdQMul0cro9IEkQDEng
App exit demo (slightly outdated): https://drive.google.com/file/d/1r-VhzGhlI0300_6IUXthty3Tm1cgw9aI/view?usp=sharing&resourcekey=0-nxZ2BHW2UN34lr567I0RdA
Bug: 400827727
Bug: 371343636
Test: Manual
Flag: com.android.launcher3.all_apps_blur
Change-Id: I5dc66619a001ccd32f37272cf77966cbe1bf8ef6
- In TaskViewSimulator.addAppToCarouselAnim, make sure carouselScale stays at 1f when it's atomicEvent (3 button, KEYCODE_APP_SWITCH, keybaord etc,), as we transition direclty from fullscreen to Overview without involving the carousel
- Made AnimatorSet pass to onPrepareGestureEndAnimation @NonNull, to avoid diverged code path handling null AnimatorSet.
- For 3-button/Keyboard interactions, pass the gesture AnimatorSet with a boolean that indicates atomic event; some float peroperties will immediately settle while it's atomic: GRID_PROGRESS, TASK_THUMBNAIL_SPLASH_ALPHA
- For home gesture, pass a new AnimatorSet that will be played immediately with 0 duration
- Converted onPrepareGestureEndAnimation to Kotlin, and removed the code path when animatorSet is null
- updateGridProperties is now called based on displayOverviewTasksAsGrid, which is effectively the same check as endTarget == GestureState.GestureEndTarget.RECENTS;
- RECENTS_GRID_PROGRESS is no longer caleld per remoteTargetHandle, which duplicates the animaton for nothing, as it's a per recents rather than per task property
Fix: 405384582
Fix: 407059929
Flag: EXEMPT bug fix
Test: Swipe up/KEYCODE_APP_SWITCH/Recents button with default and 3p Launcher
Change-Id: I56ba9137219f6d7cb982d8e5a3534f09ba3d189d
Update the chip z-index of IconAppChipView when bringing it to front or sending it back. This change fixes the elevation when chip is expanded over another chip for split tasks.
Update the task z-index when bottom row chip is expanded to guarantee the chip will be displayed above other TaskVIews.
Fix: 406696829
Fix: 317007147
Flag: com.android.launcher3.enable_overview_icon_menu
Test: OverviewImageTest
Test: OverviewSplitTaskImageTest
Change-Id: Ie68898beea0a012ba083fe1b950e82896ea14c41
- Introduced title and titleCollapsed to change the text when expanded and collapsed using only 2 dots for truncate the text, similar to ellipsize="marquee".
- Removed ellipsize="marquee" from the XML to prevent chip relayout when entering in Overview. See b/406969521.
Fix: 406969521
Fix: 403193877
Flag: com.android.launcher3.enable_overview_icon_menu
Test: OverviewImageTest
Test: OverviewSplitTaskImageTest
Change-Id: Ia95eb8b7ec6d22b9d576defe7c66a4950ee1dca3
`IconView` creates a new drawable and makes it mutate for scaling it during some animations. The `setDrawable` function there also performs more logic and invalidate the view. Thus, every time `setDrawable` is called in the `IconAppChipView`, even if the same drawable is provided, it will unnecessarily create a copy of the drawable, invalidate and redraw the whole view.
To prevent this inefficient behavior, a hash check has been introduced in `IconAppChipView`. This hash check skips the redundant logic if the same drawable is provided to `setDrawable`.
Bug: 402613435
Flag: com.android.launcher3.enable_overview_icon_menu
Test: OverviewImageTest
Test: OverviewSplitTaskImageTest
Change-Id: I3d20fa6bfc7aaf79222469ad88080985d4c1d1a0
Surface reparenting was happening on every frame since we call
applyDepthAndBlur on each frame during animation. Instead we can do it
only when base surface is set. mBlurSurface should always be parented to
mBaseSurface so no point in calling it again and again.
Relative layer changes only when we either draw above or recents. While
drawing above recents, mBaseSurface relative layer should be used.
mBaseSurfaceOverride otherwise. No point to call this during animation.
Added perfetto traces comparison home->all apps, alongwith all other
generic overview scenarios which possibly could have caused jank is
added here:
https://drive.google.com/drive/folders/146K_4WLaOGQcZ1gsuhCFlOCzfZ-mJBw8?resourcekey=0-r1-NnNtYGH88d8DGEvnXZg&usp=sharing
Bug: 404647629
Test: Manual. Enter overview from Desktop tile / home.
Flag: com.android.launcher3.enable_overview_background_wallpaper_blur
Change-Id: I567d6b8615685e5c50ef7b7b15787fa56cb2da79
If launcher is destroyed while the recents animation start is pending, then the taskanimationmanager and absswipeuphandler states are not properly cleaned up. Adding a new cleanup flow to handle this case.
Flag: EXEMPT bug fix
Fixes: 405642423
Test: adb shell cmd uimode night yes/no while TaskAnimationManager.mRecentsAnimationStartPending == true
Change-Id: I7bf1fc4fc07859f92d7aec6cd78deafa1214dd17
Fix the bug introduced by ag/32547343.
Getting the corresponding `DesktopTaskView` from the `deskId`
instead of `deskDisplayId`.
Bug: 406340124
Test: m
Flag: com.android.window.flags.enable_multiple_desktops_frontend
Flag: com.android.window.flags.enable_multiple_desktops_backend
Change-Id: Ifaa9a9602cb95c871dee16f874c2b4a51404aad1
Stash handle alpha animator was set to control the visibility of the
view. This caused issues with the state as sometimes the alpha animation
conflicted with the state of the bubble bar. And caused the handle to be
visible when the bubble bar (or handle) should not be.
Remove the ability for the handle alpha animator to manage the
visibility. We already have logic in place to ensure that the stash
handle is visible or invisible based on the state. And it is not needed
for the animator to manage it.
Bug: 392121302
Flag: com.android.wm.shell.enable_bubble_bar
Test: atest NexusLauncherRoboTests
Test: move an app to bubble, move it back to fullscreen, check that
handle is hidden
Test: check that handle is hidden and shown when in app and opening
notif shade
Test: check that handle is hidden and shown when in app and locking and
unlocking device
Test: check that handle is shown when receiving bubbles in app and the
bar stashes after showing new bubbles
Change-Id: I4af8b4fa38f63b3cbc01f9cf59e66d7fc651ab13
Inside `RemoteTargetGluer`, create the `RemoteTargetHandle`
based on `GroupedTaskInfo`.
Bug: 406340124
Flag: com.android.window.flags.enable_multiple_desktops_frontend
Flag: com.android.window.flags.enable_multiple_desktops_backend
Test: m
Change-Id: I0603d0b05fbc4fa8042ef1da27b2cf95226969d9
With the dagger update the initialization happens in constructor which
we would avoid once we work on refactor and move it into a repository
class. The list will also be fetched from a different data source, so,
makes sense to delete it at the moment.
Bug: 406324964
Flag: EXEMPT BUGFIX
Test: Not applicable as code is removed
Change-Id: Iab8bb1e94677abf9b5b882f4d3485b002faf3e0f