diff options
| author | 2019-04-25 06:39:53 +0000 | |
|---|---|---|
| committer | 2019-04-25 06:39:53 +0000 | |
| commit | bf8aec37d43c950366faff16912c9c8cdd306193 (patch) | |
| tree | 1fed91bcabd3fc9f703440183132a69c21a24456 | |
| parent | 05500a36514fecdb15374ccf3839adda4a2c024b (diff) | |
| parent | 9cd991309e64f2168940f9d550b9220e82b7bb63 (diff) | |
Merge "Assign layer to bounds animation layer" into qt-dev
| -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 aeff99d4bed7..df931956833b 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -142,7 +142,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; @@ -291,7 +291,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 */); |