History log of /frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
703719be15d4ab520caeecf9e13e6e801f29bd12 19-Apr-2018 Winson Chung <winsonc@google.com> Workaround to ensure we cancel the recents animation prior to starting home

- It is possible for the call from SystemUI to cancel the recents animation
to be processed and handled after the virtual key has been processed in
PhoneWindowManager. This causes a misordering in which the canceling of
the Recents animation clears the pending start activity remote animation
(which is waiting for app transition ready).

Instead, move the canceling of the Recents animation to PhoneWindowManager
where the nav button is handled, to ensure that we cancel the animation
on the same thread before we start the activity.

Bug: 73188263
Test: Only able to reproduce so far artificially, which points to this
misordering

Change-Id: I1f3477acdf988953a5b3cef2e3b2b402af2d9909
Signed-off-by: Winson Chung <winsonc@google.com>
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
57dea8823befce8a8092bffc3f7fee6505500498 11-Apr-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Enable additional logging for recents/remote animations" into pi-dev
c6c3f851dc0c2e7f17581b55d08f17b508c791af 10-Apr-2018 Winson Chung <winsonc@google.com> Enable additional logging for recents/remote animations

Bug: 73188263
Test: Just logging

Change-Id: I178ed902ad7097cc97fdec6d1c74603cb580453a
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
653c6c1100d9093d0850dc21365b0b91db8cfffb 09-Apr-2018 Adrian Roos <roosa@google.com> AnimationControllers: Only unlinkToDeath if previously linked

Fixes crashes when we unlink to the runners if the animation was
cancelled prior to linking to the death of the runners.

Change-Id: Ic52c8bea0985bce8a2abfd61d8b54ab6fff9e288
Fixes: 77756198
Test: make
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
842e788ffc7f2964d6d5877511e3762d4908bb95 26-Mar-2018 Adrian Roos <roosa@google.com> RemoteAnimations: Add failsafe

Adds failsafe mechanisms to RemoteAnimation and RecentsAnimation:
- cancel animations on binder death
- schedule a short timeout for RecentsAnimation after HOME and POWER events

Also enables RemoteAnimationControllerTest for presubmit, since it's turned
out to be reliable.

Change-Id: Id0bfdbee7d36f662eb386727195da8de2ed1684a
Fixes: 73496879
Test: kill / suspend launcher during animations; verify animations get aborted as expected.
Test: atest RemoteAnimationControllerTest
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
ff23ffa8ff352b9c7178d19779783d7c231fabda 28-Mar-2018 Jorim Jaggi <jjaggi@google.com> Merge "Fix issue with animations that couldn't be started" into pi-dev
b8a9cbe4d8f7d2af99e487fe89ca2c42578c6f88 27-Mar-2018 Jorim Jaggi <jjaggi@google.com> Fix issue with animations that couldn't be started

If we can't create a remote animation target for some reason
(removed from task, no main window, etc), SurfaceAnimator
called startAnimation but we never invoke the finish callback.

Thus, we need to make sure to also invoke the finish callback
when not using the AppWindowToken as part of the remote animation.

This actually happens if the main intent clears the task, like
Settings. In that case, it removes all sub activities, which then
get added to mClosingApps, which then are part of a transition.

It's questionable why this would need to happen, but we don't have
the risk budget to go down that rabbit hole.

Test: RemoteAnimationControllerTest
Test: Open Settings -> Network -> Wifi, press home, reopen
Settings, repeat 10x
Test: adb shell dumpsys window -a
Fixes: 76438155
Change-Id: Ib528d5c0d3559eb20522799af68ebbfb17b9801b
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
2f426bcd09e27e1ad7bd1215c1dc5de0d7cce262 27-Mar-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Clear calling identity in finish callback" into pi-dev
817ebdd94d6e31caf8371587c553a5ba17a03c2a 26-Mar-2018 Jorim Jaggi <jjaggi@google.com> Handle insets for letterboxing correctly

Add letterbox insets to main window insets to get the correct
amount of insets.

Test: Go to recents in landscape with cutout.
Change-Id: I45882d5fb3166252e4b4a333177211623fae34b0
Fixes: 72757033
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
ab20e1623b81076357a08cebeda7e58cbf3e1891 27-Mar-2018 Jorim Jaggi <jjaggi@google.com> Clear calling identity in finish callback

Test: go/wm-smoke
Fixes: 76138720
Change-Id: Id6b1afd757d4374a401abe4ee68fe99ed182a62e
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
c4d29f2a1c6e8e9c3cdb3fc2bf8a8151fb24716b 22-Mar-2018 Jorim Jaggi <jjaggi@google.com> Fix NPE when animation doesn't get started

If animation start is delayed, there is no guarantee that
startAnimation is called on the adapter. Thus, protect
RemoteAnimationController against this case, as leash and
finishedCallback would be null.

Furthermore don't even try to start remote animation that is
delayed as it would leave it hanging forever.

Test: SurfaceAnimatorTest/RemoteAnimationControllerTest
Change-Id: I72c492c4fb6ca8eeae481d2c281e9c1fee95f921
Fixes: 76096628
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
6c6e9cab42bccb44ebb4b30e7eab7394c0dbb759 21-Mar-2018 Yi Jin <jinyithu@google.com> Remove am/wm.proto which is redundant. The naming convention is defined
in core/proto/README.md

Bug: 72474563
Test: make sure the Android build
Change-Id: I2a90cbb6bb0b0c62fe4a0b81cb5bb3ea36381871
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
f75d161dd84f90b1a014e7c48ce0654cf806c0dd 27-Feb-2018 Jorim Jaggi <jjaggi@google.com> Improve animation dump/logging

Bug: 74220420
Test: go/wm-smoke
Test: adb shell dumpsys window during animation
Change-Id: Ib8bddb4f38ad4fe7a80315d3bfdac0a80aea4cc8
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
fe700fc694f35ff90cf040d7cb8cbfb57072aa05 10-Mar-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Adding isNotInRecents to RemoteAnimationTarget" into pi-dev
593e9567fdc2a7b5c7e06c12c9af4b32f4216d85 09-Mar-2018 Vadim Tryshev <vadimt@google.com> Adding isNotInRecents to RemoteAnimationTarget

For animations required by Recents, we calculate whether the task is
going to be presented in Recents UI.

Bug: 70789568
Test: Manual: swipe a normal app to Recents; swipe an app with a
half-screen assistant on top of it to Recents.

Change-Id: I1ec9c36865dd4f57e843ae58811f90f3096365a5
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
bc2aabe84568c6b1a54c1b1467a539781488c8ca 08-Mar-2018 Jorim Jaggi <jjaggi@google.com> Revert "Revert "Elevate remote/recents animation priority""

This reverts commit a8b48ab7332f61afe37b2e866e9cb67421fab1c0.

Original issue has been fixed in follow up CL.

Bug: 73555925
Change-Id: Ie0a157a91c3c66df52370adad7b188f59c4749ea
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
2f3adb4d275dcf36762282c66afa58876fd3b045 28-Feb-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Revert "Elevate remote/recents animation priority""
a8b48ab7332f61afe37b2e866e9cb67421fab1c0 28-Feb-2018 Jorim Jaggi <jjaggi@google.com> Revert "Elevate remote/recents animation priority"

This reverts commit 574aea0f1b073889186a82c94a991cc746b1c58c.

Reason for revert: Crashes sometimes (chaselist issue)

Change-Id: I1440ef7a002e85c3e020d424f13073ca2516dd9c
Fixes: 73991490
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
d3d139ab1eb841b1713016598fdca7a31b302ed8 27-Feb-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Elevate remote/recents animation priority"
574aea0f1b073889186a82c94a991cc746b1c58c 21-Feb-2018 Jorim Jaggi <jjaggi@google.com> Elevate remote/recents animation priority

If we have another process running a remote animation, we need to
elevate its scheduling priority in order to achieve a smooth
animation. To do that, we set the priority as if it would be the
top app.

Test: go/wm-smoke
Test: Capture trace, open/close apps/recents, inspect priority in
trace.

Change-Id: Ia167eeff95700d86e96e96a984099f1e28040b59
Fixes: 73555925
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
82c1786e2c19201d02e014afc6458296b4f29e79 21-Feb-2018 Jorim Jaggi <jjaggi@google.com> Add ability to show wallpaper during animation

In the new task switch animations, we'd like to show the wallpaper
behind. For that, we add the ability to show the wallpaper for
any animation via Animation.showWallpaper as an XML attribute.

If the window of an app is animating, and the animation requests
the wallpaper, it can also be a wallpaper.

One remaning issue here is that we don't wait for the wallpaper
to be drawn when waiting for the transition. However, usually this
isn't an issue because the wallpaper is drawn in any case.

To fix this we'd need to load the animation already and then make
it a target before the animation starts, which is a bit involved
/quirky.

Test: Open/close task, observe wallpaper behind
Test: go/wm-smoke
Bug: 72396815
Change-Id: I676273a4e6627f8b5e0a1366fcd80a7c92018123
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
91f9f348dc6a8e062e2f2dee9e687ae9ca558ac9 14-Feb-2018 Jorim Jaggi <jjaggi@google.com> Fix memory leak

Client was holding onto the finished callback in the
RemoteAnimationRunner, and the server was holding on to the runner
via the finish callback. Cycle! There is no GC for cross-process
binder, so we have to make sure to properly free it.

Test: go/wm-smoke
Test: Open/close apps, take hprof, make sure no leaks

Change-Id: I680953212bee8841c04c2909a4cb82dfac3c2754
Fixes: 72834182
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
16d0d07df83eb00edd719715e6e42d91b600602f 13-Feb-2018 Chavi Weingarten <chaviw@google.com> Fix flicker with remote animations

There was a race condition where we notified the controlling app
already about transition start, which itself started the animation
and applied the transform of the first frame. However, a little
bit later, we applied the pending transaction from window manager,
which overrode the properties again, leading to a flicker.

Original CL: ag/3535475

Test: go/wm-smoke
Test: Press home button, observe never a flicker
Bug: Surprisingly there isn't one yet.

Change-Id: I84b2e0fd4dcd7a01687e18f428a8f900ed43d75f
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
584d652a1dba2b09975a1555c71ed339374faac7 08-Feb-2018 Winson Chung <winsonc@google.com> Revert "Revert "Exposing content insets and minimized home bounds for recents transition""

This reverts commit bb5d97f00fd5ee64eaac110aa700cec2abf56a20.

Reason for revert: Launcher APK is landing shortly.

Test: Manual, swipe up to home in multi-window

Change-Id: I5d9050e51265bd4ca5ea2c28b7533571d03990f7
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
bb5d97f00fd5ee64eaac110aa700cec2abf56a20 07-Feb-2018 Winson Chung <winsonc@google.com> Revert "Exposing content insets and minimized home bounds for recents transition"

This reverts commit 67f31199fb65c4bd89838f826afc00205d2241e2.

Reason for revert: Need to wait for the Launcher drop at EOD today

Change-Id: I039cd3092d786c62a88f599eb79c0704c6257981
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
67f31199fb65c4bd89838f826afc00205d2241e2 31-Jan-2018 Winson Chung <winsonc@google.com> Exposing content insets and minimized home bounds for recents transition

- In order to calculate the final target rect and window clip for the
app currently transitioning into the task view in launcher (similar to
how we did in SysUI), we need to provide the content insets and bounds
for both the app and launcher (whose activity may not yet have been
shown). For the existing recents transition, this was calculated
internally in the AppTransition aspect-scaled transition, but now that
we are implementing this via remote animations, the same information is
needed in the implementation of the recents animation runner.

Bug: 70294936
Test: Swipe up from launcher with window transitions when in multi window
Change-Id: I2afc6bdfe112cc7bb1b07ba65213653f6f0634f9
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
da10c37b6d8497338dcab82550ee37b374c3c9e2 06-Feb-2018 Wale Ogunwale <ogunwale@google.com> Revert "Fix flicker with remote animations"

This reverts commit ab09e6472fc175077561cd55f2c1aa1d57683c9e as it causes crash.

Change-Id: I2878cebca7d63a95545cc50e775a183527d7c2c2
bug: 72953020
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
ab09e6472fc175077561cd55f2c1aa1d57683c9e 31-Jan-2018 Jorim Jaggi <jjaggi@google.com> Fix flicker with remote animations

There was a race condition where we notified the controlling app
already about transition start, which itself started the animation
and applied the transform of the first frame. However, a little
bit later, we applied the pending transaction from window manager,
which overrode the properties again, leading to a flicker.

Test: go/wm-smoke
Test: Press home button, observe never a flicker
Bug: Surprisingly there isn't one yet.
Change-Id: I849a1573e6fd0487b9b5c22c7a7525bc818661cc
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
a19d781a8a03757334a4dd1be8cfe2bc5e0299a7 01-Feb-2018 Jorim Jaggi <jjaggi@google.com> Scale timeout with animation scale

So slowed down animations still work
Test: RemoteAnimationControllerTest
Test: go/wm-smoke-auto

Change-Id: I23116fdd0f2e75e4320bd77aee704d1e2a9de5e7
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
a8d1105bc9a03d79156fc669d3fe3b5ba04d53d9 29-Jan-2018 Jorim Jaggi <jjaggi@google.com> Merge "If nothing to animate, don't call remote animator"
93f9fe342be78bc90dc8aede1dd32e55be32657e 25-Jan-2018 Jorim Jaggi <jjaggi@google.com> If nothing to animate, don't call remote animator

Otherwise we'll end up with weird transitions when just switching
focus because focus switch causes an app transition to run.

Test: go/wm-smoke
Test: Enter PIP, click on PIP window, click on launcher window
to execute an empty app transition.

Change-Id: Ie42ad808ff4d4646570c122fd3b964e3255a57bc
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
e2d721781fc024cbd9a14929741e5b476242291f 25-Jan-2018 Winson Chung <winsonc@google.com> Revert "Revert "2/ Add support for remote Recents animation""

This reverts commit 9f8518e532e41ba57916afc49bba72bc23ad3eda.

Reason for revert: Testing relanding changes with ag/3515280

Change-Id: I410bd752c815a5b998a719453def01e00a9d47c8
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
9f8518e532e41ba57916afc49bba72bc23ad3eda 25-Jan-2018 Jorim Jaggi <jjaggi@google.com> Revert "2/ Add support for remote Recents animation"

This reverts commit 0026a5152c427f9cf2c04da2b23a5ece2fcdb36d.

Breaks presubmits
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
0026a5152c427f9cf2c04da2b23a5ece2fcdb36d 17-Jan-2018 Winson Chung <winsonc@google.com> 2/ Add support for remote Recents animation

- Allow the recents component to drive the animation from an app into
Recents using the remote animation framework. When initialized, the
animation repositions the recents activity behind the currently visible
tasks and provides the set of surface controls for the visible tasks.
Once complete, the recents component notifies the system whether it
has completed the animation into the recents activity, or whether it
should restore the previous state. In addition, there is a prescribed
delay after which the system automatically cancels the recents animation.

Bug: 70180552
Test: go/wm-smoke
Test: Manual, swipe up with suitable launcher build

Change-Id: Id32f03c7ad2288dce06231cfaa4b21916da511d7
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
1777021fcf989c0a1d2b7aa533a7b464ad85a807 22-Jan-2018 Jorim Jaggi <jjaggi@google.com> Fix NPE when creating remote animations

Test: go/wm-smoke
Bug: 72302602
Change-Id: Ifbae370ea559a9fda5ca442ceef0f6db8229466b
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java
33a701a55c28dd20390acee1ba7881a500830d7d 01-Dec-2017 Jorim Jaggi <jjaggi@google.com> Remote animations (app-controlled animations)

Adds the ability for another app to control an entire app
transition. It does so by creating an ActivityOptions object that
contains a RemoteAnimationAdapter object that describes how the
animation should be run: Along of some meta-data, this object
contains a callback that gets invoked from WM when the transition
is ready to be started.

Window manager supplies a list of RemoteAnimationApps into the
callback. Each app contains information about the app as well as
the animation leash. The controlling app can modify the leash like
any other surface, including the possibility to synchronize
updating the leash's surface properties with a frame to be drawn
using the Transaction.deferUntil API.

When the animation is done, the app can invoke the finished
callback to get WM out of the animating state, which will also
clean up any closing apps.

We use a timeout of 2000ms such that a buggy controlling app can
not break window manager forever (duration subject to change).

Test: go/wm-smoke
Test: RemoteAnimationControllerTest

Bug: 64674361
Change-Id: I34e0c9a91b28badebac74896f95c6390f1b947ab
/frameworks/base/services/core/java/com/android/server/wm/RemoteAnimationController.java