Commit Graph

423 Commits

Author SHA1 Message Date
Sergey Nikolaienkov
108951ecb3 Merge "Add TvPipMenuTests" 2020-11-10 09:22:41 +00:00
wilsonshih
c1c4c5a661 Delegate splash screen starting window to SystemUI(1/N)
Mirror PhoneWindowManager#addSplashScreen to StartingSurfaceDrawer,
which make WMShell able to draw the splash screen starting window.

- Use StartingSurfaceController#DEBUG_ENABLE_SHELL_DRAWER to switch
drawer when developing this feature.

- Temporarily put StartingSurfaceDrawer in ShellTaskOrganizer, the
drawer should be controlled by a controller which should be create
while porting ActivityRecord#addStartingWindow to Shell.

Ref doc: go/delegate_starting_window

Bug: 131727939
Test: atest AppWindowTokenTests WindowOrganizerTests ActivityStackTests
Test: atest WMShellTest ShellTaskOrganizerTests
StartingSurfaceDrawerTests
Test: check from winscope that the splash screen window can
attach to/detach from the ActivityRecord.

Change-Id: I6dfc9ff75807e2f9479149d14f219c91a6527393
2020-11-10 15:49:07 +08:00
Winson Chung
6dd73e98d7 6/ Fix some flakey issues with dragging to split
- Ensure that the task info activity type always matches the actual task
  activity type (can be different than the window configuration type)
- Ensure that the targets hit rects respect the insets, and that dragging
  out of all targets (but still within the window) will hide the last
  target
- Work around race with launching secondary task when splitting, wait
  until the split screen task org has moved existing tasks to secondary
  split root before starting the new task, and also update the home task
  position when going home (b/172686383)
- Add a timeout to clean up drag surfaces if SysUI crashes while
  mid-drag
- Clean up some other calls to get activity type/win mode

Bug: 169894807
Test: atest DragDropControllerTests
Test: atest DragAndDropPolicyTest
Test: atest SplitScreenTests
Change-Id: I7ae11cc38b1e927d955798ef1056e17c9e435758
2020-11-10 05:46:24 +00:00
Winson Chung
e3d75ac262 Clean up task stack listeners
- Have shell provided a task stack listener that various controllers can
  add to, and remove registration from outside the controllers (this
  also removes methods on the interface exposed only for use from the
  task stack listeners)
- Move copy of InputConsumerController into shell (shared lib version
  can probably be refactored into use just by launcher for gesture nav)
- Hide remaining wm components that are exposed now that all the
  features are in the Shell

Bug: 169894807
Test: atest WMShellUnitTests WMShellTest
Test: Verify Pip/Split/One handed still behaves as expected
Change-Id: If0f50f6b701ac4b013a9e41fe6f88857ea35bf5b
2020-11-06 16:13:03 -08:00
jorgegil@google.com
2dd597ae41 Fix resizability in apps using the override min size
Fixes an issue where activities using the manifest min
width/height was causing them to not be resizable.
This was caused by:
1. transformBoundsToMinimalSize is called on drag resize, which
causes the bounds to go back to the minimal size.
2. After fixing 1, drag resizes "jumps" from the minimal size to
the default bounds because the normal bounds are not set to the
minimal size
3. Reentry bounds are not restored correctly because when
calculating the destination bounds, the bounds where always
transformed to the minimal size at the end.

This CL changes a few things to fix these issues:
1. The minimal size is now considered when calculating the
entry bounds or transforming bounds to aspect ratio. This means
that instead of calculating the bounds/size using the "default"
size and then adjusting to the minimal size, we'll look at
whether we should calculate using the default or the minimal size
from the very beginning.
2. When the minimal size changes (onTaskAppeared, onTaskInfoChange,
swipeToHome), the normal bounds and movement bounds need to be
recalculated. The normal bounds are the default bounds, and the
default size changes if the minimal size is set or unset.
3. The min edge size used to be set by PipTouchHandler depending
on whether PIP is expanded to either expandedMinEdgeSize or 0. It
is now set to mDefaultMinEdgeSize if not expanded. This was not
causing issues before but it started to with these changes.

Also moved the minEdgeSize and overrideMinSize to PipBoundsState
as part of b/169373982

Fixes: 172598623
Bug: 169373982
Test: com.android.wm.shell.pip
Test: enter pip, expand, resize, reentry bounds,
minimal size in manifest, aspect ratio change all work
correctly.

Change-Id: I4baa46eb641323282fc23fd4499365c83ff38a7d
2020-11-06 16:13:03 -08:00
TreeHugger Robot
445e62382c Merge "Test PipNotification when there is a MediaSession" 2020-11-06 19:38:59 +00:00
Ben Lin
d1bd9998e1 Merge "PiP: Consider stash state when calculating snap fraction." 2020-11-06 19:00:58 +00:00
Sergey Nikolaienkov
50118593eb Add TvPipMenuTests
Bug: 171520419
Test: atest WMShellFlickerTests:TvPipMenuTests
Change-Id: If74cb25f6c1c46704f35d2c8073c0fdb50c8d7eb
2020-11-06 10:56:31 +00:00
Sergey Nikolaienkov
fbc3469d7b Test PipNotification when there is a MediaSession
Bug: 171520419
Test: atest WMShellFlickerTests:TvPipNotificationTests
Change-Id: Ie70f394e572e9adfeee7ecff9ba4a0e686197ca4
2020-11-06 08:17:01 +00:00
Ben Lin
e240978118 PiP: Consider stash state when calculating snap fraction.
If the PiP is stashed and something causes it to move (such as, screen
rotation or unexpand animations after timeout), we calculate its current
snap fraction, get the new bounds and movement bounds, and re-apply the
snap fraction. However during the snap fraction calculation, it assumes
that PiP bounds is within the movement bounds, which is not true when
PiP is stashed. So take this into consideration when doing the math.

This also changes the stashed status to reflect more than just yes/no -
but rather NONE/LEFT/RIGHT.

Bug: 165793553
Test: Stash PIP while menu is showing, and wait for timeout
Test: Stash PIP, rotate the device, see that snap fraction is persisted
Change-Id: Ib4eda44b7f280362b52609e4092dd4231ac8f04c
2020-11-05 15:35:49 -08:00
Winson Chung
cee4f5ed8e Skip restoring one handed settings if not supported on device
Bug: 172581971
Test: atest WMShellUnitTests
Change-Id: I4814c2609a39c523e199eb56f8060a9dc0bbc58b
2020-11-05 19:11:55 +00:00
Sergey Nikolaienkov
26fd1f1969 Add tests for TV Pip notification intents
Bug: 171520419
Test: atest WMShellFlickerTests:TvPipNotificationTests
Change-Id: I615cda0ed826d875ea8f2eed4c570280be6d6ae9
2020-11-04 15:54:29 +00:00
Sergey Nikolaienkov
757e60e057 Introduce .wm.flicker.pip.tv.TvPipNotificationTests
Move first test out of android.systemui.cts.tv.PipNotificationTests to
com.android.wm.shell.flicker.pip.tv.TvPipNotification tests.

Bug: 171520419
Test: atest WMShellFlickerTests:TvPipNotificationTests
Change-Id: I6a3e2fb96a7688814ce909f28d6d904356fad3fd
2020-11-04 12:32:51 +00:00
Sergey Nikolaienkov
58dc55b6e8 Prepare .wm.shell.flicker for test migration
Move common constants to a separate class.
Rename abstract FlickerAppHelper to BaseAppHelper.
Give BaseAppHelper a UiDevice (from androidx).
Make BaseAppHelper resposiblt for creating launcher.
Teach BaseAppHelper to launch app via intent and force-stop it.
Teach PipAppHelper to properly close Pip on TVs and work around
hasPipWindow() method not working on tv.

Bug: 171520419
Test: atest WMShellFlickerTests
Change-Id: Icc102a51351605b4adb27c3a1c2d73030eac33ff
2020-11-04 12:25:34 +00:00
Tony Huang
ae7e2fb0bb Merge "Migrate Bubbles to wm-shell (5/n)" 2020-11-04 07:31:30 +00:00
Winson Chung
f97bf81d1e Merge changes I581de3ff,I7d777c59
* changes:
  5/ Validate and resolve shortcut & task activity infos
  4/ Add basic drag and drop policy & handler for the shell
2020-11-04 05:57:22 +00:00
Tony Huang
eb01a25c87 Migrate Bubbles to wm-shell (5/n)
Move bubbles package and related resources to shell package,
also copied some used codes and resources.

Bug: 161980186
Test: atest SystemUITests
Test: atest WMShellUnitTests
Change-Id: Ia108bd4149b3c3bf86631ba1a7a6bce0e76af78f
2020-11-04 11:01:56 +08:00
Winson Chung
93fd63d021 4/ Add basic drag and drop policy & handler for the shell
- Add basic policy for handling drags over home/fullscreen tasks
  /split tasks. For now, default to only allowing split to non-docked
  root task
- Refactor drag layout to have same lifecycle as the window instead of
  being per-drag session
- Resolve activity info for tasks as well as activity drag items
  (shortcuts to be resolved in a follow up CL)
- Fix crash due to sending drag events to all displays

Bug: 169894807
Test: atest DragAndDropPolicyTest

Change-Id: I7d777c59296e9ca9e1d169c8a021f9263af94d65
2020-11-02 14:53:56 -08:00
Hongwei Wang
12477f3fd5 Fix crash from PipMenuActivityController when auto-pip's enabled
Deprecates also the SystemWindow reference in PipTaskOrganizer

Bug: 172274913
Bug: 172275014
Test: manually enter PiP with auto-pip enabled
Change-Id: I0c817a51fd3c24036151deec0cf1487759573d44
2020-11-02 14:25:30 -08:00
Jerry Chang
38af94c821 Merge "Allow children task of created-by-organizer task to be organized" 2020-11-02 03:40:38 +00:00
Ben Lin
f2d1d26479 Merge "PiP: Move menu to SystemWindow." 2020-10-30 06:45:29 +00:00
Ben Lin
4ee2588a05 PiP: Move menu to SystemWindow.
This is the first step to move the menu to fullscreen, but not quite
yet.

This CL does:
- Move PipMenuView to be attached to SystemWindow, instead of child of
PiP leash
- Use SyncRtSurfaceTransactionApplier to ensure the menu moves along the
PIP leash at the same time when the menu is visible
- Remove setup/destroy code in PipTaskOrganizer with SurfaceViewHost
- Expose Window information to Accessibility services
- Refactor ShellRoot to take in a Layer type instead of windowType
instead

Bug: 161710689
Bug: 170151121
Bug: 169894316
Bug: 152738416
Test: Manual

Change-Id: I73c26f96784b35b9bb9a4bea452df55cf5913278
2020-10-30 01:47:34 +00:00
Jerry Chang
e6fc6a3c2a Allow children task of created-by-organizer task to be organized
Allows to organize direct child of root task created by organizer and
extends TaskInfo to reveal the parent task id.

To organize child task properly for each features, passes all child
task organizer events to the listener listening to its parent task if
feasible.

Fix: 169267298
Fix: 169266482
Test: atest WindowOrganizerTests
Test: atest SplitScreenTests
Test: atest PinnedStackTests
Test: atest WindowInsetPolicyTests
Test: atest WMShellUnitTests
Test: split screen works
Change-Id: I8e66f810c86fcdac3287adfa208d8e34786fc9b5
2020-10-29 16:20:19 +08:00
Jorge Gil
eed8af911a Merge "Add tests to verify last pip component name updates" 2020-10-28 20:34:17 +00:00
TreeHugger Robot
805dcb4435 Merge "Move PipMediaController from pip/phone/ to pip/" 2020-10-28 10:44:04 +00:00
jorgegil@google.com
9f86389c97 Add tests to verify last pip component name updates
Bug: 169373982
Test: atest com.android.wm.shell.pip
Change-Id: I49df43b9462c50f1beef774a14583afda9d8cf3b
2020-10-27 16:19:49 -07:00
jorgegil@google.com
9bc88aad46 Reland: Add tests to verify aspect ratio updates
Test: atest PipTaskOrganizerTest
Bug: 169373982
Change-Id: I4e9c5d3fe8c9d87e16d4a86bd311ee76bbb206b5
2020-10-27 16:16:56 -07:00
Sergey Nikolaienkov
ca3aa40238 Move PipMediaController from pip/phone/ to pip/
Move PipMediaContoller from com.android.wm.shell.pip.phone to
com.android.wm.shell.pip.
Since PipMediaController relies on the PipUtils, move that along.

Bug: 169575409
Bug: 165795012
Test: make WindowManager-Shell
Change-Id: Ide2dfd813eb8df906b58f50e1ed9b57a62d63dbc
2020-10-27 19:11:37 +00:00
TreeHugger Robot
1a9d724648 Merge "Revert "Add tests to verify aspect ratio updates"" 2020-10-26 23:26:11 +00:00
Brad Ebinger
235a0cfe1f Revert "Add tests to verify aspect ratio updates"
This reverts commit 0796ebff82.

Reason for revert: Looks to have broken master b/171738702

Change-Id: Iac7a680dd15b5c884fa74592484b7c094e3177c4
2020-10-26 22:16:42 +00:00
Jorge Gil
3a83894396 Merge "Add tests to verify aspect ratio updates" 2020-10-26 21:04:38 +00:00
jorgegil@google.com
0796ebff82 Add tests to verify aspect ratio updates
Test: atest PipTaskOrganizerTest
Bug: 169373982
Change-Id: Ia3bb5a721049e33611d0efda0fc29c5815ac7fe4
2020-10-26 09:40:59 -07:00
Mariia Sandrikova
2d81132f30 Move letterbox task positioning to LetterboxTaskListener.
Changes:
- Introduce LetterboxTaskListerner
- Pass activity bounds and task position from WM Core to WM Shell
- Position a task from LetterboxTaskListener.

Fix: 170210431, 170213038, 168706428, 171549361
Test: go/wm-smoke
Test: atest ShellTaskOrganizerTests, LetterboxTaskListenerTest
Change-Id: I9c25b7fe1053900fe3b6eea8e71db302a0c14a5a
2020-10-26 15:42:32 +00:00
Jorge Gil
1be6b7f462 Merge "Move display state into PipBoundsState" 2020-10-23 21:43:01 +00:00
Antonella Dellanzo
1905a06186 Merge changes from topic "fix-assertions-type-enable-param"
* changes:
  Fix params of flicker assertions
  Disable assertion in SeamlessAppRotation test
  Fix params of flicker assertions
2020-10-23 16:27:19 +00:00
Antonella Dellanzo
3b0ae16db3 Fix params of flicker assertions
As now the AssertionTypes in Flicker checks for the bug id to set the default value of the enabled param (ag/12886026), we are fixing all the calls to the assertions types as the params order changed.

Test: atest WMShellFlickerTests
Bug: b/162923992
Change-Id: I04c0b70aeb201dc1d7627571cc4809e959bd2370
2020-10-23 09:04:52 +00:00
jorgegil@google.com
448e8d4c9a Move display state into PipBoundsState
Migrates more state out of PipBoundsHandler as an effort
to split it into a state holder (PipBoundsState) and a
bounds calculating util.

Bug: 169373982
Test: atest com.android.wm.shell.pip
Change-Id: I37ab29c988be519a074ec260163632df3060efc4
2020-10-22 13:19:59 -07:00
Sergey Nikolaienkov
5eec4cefd1 Merge "Fix WMShellFlickerTest on TV" 2020-10-22 18:29:30 +00:00
Sergey Nikolaienkov
2bee685151 Fix WMShellFlickerTest on TV
Add intent-filter for LEANBACK_LAUNCHER to PipActivity and ImeActivity
in com.android.wm.shell.flicker.testapp.

Bug: 170484870
Test: atest WMShellFlickerTests:PipKeyboardTest
Change-Id: Ib9be4d4c30c5759a18b67be1a606c06562b47d3c
2020-10-22 13:46:05 +00:00
jorgegil@google.com
5ebaec9607 Move aspect ratio state into PipBoundsState
Couple of changes here:
1. mAspectRatio is moved to PipBoundsState
2. Simplified getDestinationBounds by removing the aspect ratio
param. It was always re-calculated, then sent to getDestinationBounds,
then updated mAspectRatio. Now mAspectRatio is updated first and
getDestinationBounds just uses the PipBoundsState's ratio.

Bug: 169373982
Test: aspect ratio is set correctly on enter PIP, and updated during
PIP mode if app changes it (e.g. Youtube)

Change-Id: I144960ff41bde4f18eb1e9a8e60ea0cba29a8470
2020-10-20 19:22:45 -07:00
Wale Ogunwale
0e6581c1e6 Support task listener by task id.
Allows for managing specific task regardless of windowing mode.
Converted TaskView which to use the new API.

Bug: 170153209
Test: All tests pass and bubbles works!
Change-Id: Ic5281bc9dd9124841834c88f2b85545107567417
2020-10-19 19:21:45 -07:00
jorgegil@google.com
5b8d244061 Move reentry state into PipBoundsState
Bug: 169373982
Test: existing tests pass, reentry works
Change-Id: I45af27637f24ad0822e4bdf65cd3a93d4a2442dd
2020-10-19 14:52:11 -07:00
TreeHugger Robot
1869ff1f1e Merge "Respect feature flag when providing Pip controller" 2020-10-15 13:06:41 +00:00
Winson Chung
3f4c002e1f Return the existing tasks when registering an organizer
- Existing tasks for supported windowing modes are returned when
  registering the organizer and the organizer will not receive
  onTaskAppeared() for these tasks.  For now, the shell task
  organizer will keep these tasks for reporting task appeared when
  individual components add listeners for their windowing modes.
- Fixed some tests now that we organize fullscreen tasks

Bug: 162028888
Test: atest WindowOrganizerTests
Test: atest ShellTaskOrganizerTests
Change-Id: Iedc5f58fbfa819e753a5dcea7a8eb9dee8b6843b
2020-10-13 20:58:25 -07:00
Jerry Chang
c8773d073a Respect feature flag when providing Pip controller
Makes sysui dagger provides optional PIP controller with PIP feature
flag. Adds test in PipControllerTest to make sure it won't instantiate
controller if the feature is not supported.

Bug: 170188471
Test: atest SystemUITests
Test: atest WMShellUnitTests
Change-Id: I681bb5ac2972d6426c270099605d44fc82dc9f78
2020-10-14 11:21:28 +08:00
jorgegil@google.com
9366e26361 Add PipBoundsState to manage current pip bounds
This change adds a basic state class and migrates
mLastReportedBounds from PipTaskOrg into it. It'll
eventually become the holder of all bounds-related state
such as movements bounds, reentry bounds/fraction and
aspect ratio.

Bug: 169373982
Test: atest com.android.wm.shell.pip
Change-Id: I43c530f4f3ab192756964022417f39f3085e593e
2020-10-13 09:16:05 -07:00
Jorge Gil
f846ea48f0 Merge "Fix wrong package name in wm.shell.pip tests" 2020-10-09 20:21:11 +00:00
jorgegil@google.com
fc72c7aaa2 Fix wrong package name in wm.shell.pip tests
Bug: 170188412
Test: atest com.android.wm.shell.pip actually runs all tests
Change-Id: I9b8857e1a739d03b1d0b05bbcbeb2be1a28c984d
2020-10-09 18:11:16 +00:00
Mariia Sandrikova
18029e2a2d Merge "Refactor task listeners mapping in ShellTaskOrganiser" 2020-10-09 11:27:57 +00:00
TreeHugger Robot
c6b1386fc3 Merge "Presubmit com.android.wm.shell.onehanded test flaky" 2020-10-08 20:49:58 +00:00