Commit Graph

42 Commits

Author SHA1 Message Date
Mady Mellor 1d1e50d33b Fix some tests in TaskbarScrimViewController for bubble bar
When taskbar is in pinned mode with bubble bar expanded, in some
scenarios, we hide taskbar contents (i.e. when bubbles overlaps with
taskbar) and the scrim still shows.

One of the existing tests in TaskbarScrimViewController checks that
the scrim would be 0 when taskbar is not visible, however, in the
bubble bar case this isn't always true... I think there probably are
cases where taskbar isn't visible for other reasons (e.g. shade is
pulled down, but there are other tests specific to that). I'm
setting this test to only run when bubble bar isn't running, because
in that case bubbles never impacts taskbar visibility.

I added a test case to ensure scrim is hidden when pinned BUT bubble
bar is on home -- in this case we shouldn't show the scrim.

When adding the enableFlag/disableFlag I saw some NPEs in onDestroy
methods of some controllers so I protect against those as well.

Flag: EXEMPT test change
Test: atest NexusLauncherTest:TaskbarScrimViewControllerTest
      atest NexusLauncherRoboTest:TaskbarScrimViewControllerTest
Bug: 377764181
Change-Id: I71001222aa8a4393b341dd2b43a4b2e46e617a70
2024-11-11 11:03:58 -08:00
Jon Miranda 9c09196dfd Revert "Add support for taskbar background to wrap around hotseat"
This reverts commit 5dc07d786f.

Reason for revert: b/360116669

Bug: 345768019
Change-Id: Id70ceed141e2106f746d4a0e68a09675ba45dd28
Fixes: 360116669
Test: open taskbar, open all apps w/ ime, use ime back button
Flag: com.android.launcher3.enable_scaling_reveal_home_animation
2024-09-23 22:38:35 +00:00
Tracy Zhou 7b30d2d102 Pipe appTransition signal to taskbar to pause region sampling when it's ongoing
Bug: 361593564
Test: https://android-build.corp.google.com/builds/abtd/run/L78300030006280283
Flag: EXEMPT bugfix
Change-Id: Ib874e2b44c1cc59280da1250fd35f01572c39221
2024-09-08 21:50:18 -07:00
Mady Mellor 8104ad3321 Follow RegionSamplingHelper being moved into shell
- update imports for usages in launcher

Flag: EXEMPT updating imports & bp file for class moving to sysui
Test: make; gradle build for launcher; treehugger
Bug: 353160491
Change-Id: I6d9d004e8ab6f67f494927424d2651c5b848e967
2024-08-29 11:17:04 -07:00
mpodolian 6ba789a98f Added taskbar in/out animation when the bubble bar is expanded/collapsed
Added taskbar icon animation when the bubble bar expansion changes.

If there is enough space to accommodate both bars with spacing in
between, the taskbar remains. If there is not enough space, the taskbar
is animated out and then animated in when the bubble bar is collapsed.

Bug: 346391377
Flag: com.android.wm.shell.enable_bubble_bar
Test: Manual. Set taskbar to persistent mode via 3-button navigation or
through the taskbar itself. Have enough bubbles to cover the taskbar
when the bubble bar is extended. Expand the bubble bar and observe the
taskbar icons animating out. Remove a few bubbles so there is enough
space to accommodate both bars. Expand the bubble bar and observe that
both bars are visible.

Change-Id: I0b03a010c1e49ab39a17934f6629d5496fd66978
2024-08-09 11:10:28 -07:00
Jon Miranda 5dc07d786f Add support for taskbar background to wrap around hotseat
Currently only enabled for app launch animation

Future work is planned:
- Overview to home
- App dismiss
- When QSB is drawn inline

Bug: 345768019
Test: Launch an app, taskbar background and stashed handle will
      first wrap around hotseat before transforming into the
      stashed handle.
      Verified by locally forcing taskbar background and
      stashed handle to always draw.
Flag: com.android.launcher3.enable_scaling_reveal_home_animation
Change-Id: I9ab1870f87247b6a1b53a352ac3eb0183b7a1a1d
2024-07-26 08:10:50 -07:00
Brian Isganitis 8f6e33714a Use phone handlebar size for tiny taskbar.
Flag: com.android.wm.shell.enable_tiny_taskbar
Test: Manual
Bug: 341784466
Change-Id: I8dbe04e221ada4d01f9525f62a257a1d983f86f0
2024-05-24 19:12:59 +00:00
Chris Göllner 0cd995e4ef Convert SysUiState flags from int to long
We already reached the limit of 32 flags for an int. To be able to have
more, changing from int to long.

This is needed, as new flags have to be added.

Flag: NONE
Test: Manually running SysUI and Launcher
Test: Unit tests in CL
Bug: 335625543
Change-Id: Iec1d40218264c7c64c50fd09764aa07c0caa7787
2024-05-13 14:47:33 +01:00
Andy Wickham 3a7a76f88e Implement animateNavBarLongPress for stashed taskbar.
I think ideally we would tie this into the taskbar's outline
provider, but it seemed more complicated to deal with existing
stashing animations.

Instead I've just animated the stashed taskbar scale to 0.85 or
1.18, depending on the SHRINK_NAV_HANDLE_ON_PRESS flag. These
are based on the existing navbar shrink/expand animations.

Demo (the flickering doesn't happen on-device):
https://drive.google.com/file/d/1CWCPRsuD3kjtOUbwXspkQ_ZJ6Ln7FnUo/view?usp=sharing&resourcekey=0-kJjfgnuEca1de4u8mbHrig

Bug: 308693847
Test: Manual
Flag: LEGACY SHRINK_NAV_HANDLE_ON_PRESS DISABLED
Flag: LEGACY ANIMATE_LPNH DISABLED
Change-Id: I6ecbc849ac1c066a4c018325f0237a61641d99aa
2024-05-03 17:53:34 -07:00
Tony Wickham c4df8c2ec6 Revert to passing mIsStashed to StashedHandleViewController again
- Fixes case where handle is initially invisible but will be stashed
  and visible, e.g. when launching an app from home screen
- To fix the original issue of sampling happening unnecessarily for
  three button nav, also check supportsVisualStashing()

Fixes: 321257120
Flag: None
Test: Launch an app from home in gesture nav mode
Test: testThreeButtonsTaskbarBoundsAfterConfigChangeDuringIme
Change-Id: I1f26436de3081fd00f75a5921010e361e9a9f34e
2024-01-19 20:25:25 +00:00
Andy Wickham 32f2cae290 Merge "Allow stashed taskbar to be long pressed." into main 2024-01-17 21:09:15 +00:00
Andy Wickham caf0c35661 Allow stashed taskbar to be long pressed.
Bug: 319175012
Test: Manual and unit test
Flag: NA
(see other change)

Change-Id: Ic8ac68d21c64a909a1035339d36f9c3b50a8963c
2024-01-16 21:43:46 -08:00
Tracy Zhou cf5407dfc6 Hook up luma sampling state change from CommandQueue
Currently when swiping up from some apps (maps), the stashed task bar color changes. Instead, sampling should be disabled during the transition (with a signal from the frameworks).

Bug: 230395757
Test: Swipe up from maps. Make sure the bar color doesn't change during transition
 to overview
Change-Id: Ifc30f4067a0e4d134b422d152f5b5caee0a77a33
2024-01-09 21:56:58 -08:00
Tony Wickham 438e6c90af Fix onIsStashedChanged() not called in 3 button mode
Calling this ensures we update touchableRegion accordingly.

Since this will also start the stashed handle region sampling,
which we don't need for 3 button mode, also adjust logic to
check that the StashedHandleView is actually visible.

Flag: None
Test: Lock screen, run `adb shell cmd uimode night yes`, unlock
Test: Lock screen, rotate, unlock
  In both cases, verify touchableRegion is accurate
Fixes: 315393203
Change-Id: I951af6b97cad0ee0f362dc22f3996cfd9286a21e
2024-01-05 19:19:57 +00:00
Tracy Zhou 95c4c8d268 Fix crash from folding/unfolding
This is fundamentally caused by the phone device profile not having task bar related attributes, which crashes in icon alignment animation. We had resolved it by skipping this animation based on isPhoneMode check. However, we passed in launcherDp instead of taskbarDp (from TaskbarActivityContext) which doesn't always have the most up to date information in race conditions (e.g. repetitively fold/unfold)

Fixes: 311431054
Test: repetively fold/unfold, make sure it doesn't crash
Change-Id: I65f600112da4123d337b3f59a2fe6dd13ac7af74
2023-12-14 18:39:42 -08:00
Tracy Zhou 9ccd5d4257 Introduce taskbar_phone_size
In small screen, we use 48dp for nav bar height, while it's 60dp for task bar.

Bug: 230395757
Test: manual
Change-Id: Ia7083a1b2246981466e1163404c63b645a6bf5b1
2023-12-13 00:38:15 -08:00
Tracy Zhou de28c115b2 Fix phone mode task bar inset values not correctly initialized
We rely on contentHeightToReportToApps and tappableHeightToReportToApps (that ultimately call into DeviceProfile) of TaskbarStashController to initialize the insets. However, DeviceProfile only initializes those values when isTaskbarPresent is true. Rather than completely changing the initialization of DeviceProfile, we special case in TaskbarStashController that uses the bar height for inset

Bug: 274517647
Test: turn on FLAG_HIDE_NAVBAR_WINDOW and TASKBAR_NO_RECREATION, make sure the insets are correct in both 3 button and gesture nav mode
Change-Id: I164a6e2c9f9d24888155b45325ee8ce46ca2c39f
2023-10-10 13:02:16 -07:00
Tracy Zhou cfbf3ff695 Set correct stashed task(nav) bar height with taskbar/navbar unification
Again caused by DeviceProfile not initiating task bar stashed and unstashed height in folded state with unification code

Test: Make sure that task(nav) bar has the correct height in both folded and unfolded state
Bug: 274517647
Change-Id: I0d86cfccc6f096bc983f87c57fdfac9800fd4d41
2023-10-05 22:51:10 -07:00
Mike Schneider f0f94f2ed9 Hide taskbar content while dreaming.
When entering the dreaming state, the TaskbarDragLayer is faded out.
Upon wake up, a slight delay is added to  allow the SFPS reader to do
its magic, so the lockscreen-navbar does not pop-in just to be removed
again.

Bug: 271440683
Bug: 275319714
Fixes: 271440683
Test: manual (http://shortn/_cQudGXDSDU)
Change-Id: I34e02f02288bace39626d531d115fc994b11f371
2023-04-05 09:40:21 +02:00
Jon Miranda 9c478b6c29 Add taskbarIconSize to GridOption/DisplayOptions
- Renamed variables to make it more clear what they represent
- DeviceProfile will be source of truth for taskbar
  sizes

Bug: 265144213
Test: phone, multi-display, tablet
Change-Id: Id9c19d15a65894fd7645e0f876a4b6527b713c34
Flag: ENABLE_TRANSIENT_TASKBAR=true
2023-03-24 12:29:11 -07:00
Jon Miranda 3344ec7004 Add spring animation when stashing transient taskbar.
Bug: 273961611
Change-Id: I35a658a5e30a155094a48effdefc3895f45e0483
Flag: ENABLE_TRANSIENT_TASKBAR
Test: stash transient taskbar
2023-03-21 10:25:48 -07:00
Jon Miranda 13e9b9f889 Translate the taskbar icons to match nav handle shape.
- We need to reset icon alignment whenever icon layout bound
  changes. This fixes the issue where we build an icon
  alignment animator before any of the views are laid out.
- Separated animation logic between.
  createTransientAnimToIsStashed and createAnimToIsStashed
* The values still require a bit more tuning but this gets us
  a lot closer to spec for many of the motion polish.

Bug: 267806083
Bug: 246634367
Bug: 246635237
Test: manual
Change-Id: Id122134b22ef4e418ce632e4a8137239dc8bb313
2023-02-17 10:56:59 -08:00
Winson Chung 8bce18a562 Update region sampling to account for window visibility
- Similar to the nav bar, we should also disable region sampling then
  the window is no longer visible (ie. when in immersive mode) otherwise
  we fall back into gpu composition which consumes more battery

Fixes: 268280575
Test: Enter immersive mode and verify region sampling is disabled
Change-Id: I99bf8986c6f22fd8d480d255d10cfcd39cfb79e3
2023-02-11 01:02:35 +00:00
Federico Baron 47d81686e6 Move AnimatedFloat from quickstep to launcher
We are moving AnimatedFloat to launcher to be able to use this in class in launcher. Having it in launcher will allow us to do restore icon treatment animations to do with scaling the icon size

Bug: 254858049
Test: verified that the device still works
Change-Id: I1c4c47ab436c389a94abf7c910c1a44724efc955
2022-12-08 13:58:07 -08:00
Stefan Andonian 146701ca3e Move SharedPreferences code to its own class.
Bug: 251502424
Test: Code compiled correctly.
Change-Id: Iea0d6ab2999504117546ee0f7adc0c7b8b45c065
2022-11-17 17:22:47 +00:00
Jon Miranda 29f7474056 Have responsive taskbar UI during swipe up gesture.
- Makes taskbar threshold an absolute Y threshold
  instead of a distance threshold.
- Moves handle, taskbar view, and taskbar background
  during the swipe up gesture

Next CL will address transforming the nav handle <-> taskbar
and ensuring that there's a clean handoff

Bug: 246631059
Test: swipe up on taskbar, release. see bounce
      swipe up on taskbar to go home, proper icon alignment
      swipe up on taskbar, pause for overview, see bounce
      -> further movement should not move taskbar
      test launcher3

Change-Id: I141236fd72428cda7edd0ff116de1d478d18c722
2022-11-08 14:50:02 +00:00
Sunny Goyal d859060860 Merging MultiValueAlpha with MultiPropertyFactory
Bug: 246644619
Test: Presubmi
Change-Id: Id5abc5f3169544656f1139ae17ca59e34ac65dac
2022-10-24 14:38:18 -07:00
Vinit Nayak d6c5147524 Landscape 3 button nav on taskbar phone supported
* TODO: Seascape bar positioning, add tests

Change-Id: I542be2f2f682d8c8a9cdd9bb6c667c44ca167f3e
Merged-In: I542be2f2f682d8c8a9cdd9bb6c667c44ca167f3e
2022-10-17 13:59:18 -07:00
Vinit Nayak 8a3d05587e Show 3 button nav on phone in Taskbar (1/2)
* TODO: Landscape/seascape support,
        Separate nav spacing out into
        separate class/add tests

Bug: 219035565
Change-Id: I8f5c007f04ea4d6df15962772806356181d764ff
2022-08-09 13:25:50 -07:00
Vinit Nayak 7db37b3d94 Use Taskbar window for phones (only works on gesture nav) with flag
* 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
2022-08-01 17:48:09 -07:00
Schneider Victor-tulias 3f6c473164 Fade out the taskbar icons when animating to overview in 3 button nav.
Bug: 231213105
Test: from home, opened recents, then went back home, then went back to recents, resumed an app, then went back to recents and resumed the same app (both in 3-button and gesture nav)

Change-Id: I83b1b33cafb95353f36a126b93fcaf3b536d3bf4
2022-07-19 11:35:37 -07:00
Tony Wickham 9a54d2aa43 Hide taskbar while VoiceInteractionWindow is visible
- Fade out icons (or stashed handle if stashed)
- Move background to APPLICATION_OVERLAY layer (behind VIW)
  - Only for gesture nav
- On home screen in 3 button mode, translate buttons down when assistant
  is invoked

Test: Invoke assistant, ensure it draws above taskbar background and
taskbar stops drawing icons or stashed handle
Bug: 225200928

Change-Id: I7807d30df8f358295b8231d89217c7413f32c6f9
Merged-In: I7807d30df8f358295b8231d89217c7413f32c6f9
2022-06-09 05:21:42 +00:00
Tony Wickham a681cf6abe Migrate from InsetsInfo.contentInsets to WindowManager.LayoutParams#providedInternalInsets
- This allows us to distinguish taskbar's ITYPE_EXTRA_NAVIGATION_BAR insets from its ITYPE_BOTTOM_TAPPABLE_ELEMENT insets
- Set nav bar insets as before (contentInsets)
- Set tappable elements insets the same, except when taskbar is stashed, in which case set to 0

Test: TaplTestsTaskbar; manually stash/unstash taskbar, open IME, open Calculator (which uses tappableElement() insets) and Contacts (which uses systemBars())
Fixes: 215411414
Change-Id: If00f7a590b0780715d5b8159f5135054364ce84e
2022-04-21 16:15:41 +00:00
Schneider Victor-tulias fa0bfee97a Add log dumps for taskbar state
Test: created bugreport and checked logs
Bug: -
Change-Id: Ic0c2330b18c8daf181ae5b236e0c4b212d630fa3
2022-01-20 14:41:25 -08:00
Tony Wickham 821e37b447 Stash taskbar when IME is present, including during gestures
- SysUI removes SYSUI_STATE_IME_SHOWING when starting a gesture from an app, but because unstashing has implications on the gesture transition (e.g. clips the bottom of the app), we defer handling the ime hiding until the gesture settles. Repurposed the flow that swaps the taskbar background during the gesture to support this case as well.
- Delay the unstash when IME is closing, to align with the end of the IME exit transition
- Remove TaskbarViewController.ALPHA_INDEX_IME now that we stash when IME is opening, since stashing already hides the taskbar icons
- Also support passing a starting progress to the stashed handle reveal animation, to allow it to be reversed when cancelled. For example, when returning to an app that has IME showing, we first start unstashing because we're in an app, but then we get the signal that IME is attached so we stash again almost immediately (within a frame or two).

Test: In both 3 button and fully gestural, open a keyboard in an app, ensure taskbar gets out of the way and then reappears at the end when the keyboard is dismissed
Bug: 202511986
Change-Id: I93c298a98ba369ea6310466ff3f802231c582687
2021-11-23 16:37:06 -08:00
Tony Wickham bb6e278f14 Fix taskbar layout issues in setup wizard
- Align nav buttons (only back is enabled) to start instead of end
- Don't animate from init()
- Provide 0 contentInsets.bottom
  - Auto-stash the taskbar during setup
  - Hide the stashed handle by adding an alpha channel for home disabled
  - Report 0 contentInsets when stashed if the handle isn't visible
- Tint nav buttons according to theme

Test: adb shell am start -a android.intent.action.MAIN -n com.google.android.setupwizard/.SetupWizardTestActivity
Bug: 194786060
Change-Id: I4a40501e8aad2a38ec00398efe9ea3dbfa7428cd
2021-10-14 21:50:03 -07:00
Tony Wickham 6db0cf1e22 Merge "Aniamte stashed handle color changes" into sc-v2-dev 2021-09-30 02:17:18 +00:00
Tony Wickham 0ede0fa405 Aniamte stashed handle color changes
Test: Swipe from light background to dark background, ensure handle animates the color change
Bug: 193938970
Change-Id: I815c3a364019935bdf3d69309e695ac34b119c5e
2021-09-29 16:19:49 -07:00
Tony Wickham a93e158352 Update stashed handle region to only include the handle
Before it included the whole width/height of the view, rather than just the outline where the handle is drawn.

Test: Swipe up from a light app on dark wallpaper, ensure handle changes color as soon as the white app background is past halfway through the handle
Bug: 193938970
Change-Id: Ic8b83f60976f05b8ff56590422bd9b2fa6140e76
2021-09-29 15:47:58 -07:00
Tracy Zhou 334cae420e Tint task bar based on sampling of colors in the area
TODO: Add transition animation

Bug: 193938970
Test: manual
Change-Id: I0ffb94e0f11d47685a268ee8d057b6997f3a2ff6
2021-08-17 23:26:28 -07:00
Tony Wickham 8a2c1cbc5a Add taskbar stashing feedforward, i.e. hint at upcoming stash/unstash
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
2021-07-19 14:09:33 -10:00
Tony Wickham 3fd22847ac Initial commit of taskbar stashing
- Added StashedHandleViewController to provide properties such as ViewOutlineProvider to animate the handle that's shown in place of taskbar while it's stashed
- Added TaskbarStashController to coordinate the stashed state, including orchestrating the animation across taskbar controllers
- Added TaskbarStashInput consumer to detect long press in the nav region when taskbar is stashed

Behavior:
- Long pressing taskbar background animates to the stashed state by morphing the TaskbarView into the stashed handle view and offsetting the background offscreen
- We persist the stashed state across app launches and reboot; to unstash, long press the stashed handle
- We also visually unstash when going back home

Test: long press tasbkar background when in an app to stash it, long press the resulting stashed handle to unstash; while stashed, swipe up to home to also unstash until launching another app
Bug: 189503603
Change-Id: I698eff785388dff1ef717c76879719d6af236c2d
2021-06-18 17:51:39 -07:00