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
* New signals coming in from Sysui reflect the toggle
in Settings for long pressing on home button to
invoke assistant.
Fixes: 255909545
Test: Manual + added unit test for TaskbarNavButtonController
Change-Id: Ic65a80b0b9697990931b7e89756773fb086cc3bd
- Mock WindowManagerProxy instead of IDP in DeviceProfileTest
- Extracted NavigationMode to standalone class
- Moved parseNavigationMode to WindowManagerProxy so it can be mocked
- Moved DeviceProfileTest to internal repo
Bug: 242086027
Test: DeviceProfileTest
Change-Id: Ia5a43293b1380f04d786d2adf8503cfd10f7674a
Also moved references of "tasbkar_view" to share TASKBAR_RES_ID constant
Test: compiles; see follow up CLs
Bug: 235986838
Change-Id: I69bcfa975550e567f3daa35af8a810546297d79c
* TODO: Landscape/seascape support,
Separate nav spacing out into
separate class/add tests
Bug: 219035565
Change-Id: I8f5c007f04ea4d6df15962772806356181d764ff
* Try to avoid re-creating TaskbarActivityContext to
avoid re-inflating taskbar views
* Toggle via Flipper App (key 1101)
OR adb shell setprop persist.wm.debug.hide_navbar_window 1 && adb reboot
TODOs
* Only works for gesture nav, not 3 button
* Sampling on phone doesn't always work.
Bug: 219035565
Change-Id: I2a015f99d5f1fe86d7261eec9fd898bd4480ff9f
We want to scale down the DeviceProfile for taskbar, but the all apps
window should rely on the original DeviceProfile.
Test: Manual
Fix: 232907361
Change-Id: Ia09f674ada9e445c1d7278fa94c536ea9de13ef9
Merged-In: Ia09f674ada9e445c1d7278fa94c536ea9de13ef9
Bug: 221455508
Test: opened all apps, widgets, -1 screen, notifications shade and keyboard in various combinations and orders; locked screen, launched app, returned home with the back/home buttons, opened overview
Change-Id: Ia0b406aacf72b34bd6b7ff1c01278ab6895a7da4
Merged-In: Ia0b406aacf72b34bd6b7ff1c01278ab6895a7da4
(cherry picked from commit 9c1a452a1d)
* Make display controller callbacks member variable for
clarity.
* Created follow-up refactor (b/227669780)
Fix: 227329641
Test: Repro steps in bug no longer make taskbar appear
when it shouldn't
Change-Id: I83702c0b817749943d2a9c4c5f0e44342a475e75
This was a regression due to ag/17241303, since technically the size changes when rotating (width and height swap). Now we detect that case and don't recreate, but instead propagate the new DeviceProfile via TaskbarActivityContext#updateDeviceProfile()
Test: Open an app, rotate device, ensure taskbar isn't recreated. Changing properties such as dark theme does still recreate taskbar.
Bug: 219981733
Change-Id: Ic827c8e697a284a085609ea8653d77900686306a
* DisplayController callbacks were sometimes being
called too soon and providing stale window bounds,
which led to the incorrect DeviceProfile being used.
Switched to ComponentCallbacks on the window to get
the most up-to-date callbacks.
* Sadly, for navigation mode changes, ComponentCallbacks
get fired too soon and have a stale navigation mode
so we continue to rely on DisplayController for that
change for now.
Fixes: 219958843
Test: Tested folding/unfolding, no taskbar appears when
it shouldn't.
Tested with changing display/font size as well as
nav mode changes
Change-Id: I1b398934c0ea49f69bad19b13977b7b0906f3190
Limits taskbar icons translation animation
only when the display is in natural orientation.
Bug: 219958588
Test: fold/unfold in portrait and landscape
Change-Id: I33e26829ae37f1df39e8c7234f98d20eb7993b93
Navigation mode affects display properties like bounds and
most listeners already had a similar display listener. This
will remove race conditions when managing the two events.
Bug: 221961069
Test: Presubmit
Change-Id: If7a22e006e6b969ecddf075001066809aa72995c
- Fixed icons disappearing when initiating dragging
- Fixed incorrect icon location when initiating dragging after rotating the screen to an orientation other than what launcher started in
Fixes: 215418478
Fixes: 214025075
Test: dragged icons from the workspace and taskbar
Change-Id: I848138af28802f7d806708c77c25b8de307c70d8
Update resources in floating rotation button
when configurations such as screen density, screen size,
current locale have changed.
Bug: 200103245
Test: change display size, locale, fold/unfold
-> check that floating rotation button resources
are updated
Change-Id: Ia69f4f8b393a686012e286a1e39822650c562d52
Tint the buttons when taskbar isn't drawing a background (either due to alpha or offset).
Test: Dark icons on a light wallpaper on home screen, dark icons when light IME is showing
Bug: 204256643
Change-Id: Iae634a1b604f50edc102905abd0d812a43c5346e
This CL creates a new TaskbarUIController sub-class to allow for taskbar
UI customization on Kingyo.
Recall: http://recall/clips/598d7fc8-fa06-426b-8851-c5d5c1a91eb2
Bug: 202450677
Test: Manual
Change-Id: I9e06fe7556bd9a29d126e29c0277139b2f218069
Moves handling of floating rotation button when navigation
bar is not created to the launcher. This button was not
showing when taskbar is visible as it was initialized in
navigation bar (which is not created for large screens).
Bug: 200103245
Test: rotate phone when autorotate disabled on inner screen
Test: showing rotate suggestion when gesture nav enabled/disabled
Change-Id: I13dd555bcd811f1524be7ab9ad51b2b012b3b749
Also dispatch sysui flags to all controllers upon recreate, not just NavbarButtonsViewController. Additionally, tell the controllers to skip the animation due to the flag changes if it's fromInit.
Test: Enable themed icons, switch dark theme in quick settings, ensure taskbar updates
Fixes: 204403933
Change-Id: Ic43a50cf0456175f9beba5c29360440f051cbd2d
- Refactor TaskbarManager to accept StatefulActivity instead of BaseQuickstepLauncher
- Update the new StatefulActivity in onOverviewTargetChange()
- Cleanup LauncherTaskbarUIController a bit to avoid initializing TaskbarActivityContext, TaskbarDragLayer, and TaskbarViewController in the constructor, and instead get these from mControllers after init()
Test: No change in behavior
Bug: 188790554
Change-Id: Ic4d69d73deb6dada416876eb265db57803c3adfd
> Also keeping it stashed while all-set activity is visible
> Creating a shared state (simiar to saved instance state) for taskbar
> Keeping taskbar stashed while all-set activity is visible
Bug: 194786060
Bug: 201782272
Test: Manual
Change-Id: Iab5e082243a206772266aece62d3028f5acb6400
Disables unfold animation for statusbar when it is
perpendicular to the screen fold.
Moves ScopedUnfoldTransitionProgressProvider from launcher
to shared SysUI/Launcher code
Bug: 201518277
Test: manual
Test: atest com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProviderTest
Change-Id: I1417ee89b132b541d5a3ed0e5ddcbc56d827da96
* Animate it back into position after user unlocks
* Re-create taskbar on layout direction change so
PropertyHolders are recreated to take into account
new values
Fixes: 199852418
Test: Tested w/ password + pin for gesture + 3 button
Change-Id: Ie7f16f737a8fc12328c05d7628d0e3ae09fc08ca
Adds 'move from center' animation for taskbar icons when
unfolding foldable devices.
Moves unfold transition progress provider from quickstep
launcher activity to TouchInteractionService to widen
the scope when this provider is available to cover
both launcher activity and taskbar.
Launcher activity and taskbar get their own instances
of unfold transition progress provider using
ScopedUnfoldTransitionProgressProvider wrapper.
This wrapper allows to get transition progress provider
that emits events only when clients are ready to handle them.
Bug: 193794563
Test: manual
Change-Id: I27581bd4e145a74f526bf60f2a545e56ded322f9
- Listen for USER_SETUP_COMPLETE
- Recreate taskbar, forcing nav buttons to be visible
Test: Run setup wizard and ensure back button is present, then is replaced with taskbar when setup is complete
adb shell am start -a android.intent.action.MAIN -n com.google.android.setupwizard/.SetupWizardTestActivity
Fixes: 191846922
Change-Id: I789186dcc23a2db7cc4637b1cb0486f0d2add784
Also fix unstashing not working in 3P launchers by moving the unstash call from LauncherTaskbarUIController to TaskbarActivityContext
Test: long press taskbar background and stashed handle, watch it hint towards the new stashed/unstashed state respectively and then complete the animation when the long press is triggered
Fixes: 193926311
Fixes: 192926350
Change-Id: I0e538be9129bf5c600d07f360b8106d7077862ad
We want to move the rotation suggestion button to the middle
of the taskbar when it is visible and not stashed.
To do this we need to update System UI about the current
state of the taskbar.
Test: manual
Fixes: 187410455
Change-Id: Id918e10a44631362f7c3a8a8bb624ee80bdd3c8b
OnCreate can come before onDestroy for a previous activity which can
cause the callbacks for taskbar to get cleared
Bug: 190170303
Test: Presubmit
Change-Id: I48334605384d4604043a50ffc3d137f84575148a