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
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
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
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
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
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
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
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
- 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
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
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
Stop using windowing modes as keys for task listerners mapping to allow adding multiple listeners for one windowing mode.
Fix: 170209272
Test: go/wm-smoke
Change-Id: I31c20a00f8747a8510a5fab9e54efa63173aab6a
Root cause:
Obtain handler from OneHandedDisplayAreaOrganizer and assert if
there's message in the message queue will encounter timing problem.
Solution:
Set a spied handler object into OneHandedDisplayAreaOrganizer,
and verify if sendMessage() was called or not.
Test: for i in {1..1000};do atest WMShellUnitTests;done
Bug: 170376119
Change-Id: Ie9f5561d61ac3c917a7dfced6c3281adb81fd12e
- This CL migrates FlickerPiPTests.java to WmShell: http://shortn/_Y4GUnepWZl
- This introduces ImeAppHelper and ImeActivity from FlickerTests.
- This uses launchActivity() function to launch Keyboard Activity, since UiAutomator doesn't support to launch the multiple Activities in a task: http://shortn/_KlCIzvahyr
Bug: 167233905
Test: atest WMShellFlickerTests:PipKeyboardTest
Change-Id: I990e6e83213610ca657dbc69f4535971760fde65
- Chatted offline, individual listeners can proxy state, but the task
org doesn't need to have multiple listeners for each mode
Bug: 161980327
Test: atest ShellTaskOrganizerTests
Change-Id: Ic11400a64bf9dc1e00ab6d22c29727414b608e17
Initial rough implementation of Shell Transitions.
Shell Transitions can be enabled by setting ENABLE_SHELL_TRANSITIONS
via `adb shell setprop persist.debug.shell_transit 1`
The main structure behind this is:
- TransitionController in Core responsible for handling the
collection of transition participants and communicating with
the TransitionPlayer in Shell.
- Transitions in Shell responsible for starting transitions
and playing associated animations.
This initial version only supports task open/show/close and does
a simple fade. The flow is:
1. activityStarter calls to Transitions.requestStartTransition
2. Transitions will prepare to start and then call
WindowOrganizerController.startTransition().
2. Various operations in Core call TransitionController.collect()
to track participants. This collect() acts as a replacement for
adding to mOpening/ClosingApps.
3. The legacy executeAppTransition() is wired into
TransitionController.setReady() for now. This signal
is used to ready a BLASTSyncEngine.
4. When all participants are done drawing, TransitionController
will commit any showing visibility changes and then will construct
a TransitionInfo object summarizing all the changes needed for
animation. This gets sent to Transitions.onTransitionReady()
5. Transitions then plays the transition animation and on
completion will call WindowOrganizerController.finishTransition()
which will tell TransitionController to do any finishing
work (like commiting deferred hide changes).
Bug: 161980187
Test: enable the flag and try opening/closing tasks. Also added
TransitionControllerTests
Change-Id: I80c3a241fc12004a894c26523a1e5828e0c533ff
Fixes an issue where the DisplayImeController did not re-apply the visibility
if it receives a new leash.
This lead to focusable IME dialogs not being visible sometimes upon relaunching
the IME target activity, such as during rotation.
Fixes: 162875596
Bug: 160672060
Test: Enable Braille keyboard, open Settings, click on search box, switch to Braille keyboard, on the confirmation dialog rotate the screen; verify the dialog does not disappear.
Change-Id: Ia40a682ca8a9ba669454892e2b453f736c55929c
Split-screen dismisses itself on the SyncTransactionQueue to
prevent glitches/jank. The result, however, is that when one
of the split tasks gets unsplit, it becomes organized. Just
before it becomes organized, though, its windowcrop gets
updated on the sync transaction. Then onTaskAppeared gets
called. Then the sync transaction is applied once drawing
completes.
To resolve this, put the fullscreen transaction on the
syncTransactionQueue as well. In the future, everything that
shell does should probably be serialized in this way (eg.
PiP).
Bug: 169330989
Test: Open app, put it into split, expand the app to fullscreen,
rotate device and observer no half black screen.
Change-Id: I3a7d3d8650a475b4aa4208bf6be9285e530514a0
IOverlayManager might be null when tests, change ctor to use mock
one to fix failed tests.
Bug: 167943723
Test: atest WMShellUnitTests
Change-Id: I122d95b258e8fab8993e72aba597b184f126a9e1
Fix a bug where taskinfo changes weren't recording the
changes.
Add FullscreenTaskListener which is very basic and just
shows surfaces on appear. Fullscreen works fine with
this much because the surfaces are always at 0,0
anyways.
Bug: 162499076
Test: Existing tests pass, phone works like normal
Change-Id: I606bc1cbc85c33c4fc40baf6b3080a1eaa37550c
Move OneHanded related codes, res and tests to WM shell.
Some tests add ignored currently due to permission issue.
Add another bug to trace it.
Also fix animation issue caused by wrong logic.
Bug: 161980408
Fix: 168074363
Test: manual check one handed function
Test: atest WMShellUnitTests
Test: atest SystemUITests
Test: make ArcSystemUI; make ArcSystemUITests
Test: make CarSystemUI; make CarSystemUITests
Change-Id: Ib25661d010278202ffe15fd9c4962e76e6698c21
This is to allow unit test against TaskOrganizer, WindowOrganizer for
interations between Shell and WM core.
To test on WM side
```
when(mWindowOrganizer.getWindowOrganizerController())
.thenReturn(mockedWindowOrganizerController);
when(mockedWindowOrganizerController.getTaskOrganizerController())
.thenReturn(mockedTaskOrganizerController)
doSomeTest();
verify(mockedWindowOrganizerController).somethingHappended();
verify(mockedTaskOrganizerController).somethingHappended();
```
To test on Shell side
```
ShellTaskOrganizer organizer = new ShellTaskOrganizer(
mockedTaskOrganizerController)
doSomeTest()
verify(mockedTaskOrganizerController).somethingHappended();
```
Removed also
- Singleton pattern in TaskOrganizer and DisplayAreaOrganizer as it's
redundant to what's in WindowOrganizer
- static getController methods in both TaskOrganizer and
DisplayAreaOrganizer as we prefer non-static for testability
- static methods in TaskOrganizer in general
- static methods in WindowManagerProxy in general
Bug: 161711455
Bug: 149338177
Test: make sure everything still works
Test: atest WmTests:WindowOrganizerTests \
WmTests:DisplayAreaOrganizerTest
Change-Id: I978d20c7b87e73d0f6d22f7ab08188e4d12d745c
Previously the flickerlib had some pixel specific code, now it's
general. All pixel specific code either should migrate to FlickerTests
or to flickerlib-helpers
Test: atest FlickerTests
Change-Id: Ibca99f2bf68a511f73130439f6334a01e47a8671