summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
Commit message (Collapse)AuthorAgeFilesLines
* Merge tag 'android-13.0.0_r52' of ↵George Zacharia2023-08-021-28/+48
|\ | | | | | | | | | | | | https://android.googlesource.com/platform/frameworks/base into t13.0 Android 13.0.0 Release 52 (TQ3A.230605.012) Change-Id: Ic80f318636f1f70bbd009504352ddde511d0dead
| * 1/ Initialize assistant state change listeners once with the nav bar helperWinson Chung2023-03-091-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Consolidate the meaning of init/destroy into the registration/unregistration of the nav bar helper state callbacks. This allows us to track the case where we are replacing the bars to prevent churn in unregistering and reregistering shared callbacks - Using the above, we can only register the assistant content observers when the first bar is registered, and keep it registered across bar replacements Bug: 219035565 Test: atest NavBarHelperTests Test: atest SystemUITests Change-Id: I2444bb0b27086b72212ef05b8c975c19a05a35d5
| * Refactor Utilities#isTablet to Utilities#isLargeScreenChristian Göllner2023-02-241-10/+11
| | | | | | | | | | | | | | | | | | | | | | The utility checks the dimension of the screen rather than the device itself. This means that on a foldable it would return true when unfolded even though it is not a tablet. Test: Checked code usages to see if expectations were correct. Fixes: 267285637 Merged-In: I9ab45d65e08a6024729819724e8661e00419ebdd Change-Id: I2f2754e1753daf0941e327cf8bf866946cd36f78
| * Revert "Refactor Utilities#isTablet to Utilities#isLargeScreen"Judy Chang2023-02-231-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | Revert submission 21508490-is-tablet-misleading Reason for revert: DroidMonitor: Potential culprit for Bug b/270566727 Reverted changes: /q/submissionid:21508490-is-tablet-misleading ABTD build successfully: https://android-build.googleplex.com/builds/abtd/run/L51700000958776445 Change-Id: I1bf2ef3e38bba5591aac7d50dbca4302d1a5d5e2 BUG:
| * Refactor Utilities#isTablet to Utilities#isLargeScreenChristian Göllner2023-02-231-10/+11
| | | | | | | | | | | | | | | | | | | | | | The utility checks the dimension of the screen rather than the device itself. This means that on a foldable it would return true when unfolded even though it is not a tablet. Test: Checked code usages to see if expectations were correct. Fixes: 267285637 Change-Id: I9ab45d65e08a6024729819724e8661e00419ebdd Merged-In: I9ab45d65e08a6024729819724e8661e00419ebdd
| * [DO NOT MERGE] Add centralized DisplayTracker for SystemUIAlex Stetson2023-01-261-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | In multi-user multi-display systems where there could be multiple SystemUI instances running, the concept of what displays are relevant for a particular SystemUI may change. By adding a DisplayTracker class to abstract away display retrieval and callbacks, these instances can return the information that is most accurate for them. Bug: 256236871 Test: atest SystemUITests Change-Id: I51c1a380a344fb45d5e0de2c5c6ba5610733a3a2
| * [DO NOT MERGE] Replace UserHandle.CURRENT with UserTrackerAlex Stetson2023-01-171-7/+8
| | | | | | | | | | | | Bug: 249831072 Test: atest SystemUITests Change-Id: Id98ed38495feaab4780452ded14fe24b68ae6944
| * Remove expensive queries for lock task mode (screen pinning)Winson Chung2023-01-111-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | - Instead use the TaskStackListener callbacks to update the state in each component as needed Bug: 224544468 Test: Enable/disable lock task mode and dumpsys activity service SystemUIService to confirm the sysui state is still updated Test: atest SystemUITests Change-Id: I15ec6251c75a29c563820ea6424768fa33245497
* | fixup! SystemUI: Add API for runtime taskbar configMichael Bestas2023-04-201-1/+1
| | | | | | | | Change-Id: I43aa54895caaa1e55bb2e794bc12567b93ed77de
* | Merge tag 'android-13.0.0_r35' of ↵George Zacharia2023-04-031-3/+19
|\| | | | | | | | | | | | | | | https://android.googlesource.com/platform/frameworks/base into t13.0 Android 13.0.0 release 35 Change-Id: I709958b2f015d1774b2ece25894467c3a279f93c
| * Add logging for floating rotation buttonWinson Chung2022-12-151-0/+2
| | | | | | | | | | | | Bug: 260223107 Test: Just logs Change-Id: I71f0afa9be4a0620b606e2e0c20f5817f361e5fb
| * Log config change messages at INFO so that they show up in BR.Shan Huang2022-12-061-1/+1
| | | | | | | | | | | | Bug: 260220098 Test: Manual Change-Id: I2f293f3659423c28381ad2484f903b1eea028431
| * Add debug logs for navBarController config changeVinit Nayak2022-10-131-1/+8
| | | | | | | | | | Bug: 253294774 Change-Id: Idd185c4fc73a48558b07f133b7275a1b5b6cc617
| * Pass config changes through to TaskbarDelegateVinit Nayak2022-10-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Previously TaskbarDelegate was listening for config changes, but there was a race condition between when it was initialized and when the config change callback happened. The callback didn't re-fire after TaskbarDelegate became a listener for it. * Rely on NavigationBarController, whose lifecycle outlives TaskbarDelegate, to pass through config changes to TaskbarDelegate (similar to how it's doing for NavigationBar today) * One caveat is that previously TaskbarDelegate was relying on WM.ComponentCallbacks#onConfigChanged() whereas NavigationBarController gets its config changes from Application#onConfigurationChanged() Fixes: 243765256 Test: Repro in bug no longer happens Change-Id: Ifa7ea26946e6e68f74d095cbdf1e274d6a39b6b7
* | SystemUI: Add API for runtime taskbar configDanny Lin2023-02-191-14/+22
| | | | | | | | | | | | | | | | | | | | | | Allow Launcher3 to override the taskbar state at runtime based on user preference. ** AICP edits: add backup validators Change-Id: Ic2616ff974e98e03edbcdbdf677fa40b40b37abb Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> Signed-off-by: Semavi Ulusoy <doc.divxm@gmail.com>
* | Merge tag 'android-13.0.0_r16' into t13.0George Zacharia2022-12-151-8/+33
|\| | | | | | | | | | | | | | | | | | | | | Android 13.0.0 Release 16 (TQ1A.221205.011) Also included the following reverts: 1. Revert "fw/b: Import Wi-Fi standard icon [1/2]" 2. Revert "Add preference for toggling the wallpaper zooming animation" Co-authored-by: Semavi Ulusoy <doc.divxm@gmail.com> Change-Id: I9a6b51e452c28d10411712c59778bb54da5783e9
| * Fix multi-display nav bar tests on large screen devicesCharles Chen2022-08-081-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | Tests failed because #createnavigationBar skip create nav bar even on the secondary display if there's a task bar initialized. This CL changes to only check on the default display instead. fixes: 241509471 Test: atest MultiDisplaySystemDecorationTests#testNavBarShowingOnDisplayWithDecor Test: atest MultiDisplaySystemDecorationTests#testNavBarNotShowingOnDisplayWithoutDecor Test: atest MultiDisplaySystemDecorationTests#testNavBarNotShowingOnPrivateDisplay Change-Id: Ibdd5fb65a92915ac92e908c0091260573cec18c8
| * Add flag to hide nav bar window in favor of taskbar.Vinit Nayak2022-07-281-3/+15
| | | | | | | | | | | | | | | | * Toggle via Flipper App (key 1101) OR adb shell setprop persist.wm.debug.hide_navbar_window 1 && adb reboot Bug: 219035565 Change-Id: I68f9d3332ab94763284675d366e0f8bf7cf15edf
| * Fix transient behavior with task barTracy Zhou2022-06-071-1/+0
| | | | | | | | | | | | Fixes: 200730636 Test: manual Change-Id: Ie3dc424542ff457218fe4ec2fd516244f51bb94f
| * Remove last call to Dep.get from NavigationBarViewDave Mankoff2022-05-101-4/+8
| | | | | | | | | | | | | | | | | | | | | | Removes the last call to Dependency#get from NavigationBarView. A few more calls were added in the process, but they will be easier to deal with in future cls. Bug: 218354102 Test: manual && atest SystemUITests Change-Id: I0b6b3837d9f1cfd11f0cdb4089fb51ecf79b467b Merged-In: I0b6b3837d9f1cfd11f0cdb4089fb51ecf79b467b
* | Add support for runtime toggle of navbarBruno Martins2022-11-071-9/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a refactor of the following changes, so to make use of tuner API. Author: Timo Wendt <timo@tjwendt.de> Date: Thu Aug 30 12:18:41 2012 +0300 Runtime toggle of navbar This adds the framework support for enabling the Navigation bar on devices with hardware keys. It is toggled from Settings, and depends on device-specific support for the KeyDisabler hardware control Change-Id: I88fecb2ca1e8613591c327a93f53909b00239cd8 wm: Nullify hardkey function assignments if enabling the navbar This caused erroneous (and sometimes duplicate) events being generated due to the regular key function assignments. The navbar does its own action management, so don't try to derive from the actions usually present in hard keys. Change-Id: I82866e24547f8145cac4f07820ae90aacce09281 Update DEV_FORCE_SHOW_NAVBAR constant. Change-Id: Ie5b4317162c514d22276956f81007e064a3d0f32 Settings: Move DEV_FORCE_SHOW_NAVBAR load to loadSecureSettings. Change-Id: I6ac53b8c9f7fce6f9ca6b4ad7bf31a1c1e896863 Author: Paul Keith <javelinanddart@gmail.com> Date: Tue Jan 16 15:47:07 2018 +0100 PhoneWindowManager: Make sure KeyDisabler is always called on boot * Otherwise, some KeyDisabler classes are left in a weird state * Because we don't keep track of whether an initial state was ever set, we never call KeyDisabler on boot if the setting is set to 0 * To remedy this, keep track of whether an initial state was set Change-Id: Ib432ed3278dd8f4f4cba3ba488879b3c1cd9c8f4 Author: LuK1337 <priv.luk@gmail.com> Date: Sat Sep 29 20:42:04 2018 +0200 PhoneWindowManager: Fix issues introduced with runtime navbar * With system settings we need to pass UserHandle.USER_CURRENT to make sure we are getting proper value, otherwise we always end up getting '0'. Also we need to make sure to set valid mHasNavigationBar in setInitialDisplaySize(). Change-Id: I3efd614e735f9a602f13263a742ce858a9d14769 Author: jhenrique09 <jhenrique09.mcz@hotmail.com> Date: Tue Mar 24 22:04:47 2020 -0300 DisplayPolicy: Fix watchdog when adding new display * Fixes system crashing after connected to Android Auto or started screen record That was introduced on toggle navbar commit Only register content observer if default display Change-Id: Ia43a922251803be94de8618eb442dcf132e479e9 Author: LuK1337 <priv.luk@gmail.com> Date: Sat Oct 31 12:28:09 2020 +0100 Edit: Bring-up changes for A11 * Due to race condition we end up calling DisplayPolicy.hasNavigationBar() before the settings value is updated. * Switch over few more navigation bar checks that'd likely also fail. * Call WindowManagerService.onOverlayChanged() so that we don't end up with reserved space for 3-button style navbar when gestural navigation is enabled. Change-Id: I4a6d3f89bc171c3921875b24c077cb78c03517ad
* | Remove last call to Dep.get from NavigationBarViewDave Mankoff2022-05-091-4/+8
|/ | | | | | | | | | | Removes the last call to Dependency#get from NavigationBarView. A few more calls were added in the process, but they will be easier to deal with in future cls. Bug: 218354102 Test: manual && atest SystemUITests Change-Id: I0b6b3837d9f1cfd11f0cdb4089fb51ecf79b467b Merged-In: I0b6b3837d9f1cfd11f0cdb4089fb51ecf79b467b
* Remove FileDescriptor from systemui.Dumpable.Dave Mankoff2022-04-051-2/+1
| | | | | | | | | | This is the first step in moving over to the new public android.util.Dumpable api. Bug: 217567642 Test: m SystemUI Merged-In: Ibaebcfb2c6c5326d0c45b8c72d868c76655d89a0 Change-Id: Ibaebcfb2c6c5326d0c45b8c72d868c76655d89a0
* Cover screen pinning logic around task barTracy Zhou2022-03-281-0/+9
| | | | | | Fixes: 205280231 Test: manual Change-Id: I7e34def68dae9045d967f0871729e1988e1fe149
* Convert NavigationBar to subclass ViewController.Dave Mankoff2022-03-211-10/+8
| | | | | | | | | | Adds a NavigationBarComponent to take the place of NavigationBar.Factory, simplifying initialization of the NavigationBar. Bug: 218354102 Test: manual && atest SystemUITests Change-Id: I203bb272266d29c4ca49420ff34255b81ff30104
* Revert "Revert "Move touch handling out of NavigationBarView.""Dave Mankoff2022-03-181-1/+3
| | | | | | | | | | | | | | | This reverts commit d9ba94bf79d1a615e4bfae7f09e31bf9853f7a7e. Reason for revert: Restoring change with a fix. The original problem seems to stem from using the wrong instnace of WindowManager. Instead of using the diplay context's instance, I was using the application context's instance. This was different from the original code this cl refactors. Bug: 218354102 Test: atest android.server.wm.MultiDisplaySystemDecorationTests Change-Id: Ic6b680c12be5cbece4945e8e9ea41f578bbc9e0b
* Merge "Hide navigation bar view immediately when folding to AOD"Nick Chameyev2022-02-171-1/+6
|\
| * Hide navigation bar view immediately when folding to AODNick Chameyev2022-02-161-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This CL addresses two problems with navbar visibility when folding a foldable device to AOD: * Hiding of navbar insets sometimes doesn't work when calling hide() immediately after creation of a window because of a race in insets controller. As a workaround added applying visibility to the view itself when doing the fold to AOD animation. * Navigation bar creation happens in onConfigChange of SysUI and it is not synchronized with starting doze mode event from DozeService. So sometimes we skipped hiding the navbar because it hasn't been created yet at the moment when we started dozing. To avoid this issue added applying of the initial visibility to navigation bar when creating. Bug: 202844967 Test: aod enabled, fold => navbar is not visible Test: aod enabled, fold, turn on => navbar is visible Test: lock/unlock using power button when aod enabled/disabled Change-Id: I2773e1eb4221e1a97860478b2d772b91803e6bf5
* | Add traces to latency sensitive pointsNicolo' Mazzucato2022-02-101-0/+3
|/ | | | | | | | Those places have been identified as the main culprit of unfold latency in sysui doing some method tracing. By adding traces, we can monitor them better in perfetto recordings. Bug: 197515205 Test: recorded a trace and checked if they were there. Change-Id: I6f1d111b7fb33fabeba604e62d4208f5ca1f03d1
* Integration of back gesture animation on Sysui (BackNav 2/n)Vadim Caen2022-01-201-2/+5
| | | | | | | | | | | | This CL contains the BackAnimationController, on WMShell, which controls the gesture based animation. When the gesture is done, the animation is done. It will be handed over to a TransisionHandler (in the next CL) Test: atest WMShellUnitTests:BackAnimationControllerTest Bug: 131727607 Change-Id: Ifc2ed99bfd51079f12a83468ca44e4aa19460e47
* Update PiP exclusion bounds in TaskBarDelegate.Ben Lin2021-12-141-2/+5
| | | | | | | | | | Navigation bar is only created and used when taskbar is not available. When taskbar is available, we will use TaskbarDelegate to be the one responsible to update pip exclusion bounds as PiP moves. Bug: 210038947 Test: Unfold, enter PiP, stash - PiP can be yanked out Change-Id: I8f789d3b603e41c3d15494afdadce2cddc4d4b9c
* Support to show lock task toast on taskbarCharles Chen2021-11-301-0/+18
| | | | | | | Bug: 207452035 Test: manual Change-Id: I0ceba6427a5a4b0d59d9d744567886c8cd690929
* Revert "Revert "Extract assistant logic from NavigationBar to share with ↵Vinit Nayak2021-11-241-2/+2
| | | | | | | | | Taskbar"" This reverts commit 2511ebcc4042203658cfba9cd2f5093ddd6efb48. Bug: 204273914 Change-Id: I142802ef68e77030a340a59a25fd082852cd6c0c
* Revert "Extract assistant logic from NavigationBar to share with Taskbar"Vinit Nayak2021-11-231-2/+2
| | | | | | | | This reverts commit 33a7ce8427305393a0c81a656e8a3e3298d854a0. Reason for revert: test failure, b/207427578 Change-Id: I211a344659036248388e587c7cdf5082b8bdbf9d
* Pipe dark intensity through OverviewProxyTony Wickham2021-11-221-2/+4
| | | | | | Test: in 3 button mode, nav buttons in taskbar are dark on light wallpaper; in both 3 button and fully gestural, IME dismiss button is dark on light IME Bug: 204256643 Change-Id: Ib6488a393e9cf021c806a5caf5b81654cf5164eb
* Extract assistant logic from NavigationBar to share with TaskbarVinit Nayak2021-11-191-2/+2
| | | | | | | | | | | | | * Added logic into already existing class used for A11y, renamed that to NavbarHelper * Prevent destory() in TaskbarDelegate from being called without init() call first Bug: 204273914 Test: Assistant is invokable on launcher unfolded in gesture nav Change-Id: Ic3232f375c68fd444c7378bc8ddd5a9b6991bd69
* Fix Accessibility button & gesture settings did not update correctly in ↵jasonwshsu2021-11-101-0/+40
| | | | | | | | | | | | | Tablet device Root Cause: ACCESSIBILITY_BUTTON_MODE only be updated in navigationbar, did not be updated in new-design taskbar. Solution: Move updated function up to NavigationBarController, which controlls NavigationBar and Taskbar. Bug: 203173063 Test: manual test Change-Id: Ib18fcd7062bf4e7627f4ffaeefd150c3d1055a47
* Show nav bar on secondary displays regardless ofCharles Chen2021-11-081-8/+10
| | | | | | | | | | ... that TaskBar shows on the default display Test: `atest MultiDisplaySystemDecorationTests` on large screen devices Test: manual: simulate secondarydisplay + force desktop mode and check if nav bar shows on simulated display. Bug: 205496049 Change-Id: I1736fbfd0f77a9fd3f07dd2fc725d99b397141c6
* Reland "Remove Dependency.get from NavigationBar."wilsonshih2021-10-151-122/+6
| | | | | | | | | | | | | | | | | | | | | This reverts commit be525911ceab3fc0cf727f7a9c8d204b480e0bf9. The original CL fixed the SystemUI crash when create dependency for DumpManager. Two more modify from the original CL: - NavigationBar should create for each display, so there cannot use the injected WindowManager to add/remove view. - The LightBarController is also create for each display, so the DumpManager should only register for default display, otherwise the registerDumpable will throw exception when creating for non-default display. Bug: 199481992 Test: atest MultiDisplaySystemDecorationTests Test: atest SystemUITests Change-Id: I2be879f85fcc9f5f83cb33a564a3a25d8d9a3254
* Add API to allow launcher to suspend AutoHideControllerVinit Nayak2021-10-111-3/+5
| | | | | | | | | | | | | | * Make suspend/resume methods public * TaskbarDelegate acts as the AutoHideUiElement for the purposes of simplicity (vs having Taskbar itself in launcher implement the interface). * We re-use existing mNavBar setter in AutoHideController since we know when tablet is showing there is no navigation bar present Bug: 193938507 Test: Taskbar shows when requesting auto-hide suspend. Change-Id: I36429b4ea357646cf6b6dac7a048905b1986be16
* Dump TaskbarDelegate infoWinson Chung2021-10-051-1/+2
| | | | | | Bug: 201662541 Test: dumpsys activity service SystemUIService Change-Id: Ib4a0a0316a02e5ab0ebe1dacf1fea0270750b36c
* Revert "Remove Dependency.get from NavigationBar."Dave Mankoff2021-09-281-6/+121
| | | | | | | | This reverts commit 9f8305196c46d130639bf40d05a049663aefd4a0. Reason for revert: http://b/201416807 Change-Id: Iab917251e00c3ab2ef9f44835728abd93eb16fa5
* Remove Dependency.get from NavigationBar.Dave Mankoff2021-09-241-121/+6
| | | | | | | | | | | | Fixes flaky tests as it relates to historical interaction between Dependency.get and DumpManager. Removes the reliance on CommandQueue in NavigationBarTest and adds to the CommandQueue test in its place. Fixes: 199774897, 195135693 Test: atest SystemUITests Change-Id: I2db7b423bd05a247e021a119a2f9e66aa2b98008
* Consolidate isTablet logic across launcher and SysUITracy Zhou2021-09-231-1/+1
| | | | | | Fixes: 197960261 Test: Change display size; nav bar and task bar don't show up at the same time` Change-Id: I8e213dd0a77b2c694af10186ee301b7a03969ab0
* Manually register Dumpables to DumpManagerNed Burns2021-09-091-4/+9
| | | | | | | | | | | | | | | | | Dependency.get() automatically registers its managed objects to the DumpManager if they implement Dumpable. However, if code is refactored that removes all usages of Dependency.get() in favor of Dagger injection, then there is no longer a guarantee that the class in question will be registered to DumpManager (and so included in bug reports). Instead, remove the auto-registration feature of Dependency in favor of manually registering all dumpables with the DumpManager. Bug: 198713580 Test: atest Change-Id: Ie02a44fb7da0b76bf53da874cc9eee030a1b9173 Merged-In: Ie02a44fb7da0b76bf53da874cc9eee030a1b9173
* Hook up EdgeBackGestureHandler with TaskbarDelegateTracy Zhou2021-08-211-5/+3
| | | | | | | | So that we don't need the presence of nav bar for back gesture for tablets Fixes: 197058461 Test: manual Change-Id: I6572f07dbaad665a03c43e70745744a2f0cf2734
* Merge "Revert "Revert "No NavigationBar layer in tablets""" into sc-v2-devTracy Zhou2021-08-171-4/+3
|\
| * Revert "Revert "No NavigationBar layer in tablets""Tracy Zhou2021-08-131-4/+3
| | | | | | | | | | | | | | | | | | | | This reverts commit a7a5ad7b7888d0e5ea6087f5e7aae04774335d4a. Reason for revert: Reapply the change with additional changes to fix tapl tests Bug: 191660313 Test: TaplTestsLauncher3 Change-Id: I67f0c6780cb7b531b8d88824786e8d7875256b7e
* | Merge "Revert "No NavigationBar layer in tablets"" into sc-v2-devAlex Chau2021-08-111-3/+4
|\|
| * Revert "No NavigationBar layer in tablets"Alex Chau2021-08-111-3/+4
| | | | | | | | | | | | | | | | | | This reverts commit fb999dc720f15f0eddf729d0ce197647913f6c9b. Reason for revert: breaking TaplTestsLauncher3.testDevicePressMenu and testPressHomeOnAllAppsContextMenu for all foldable targetse Bug: 191660313 Change-Id: I04c9e28c92ed0cf9e822ecf4409edfc8f37c36c4