Commit Graph

1163 Commits

Author SHA1 Message Date
Tiger Huang
228988d5e7 Merge "Send the attached frame to the client" into tm-qpr-dev 2022-06-23 06:11:07 +00:00
Hongwei Wang
3d29930505 Merge "Get PiP state from Shell in EdgeBackGestureHandler" into tm-qpr-dev 2022-06-22 16:56:57 +00:00
Hongwei Wang
e9e4ca3ecd Get PiP state from Shell in EdgeBackGestureHandler
We use to rely on the onActivityPinned and onActivityUnpinned callbacks
from Window Manager in EdgeBackGestureHandler to determine the current
PiP state and it will always be reset to false when
EdgeBackGestureHandler is being re-created, for instance, as a result of
folded state change.

Deprecated also the Pip#setPinnedStackAnimationListener interface method
since it's not in use and it may cause confusions over
IPip#setPinnedStackAnimationListener.

Bug: 174702196
Bug: 198651351
Test: stash in unfolded state -> fold -> drag to unstash \
      stash in folded state -> unfold -> drag to unstash
Test: atest WMShellUnitTests:PipControllerTest
Change-Id: Id874056415011ee8a55dadcd4ec6af6e1b568092
2022-06-21 18:19:10 -07:00
Tiger Huang
157514510f Send the attached frame to the client
The attached frame is the frame of the parent window that its child
attaches to, as long as the child is not
TYPE_APPLICATION_ATTACHED_DIALOG. It is a factor while computing the
window frame.

Previously, we let the child obtain the attached frame from its parent
view root. However, if the parent and the child are not in the same
process, it can be tricky.

This CL sends the attached frame from the server to the client via
ClientWindowFrames. In this way, the child can compute its window frame
without having to accessing the parent view root.

Bug: 161810301
Bug: 175861127
Test: atest ActivityRecordTests WindowLayoutTests
Change-Id: Ia844a4c927027e305a56114216eaee2bf7933b1f
2022-06-20 21:09:40 +08:00
Shan Huang
f89eb1e5b5 Pass the values of the MotionEvent instead of the event instance itself
to BackAnimation.

The original MotionEvent instance may have been recycled by the time BackAnimation processes it, since BackAnimation runs in a different thread. This could cause crashes from both Java side and native side, as described in b/233163975#comment11.

We work around this by passing the numerical values that BackAnimation
need instead of the MotionEvent itself.

Test: Swipe back in various scenarios. Make sure back can be triggered.
Try cancel. Make sure back can be cancelled.
Test: atest BackAnimationControllerTest
Bug: 233163975

Change-Id: I4792debc705536b49d1caafcc43e5466941c1d43
2022-06-18 03:39:53 +00:00
Hongwei Wang
56dcce9893 Avoid conflict surface reset on auto-enter-pip
This fix was introduced in ag/16150706 and recently got overridden with
ag/18751998, UnfoldAnimationController#resetTask happens in between
RecentsAnimationController cleanup and PipTaskOrganizer#onTaskAppeared
may cause flicker at the end of auto-enter-pip transition.

Fix it by intentionally ignore resetSurface if the task's pinned.

Bug: 235737615
Test: auto enter pip repeatedly on foldable
Test: atest WMShellUnitTests:UnfoldAnimationControllerTest
Change-Id: I5de034f5c0d3f150dd77aadb97c0d2b3f9c64c15
2022-06-14 17:07:50 -07:00
Mateusz Cicheński
8c21721c18 Use tapl instrumentation to go home.
This fixes an issue in gesture nav, when the swipe would not be properly recognized.

Test: atest WMShellFlickerTests:EnterPipOnUserLeaveHintTest
Bug: 234848637

Change-Id: I011cd3a83531f48939d4ac4d7686e0f142b2766b
2022-06-09 22:04:13 +00:00
TreeHugger Robot
83f09e945a Merge "Add CUJ for dragging notification icon to split" into tm-qpr-dev 2022-06-09 03:38:24 +00:00
Nick Chameyev
8033604552 Revert: Revert: Migrate unfold animation to Shell transitions [Part 3]
Adds real unfold animation for split-screen tasks when
doing the Shell unfold transition.
The approach is similar to full-screen tasks:
we animate the surfaces using shell transition
only when unfolding, when folding we are doing
it in the old way (by directly accessing
the surfaces from TaskOrganizer).

Refactored the previous fullscreen/splitscreen unfold
controllers flow to have one controller where we can
register diferrent 'animators'. This controller listens
to all task events in the shell task organizer.

Bug: 204925795
Test: folding/unfolding, rotating with a split layout
  when Shell transitions enabled/disabled,
  rotating display when folded/unfolded
Change-Id: Iff608bc8ab2390a57b01de8f07bad681c979be49
2022-06-08 13:37:25 +00:00
Chilun Huang
cc34ae620f Add CUJ for dragging notification icon to split
Add CUJ to enter split screen by dragging notification icon.

Bug: 231399941
Test: atest EnterSplitScreenByDragFromNotification
Change-Id: I5d9dc065346256ec7a5fbfd9a1fede3bdb91d8ba
2022-06-08 16:53:30 +08:00
Jerry Chang
5e5d3a1544 Merge "Fix not able to launch multi-instance with drag and drop gesture" into tm-qpr-dev 2022-06-08 01:37:16 +00:00
Vinit Nayak
422f1d8b4e Merge "Rename split classes/variables for consistency" into tm-qpr-dev 2022-06-07 22:36:47 +00:00
Luis Delgado De Mendoza Garcia
3b628d7c69 Merge "Revert "Migrate unfold animation to Shell transitions [Part 3]"" into tm-qpr-dev 2022-06-07 01:19:45 +00:00
Vinit Nayak
5fc5261a8e Rename split classes/variables for consistency
Fixes: 233006032
Change-Id: I7c1627b05b93999d08ee4a89c1498ac91021c5b0
2022-06-06 16:33:47 -07:00
Mady Mellor
9f5ed9f3e7 Merge "Fix an issue where the pointer could be invisible" into tm-qpr-dev 2022-06-06 23:21:32 +00:00
Luis Delgado De Mendoza Garcia
2a7f7b919a Revert "Migrate unfold animation to Shell transitions [Part 3]"
Revert "Update TaskListener constructors to match the upstream"

Revert submission 18628270-unfold-shell-p3

Reason for revert: b/235090315
Reverted Changes:
Ibe684471a:Migrate unfold animation to Shell transitions [Par...
I7bd398c96:Update TaskListener constructors to match the upst...
I7bd398c96:Migrate unfold animation to Shell transitions [Par...

Bug: 235090315
Change-Id: I8639d618131c09f7a5f0c776fb02c426b78b1fdd
2022-06-06 21:13:07 +00:00
Mady Mellor
25fdf10ad1 Fix an issue where the pointer could be invisible
Add setBackgroundAlpha and use that to change the alpha of the
expanded view background and pointer.

Test: manual - have a bunch of bubbles, expand them, dismiss the
               selected one
               => verify that the arrow is visible for the next bubble
	     - turn on home animation, swipe up to collapse a bubble
               => verify pointer looks fine
Bug: 234739591
Change-Id: If5823840d148e2031312c54eba9c0132b8aa3a4c
2022-06-06 12:20:27 -07:00
Nick Chameyev
cd6eac332c Merge "Migrate unfold animation to Shell transitions [Part 3]" into tm-qpr-dev 2022-06-06 09:33:10 +00:00
Mateusz Cicheński
e86b8edc91 Merge "Add a flicker test for entering PiP via navigation to Home" into tm-qpr-dev 2022-06-02 20:40:28 +00:00
Mateusz Cicheński
25cfccaaa0 Add a flicker test for entering PiP via navigation to Home
Bug: 216577639
Test: atest WMShellFlickerTests:EnterPipOnUserLeaveHintTest

Change-Id: I59448191a22c31e4591346de58695ff653e3687f
2022-06-01 17:27:20 +00:00
Jerry Chang
f62fecc458 Fix not able to launch multi-instance with drag and drop gesture
There are apps using alias activity name, result to wm-shell not able to
determine whether it's launching the same component or not. Update to
check the component name in the intent that created the task instead to
prevent affected by alias component name.

Fix: 224901460
Fix: 234304765
Fix: 233922245
Fix: 233174334
Fix: 232034346
Test: atest WMShellUnitTests
Test: manual check drag to launch multi-instance or drag to switch
      split position with reported apps work
Change-Id: I924120134bb3ce6abe582251e3afdc7a0825a6a5
2022-06-01 08:32:50 +00:00
TreeHugger Robot
70c1287127 Merge "Modify app expected position base on the drag behavior change" into tm-qpr-dev 2022-05-27 21:39:24 +00:00
Mateusz Cicheński
2542f63ded Merge "Add keep clear area avoidance algorithm for PiP" into tm-qpr-dev 2022-05-27 19:53:42 +00:00
Chilun Huang
31b85ddad7 Modify app expected position base on the drag behavior change
Because ag/18529596 change the drop position, the test need to modify
the expected position of the app.

Bug: 232878493
Test: atest EnterSplitScreenByDragFromAllApps
Change-Id: Ib4823a899aa42ab2c0b23f9e654cbf13becb02bd
2022-05-28 02:24:33 +08:00
Nick Chameyev
181024c157 Migrate unfold animation to Shell transitions [Part 3]
Adds real unfold animation for split-screen tasks when
doing the Shell unfold transition.
The approach is similar to full-screen tasks:
we animate the surfaces using shell transition
only when unfolding, when folding we are doing
it in the old way (by directly accessing
the surfaces from TaskOrganizer).

Refactored the previous fullscreen/splitscreen unfold
controllers flow to have one controller where we can
register diferrent 'animators'. This controller listens
to all task events in the shell task organizer.

Bug: 204925795
Test: folding/unfolding, rotating with a split layout
  when Shell transitions enabled/disabled,
  rotating display when folded/unfolded
Change-Id: I7bd398c963125ceb7c8f8e3786a274853366feb3
2022-05-27 13:54:00 +00:00
TreeHugger Robot
e4d77e2522 Merge "Add assertions for layers become visible" into tm-qpr-dev 2022-05-26 05:56:07 +00:00
Mateusz Cicheński
407ea1ad4f Add keep clear area avoidance algorithm for PiP
The algorithm computes a new position for PiP based on the registered
keep clear areas within the system. If no occlusion happens the original
position is being returned. Otherwise, the bounds are moved in one of the
available directions so that none of the keep clear areas are occluded
while keeping PiP within the display bounds.

Test: atest PipKeepClearAlgorithmTest
Bug: 183746978
Change-Id: Ic2d11861329a46e2da0448f90283f67f6e7125d7
2022-05-25 23:01:54 +00:00
Chilun Huang
6384389786 Add assertions for layers become visible
Add more assertions for layers become visible.

Bug: 232878493
Test: atest EnterSplitScreenByDragFromAllApps

Change-Id: Ida948525b618b800915813cf2927523600e23724
2022-05-25 15:07:28 +08:00
Vadim Caen
21421cd776 DO NOT MERGE Only rely on developer option for back animation am: ab58191c7f am: 1d83999ad0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18310267

Change-Id: I59cdc9e93cce4e8b7cbeaea5f0816d5a78a7d7de
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-23 19:34:50 +00:00
Vadim Caen
1d83999ad0 DO NOT MERGE Only rely on developer option for back animation am: ab58191c7f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18310267

Change-Id: I150be6a4fae771ffe6e841806772aa2218ae871b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-23 19:32:00 +00:00
Vadim Caen
ab58191c7f DO NOT MERGE Only rely on developer option for back animation
BackNavigationController was still relying on a debug setting. Now the
animation request is handled via a boolean parameter passed by sysui,
which has access to the developer option.

Test: Existing test modified
Bug: 231502692
Change-Id: Icda4692e05396407d961610de0ce709492adadc1
Merged-In: Icda4692e05396407d961610de0ce709492adadc1
2022-05-23 10:43:04 +00:00
TreeHugger Robot
611e9ca2fa Merge "Create flicker tests for split screen" into tm-qpr-dev 2022-05-19 03:50:07 +00:00
Ben Lin
8f049afdf4 Merge "Apply PiP Params if there was a deferred info." into tm-dev am: 26b096d288 am: 2bbd40e21b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18380631

Change-Id: I260e95b48c681eb89929b05421286f5cdd8f66fb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-18 22:48:20 +00:00
Mady Mellor
4e4780bef5 Merge "Fix potential NPE & clean up some logic" into tm-dev am: 5126e8b1b5 am: 7d2923a911
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18421368

Change-Id: I9436983ccb31fcefcb82b68bdf6178274f6f4091
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-18 22:01:56 +00:00
Alex Johnston
00090b1d4a Merge "Add background protection when work biometrics is shown" into tm-dev am: ed00c662dc am: 9eeb0112fd
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18351382

Change-Id: Ic48ca6f44aabcb4cc02ac03dc656603f8e8a3c4f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-18 22:00:03 +00:00
Mady Mellor
2a40a813db Merge "When a user is removed make sure we remove their persisted bubbles" into tm-dev am: f0f1105de7 am: dd7397e3d5
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18153123

Change-Id: Ia9cb0ff9d31de4ba8d5fbc1d2227319ad45eeb4b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-18 21:54:49 +00:00
Shan Huang
f0712948d3 Merge "Add missing @Test annotation to ignoresGesture_transitionInProgress" into tm-dev am: 308f9bfa58 am: 8efc556da6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18407083

Change-Id: I24b15d7581da7864681a10dfc4b1a6cdfeb591f1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-18 21:53:10 +00:00
Shan Huang
87370813e4 Merge "Fix broken animation on two consecutive swipes." into tm-dev am: 8a91edd4a3 am: 1d57848828
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17963879

Change-Id: Iebe3b12e42187ca004384938826f489aba5565b9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-18 21:49:44 +00:00
Ben Lin
26b096d288 Merge "Apply PiP Params if there was a deferred info." into tm-dev 2022-05-18 18:02:09 +00:00
Chilun Huang
97db297984 Create flicker tests for split screen
Create the base split screen flicker test and the CUJ of entering split
by dragging from all apps.

Bug: 231399426
Bug: 232878493
Test: atest EnterSplitScreenByDragFromAllApps
Change-Id: Ic684474457f5da28554ff801f3e03d585e8db9fb
2022-05-18 17:22:52 +00:00
Mady Mellor
5126e8b1b5 Merge "Fix potential NPE & clean up some logic" into tm-dev 2022-05-17 16:50:10 +00:00
Alex Johnston
ed00c662dc Merge "Add background protection when work biometrics is shown" into tm-dev 2022-05-17 16:35:37 +00:00
Mady Mellor
185782ddbc Fix potential NPE & clean up some logic
- I had accidentally swapped the values in removeBubblesForUser
  in one place which could lead to a crash, it's actually simpler
  to just do the removal there since it's the parentUser that was
  removed so we can remove all of those entries.
- In other places I've added a null check before performing the
  removeIf to be safe
- Added a test checking bad input

Bug: 232847471
Test: atest BubbleVolatileRepositoryTest
Change-Id: I10f5b24e591db62edbb63ad40e588ba19ab621c1
2022-05-17 00:21:44 +00:00
Mady Mellor
f0f1105de7 Merge "When a user is removed make sure we remove their persisted bubbles" into tm-dev 2022-05-16 22:12:56 +00:00
Shan Huang
4b016bd6eb Add missing @Test annotation to ignoresGesture_transitionInProgress
Test: m -j
Test: atest BackAnimationControllerTest#ignoresGesture_transitionInProgress
Bug: 232793611

Merged-In: I1738b40c8df1c9af7bb0e63586cb2e70b3c9e8ca
Change-Id: I1738b40c8df1c9af7bb0e63586cb2e70b3c9e8ca
2022-05-16 21:00:20 +00:00
Mady Mellor
08a4570f32 When a user is removed make sure we remove their persisted bubbles
- Update the NotificationLockscreenUserManager code to listen for
  account removals and notify the new listener method onUserRemoved
- Use this to trigger removals in the bubble data repository / UI

Some users may have a parent user (e.g. work profile can belong to
a parent user). We store persisted bubbles under the parent user and
have a separate field for the specific bubble user. To support this,
I pass the parent of the removed user.

Test: atest BubbleVolatileRepositoryTest BubbleDataTest
Bug: 218525763
Change-Id: Ia147cbac15ebce70bbbcc52926089f33901a99dc
Merged-In: Ia147cbac15ebce70bbbcc52926089f33901a99dc
2022-05-16 18:36:49 +00:00
Shan Huang
8a91edd4a3 Merge "Fix broken animation on two consecutive swipes." into tm-dev 2022-05-16 15:16:02 +00:00
Alex Johnston
b3aa96f89f Add background protection when work biometrics is shown
* Remove existing coloured background.
* Add a background with a layout that includes a
  badged icon of the app being opened.

Manual testing steps:
* Set up device with a work profile using TestDPC
* Set a fingerprint in the work profile
* Open a work app
* Lock the device
* Verify the background protection is shown behind
  the biometric prompt

Screenshots:
* Dark mode: https://screenshot.googleplex.com/3SwGWrBREYoZFaH
* Light mode: https://screenshot.googleplex.com/8bzX9wLoFGJ2ado

Bug: 206761107
Test: Manual testing
    WorkLockActivityControllerTest
    TaskStackListenerImplTest
Change-Id: I90d117a97d7457a3186953c16db8bd0bbac048ed
2022-05-16 14:20:56 +01:00
Shan Huang
e8f9151270 Fix broken animation on two consecutive swipes.
The bug is caused by allowing a second swipe to restart animation in
BackAnimationController. This CL adds a flag to reject incoming gestures
when an uninterruptable transition (e.g. commit transition, cancel
transition) is already in progress.

To prevent an unfinished transition from failing all future swipes, this CL also introduces a timeout mechanism to start accepting gesture again after a fixed period.

Bug: 221394367
Test: Do two quick consecutive swipes and observe the back to home
animation.

Merged-In: Ib969afb72cc15bd268613546f3495008b6bc9125
Change-Id: Ib969afb72cc15bd268613546f3495008b6bc9125
2022-05-15 23:30:33 +00:00
Ben Lin
efd8255419 Apply PiP Params if there was a deferred info.
If there was a deferred info, that means PiP params was saved but not
applied earlier. Force apply it.

Bug: 232104080
Test: Double tap on YouTube after exiting earlier Map PiP, aspect ratio
is correct

Change-Id: I52e9f38d4a923fdfee06e7ff37eb61a599caba04
2022-05-13 14:35:26 -07:00