diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskFragment.java | 5 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java | 17 |
2 files changed, 21 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index 5f85a1401014..f3f21103a7e8 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -2340,7 +2340,10 @@ class TaskFragment extends WindowContainer<WindowContainer> { return false; } - return !startBounds.equals(getBounds()); + // Only take snapshot if the bounds are resized. + final Rect endBounds = getConfiguration().windowConfiguration.getBounds(); + return endBounds.width() != startBounds.width() + || endBounds.height() != startBounds.height(); } boolean canHaveEmbeddingActivityTransition(@NonNull ActivityRecord child) { diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java index 88eadfceedb6..bb46f723839d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java @@ -134,6 +134,23 @@ public class TaskFragmentTest extends WindowTestsBase { } @Test + public void testStartChangeTransition_doNotFreezeWhenOnlyMoved() { + final Rect startBounds = new Rect(0, 0, 1000, 1000); + final Rect endBounds = new Rect(startBounds); + endBounds.offset(500, 0); + mTaskFragment.setBounds(startBounds); + doReturn(true).when(mTaskFragment).isVisible(); + doReturn(true).when(mTaskFragment).isVisibleRequested(); + + clearInvocations(mTransaction); + mTaskFragment.setBounds(endBounds); + + // No change transition, but update the organized surface position. + verify(mTaskFragment, never()).initializeChangeTransition(any(), any()); + verify(mTransaction).setPosition(mLeash, endBounds.left, endBounds.top); + } + + @Test public void testNotOkToAnimate_doNotStartChangeTransition() { mockSurfaceFreezerSnapshot(mTaskFragment.mSurfaceFreezer); final Rect startBounds = new Rect(0, 0, 1000, 1000); |