diff options
| author | 2019-04-24 17:41:35 +0200 | |
|---|---|---|
| committer | 2019-04-24 17:41:35 +0200 | |
| commit | 9cd991309e64f2168940f9d550b9220e82b7bb63 (patch) | |
| tree | 25bca4b31d93e3d7584ba9b414a281980f7a85a6 | |
| parent | c84e33b3f16496c710722039fa0566ae76c6acfc (diff) | |
Assign layer to bounds animation layer
Test: AppWindowTokenAnimationTests
Fixes: 130139437
Change-Id: Id68eabdacb569bcca292dace00b7e524fef9f0da
| -rw-r--r-- | services/core/java/com/android/server/wm/AppWindowToken.java | 9 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java | 11 |
2 files changed, 17 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index a53f85daaa25..56cfe5833cb5 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -144,7 +144,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree /** * Value to increment the z-layer when boosting a layer during animations. BOOST in l33tsp34k. */ - private static final int Z_BOOST_BASE = 800570000; + @VisibleForTesting static final int Z_BOOST_BASE = 800570000; // Non-null only for application tokens. final IApplicationToken appToken; @@ -293,7 +293,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree private boolean mFreezingScreen; /** Whether this token should be boosted at the top of all app window tokens. */ - private boolean mNeedsZBoost; + @VisibleForTesting boolean mNeedsZBoost; private Letterbox mLetterbox; private final Point mTmpPoint = new Point(); @@ -2693,7 +2693,9 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (mNeedsZBoost) { layer += Z_BOOST_BASE; } - leash.setLayer(layer); + if (!mNeedsAnimationBoundsLayer) { + leash.setLayer(layer); + } final DisplayContent dc = getDisplayContent(); dc.assignStackOrdering(); @@ -2730,6 +2732,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree // Crop to stack bounds. t.setWindowCrop(mAnimationBoundsLayer, mTmpRect); + t.setLayer(mAnimationBoundsLayer, layer); // Reparent leash to animation bounds layer. t.reparent(leash, mAnimationBoundsLayer); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java index db04f1159150..623559e41256 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java @@ -25,6 +25,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.intThat; import android.platform.test.annotations.Presubmit; import android.view.SurfaceControl; @@ -75,6 +76,16 @@ public class AppWindowTokenAnimationTests extends WindowTestsBase { } @Test + public void clipAfterAnim_boundsLayerZBoosted() { + mToken.mNeedsAnimationBoundsLayer = true; + mToken.mNeedsZBoost = true; + + mToken.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */); + verify(mTransaction).setLayer(eq(mToken.mAnimationBoundsLayer), + intThat(layer -> layer >= AppWindowToken.Z_BOOST_BASE)); + } + + @Test public void clipAfterAnim_boundsLayerIsDestroyed() { mToken.mNeedsAnimationBoundsLayer = true; mToken.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */); |