getIconAnimationDuration - Returns the duration of the icon animation
if icon is animatable.
getIconAnimationStart - If the replaced icon is animatable, return
the animation start time in millisecond based on system.
Bug: 73289295
Test: atest CtsWindowManagerDeviceTestCases:SplashscreenTests
Change-Id: Ie4332d6764b4d0892a0e5e6f7c297102b71a79f9
Provides new APIs so that shortcuts can preset the theme of the splash
screen window.
- Static way: android:splashScreenTheme
Preset the splash screen theme from xml.
- Dynamic way: ShortcutInfo.Builder#setStartingTheme
Preset the splash screen theme when construct the ShortcutInfo
programmatically.
Bug: 73289295
Test: build/flash
Test: atest AppWindowTokenTests ActivityRecordTests
Change-Id: Ie5e73f9b22fea22659e496c12198c942f4bc93cd
Create new APIs for developer to customize starting window
- windowSplashScreenBackground: specify the background color
- windowSplashScreenAnimatedIcon: replace center icon on starting
window, and it can be animatable.
- windowSplashScreenAnimationDuration: the animation duration if
the replace icon is animatable, it cannot exceed
max_starting_window_intro_icon_anim_duration.
Support ADV to replace the icon on starting window.
Ref doc: go/improved_app_launch_animations
Bug: 73289295
Test: build/flash
Test: check splash screen starting window.
Test: atest StartingSurfaceDrawerTests SplashscreenTests
Test: atest ShellTaskOrganizerTests
Change-Id: Id3de3e9b57d769f096baf43713c1e3c327ecfdc8
Introduce new APIs to customize exit splash screen animation.
- SplashScreen
This can be used for Activity to handle the exit splash screen
animation.
- SplashScreen#OnExitAnimationListener
When receive onSplashScreenExit, the splash screen view will be on
top of the activity.
- SplashScreenView
The view object which represents the view of current starting window.
There are two APIs for developer to control it:
- getIconView: get the icon view object.
- remove: remove the view and release resources.
If an Activity create a OnExitAnimationListener and set on
SplashScreen, the core will request a copy of SplashScreenView
from Shell, then send the parcelable information to client to
reconstruct the view on top of the DecorView, then call
onSplashScreenExit to let the listener able to operating this view.
Bug: 73289295
Test: build/flash, check splash screen starting window.
Test: atest StartingSurfaceDrawerTests ActivityRecordTests
WindowOrganizerTests
Test: atest CtsWindowManagerDeviceTestCases:SplashscreenTests
Change-Id: I9f77fb4471bcf37a7f74d6c18a345ca56c05b716
- When shell thread is enabled, there's a deadlock that can happen from
having blocking calls from both Shell -> SysUI and vice versa.
Specifically if you have a scenario like:
Shell SysUI
A ----------------> f() (shell blocking call, posts onto thread & awaits)
|
g() <-------------- B (sysui blocking call while f() is posted)
| |
| V
V f() runs
g() runs
The call f() will never actually run since B came in which is blocked
on g() which can't finish because f() has not returned.
- Instead, replace some blocking calls with preloaded info (ie. can send
bubble entry and whether the the entry should bubble up to
onRankingUpdated since it just calls back to query it), and make
getShouldRestoredEntries() and getPendingOrActiveEntry() async with
a callback.
- Can remove isNotificationShadeExpand() since it's not actually used
anymore in bubble code
Bug: 161979899
Test: atest WMShellUnitTests
Test: atest SystemUITests
Change-Id: Iba834172c17c3f4b03c23448fef346c71c16c1bb
Signed-off-by: Winson Chung <winsonc@google.com>
This keeps it synchronized with dismissal and thus avoids
a race between pending and sync transaction application
Bug: 170801863
Test: launch a forced-multiwindow sizecompat app in split and
then dismiss split to that app. App should not be cropped.
Change-Id: I4d89be443af5616174ea44e62774133e3b99597c
Those methods were replaced by WindowManagerStateHelper to make the tests more stable.
Bug: 172321238
Test: atest FlickerTests WMShellFlickerTests
Change-Id: I87d4fb031603eb060551f4800a31fb44851a3cff
- Adding documentation for dagger setup for shell
- We should only reference the controllers from shell code instead of
through the external interfaces. This reduces the number of exposed
methods, and is also more direct (it ends up in the controller
anyways). This means that the base module will provide the
controllers separately and we can remove some duplication in the
create methods for the controllers (except in cases where it's doing
other initialization)
- Remove SizeCompatUi interface since it's not actually used in SysUI
- Group related dependencies in the module to make it a little eaiser
to parse
Bug: 161979899
Test: atest WMShellUnitTests
Test: atest SystemUITests
Change-Id: I07c2c002b87ffd127ebfce67b5485ff47d127e1f
ag/13463021 missed a case to convert for leashing.
Also, fixed logic typo in setSideStageVisibility
Bug: 168505645
Test: adb shell dumpsys activity service SystemUIService WMShell setSideStageVisibility false
Change-Id: Iaba1f25d457d0211d43364bb6885ba688fea3790
Make sure the test can run multiple times and is stable on flame
Introduce methods to allow waitForPipWindowShow/Gone using the WindowManagerState to determine if a PIP window is active (windowingMode = PINNED), since the UiDevice method is unstable and doesn't work on TVs.
Bug: 171049720
Bug: 172321238
Bug: 171049762
Test: atest WMShellFlickerTests
Change-Id: Iade19fadeb0ba07e047eb5f64479e592920ca11e
Apps need a better way to check if their shortcut or
pending intent is bubbled, to do this we'll add an intent
extra on the bubbled activity that they may check.
- updated doc around bubbles for how to check the extra
- applied flag on activity for intent & shortcut
Bug: 171220648
Test: atest NotificationManagerTest (see CTS CL)
Change-Id: Iba97a0058e1e4fc33c4df32a3f258ff350ad04e2
This is mostly a matter of flipping the flag, except for the case of
SystemWindows. While external SurfaceControlViewHost clients use the
leash provided by the SurfaceControlViewHost rather than the internal
ViewRootImpl surface, SystemWindows clients will use the actual
ViewRootImpl surface. This can conflict with the BLAST adapter setting
crop/frame/etc on this Surface. We modify SystemWindows to put
each layer inside a leash, and hand this out to other parts of SysUI
instead of the ViewRootImpl surface.
Test: Existing tests pass
Bug: 168505645
Change-Id: Ie621f89166f00ce385d450f1f1cea4d4abd1b805
This reverts commit cb98114abd40b645245bbf9d60195b662b6eba37.
Reason for revert: Not needed once ag/13507782 is merged
Bug: 169372603
Change-Id: I52d4344f6f2f3fb973f3f20e7d6f1ec2844d7567
Test: manually enter PiP
Atest cannot override include-annotation and exclude-annotation from the Android.xml, only append new ones.
Ideally we should have a single test configuration for all flicker tests (presubmit/postsubmit/flaky) and adjust the arguments according to the type of test we intend to run.
Presubmit:
atest FlickerTests -- --module-arg FlickerTests:include-annotation:android.platform.test.annotations.Presubmit --module-arg FlickerTests:exclude-annotation:androidx.test.filters.FlakyTest
Postsubmit:
atest FlickerTests -- --module-arg FlickerTests:include-annotation:android.platform.test.annotations.Postsubmit --module-arg FlickerTests:exclude-annotation:androidx.test.filters.FlakyTest
Flaky:
atest FlickerTests -- --module-arg FlickerTests:include-annotation:androidx.test.filters.FlakyTest
To run WMShellFlickerTests, just replace FlickerTests for WMShellFlickerTests in the commands above.
Bug: 170490377
Test: atest FlickerTests WMShellFlickerTests
Change-Id: Ic252f27065714e9039e3c0f33659b98eb288aa6f
- Also remove usages of external interface within the shell code
and remove methods only used in the controller from the interface
(will update for other components separately)
Bug: 161979899
Test: atest WMShellUnitTests
Test: atest SystemUITests
Change-Id: I06d266095d8e287ba131e41dc6bebefa15c9e477
The activity surface is rotated by WM core when changing
the windowing mode of PiP activity to fullscreen. And then
PipTaskOrganizer#onFixedRotationStarted will be called before
WindowContainerTransactionCallback#onTransactionReady. So
PipTaskOrganizer can use the given new rotation to run the
animation in current rotation. After the animation is done,
PipTaskOrganizer will set the task to fullscreen, that makes
previous top activity pause and then resume the next top
activity (the original PiP). Finally, the fixed rotation is
finished by transition done event, and then continue to
rotate the display seamlessly.
Also remove mInitialState from PipTaskOrganizer because it
is no longer needed for predicting the fullscreen bounds.
Bug: 165794724
Test: DisplayContentTests#testFixedRotationWithPip
PipAnimationControllerTest#pipTransitionAnimator_rotatedEndValue
Test: Expand PiP in portrait which was in landscape
Change-Id: I5c1400ece9d80226bc35b497d308215010ead027
Maintain the same assertions for new assertion blocks and legacy. This CL is used while migrating the existing tests from the old to the new DSL format.
Once the tests are migrated the legacy support will be removed.
Bug: 162923992
Test: atest FlickerTests
Change-Id: I9a64a7ab43bf60c67a26f37562ab6c4d7bb0c487