diff options
| author | 2023-05-18 07:23:01 +0000 | |
|---|---|---|
| committer | 2023-05-18 07:23:01 +0000 | |
| commit | a51ed207c5898bbc74afe52971be972c47a41b4b (patch) | |
| tree | 25249a03d6bd2b06809636fe128bc038e2df57c6 | |
| parent | da67a78c5fa0e720ca51d05c27b8a4a41cc7f4c4 (diff) | |
| parent | 94b48e8c6c737b17f4b2bfbfc42208d5631fcff4 (diff) | |
Merge "Wait for relaunching activity to finish sync" into udc-dev am: 94b48e8c6c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23288036
Change-Id: I60e75b9c2f4fa2949c035aa7632a961656ddf9d9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 1 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 839a0395b967..acfa30cb004e 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -10608,6 +10608,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return false; } if (!isVisibleRequested()) return true; + if (mPendingRelaunchCount > 0) return false; // Wait for attach. That is the earliest time where we know if there will be an associated // display rotation. If we don't wait, the starting-window can finishDrawing first and // cause the display rotation to end-up in a following transition. diff --git a/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java b/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java index 5eebe746d64b..fc5e9cab5447 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.times; @@ -119,6 +120,22 @@ public class SyncEngineTests extends WindowTestsBase { assertTrue(mockWC.onSyncFinishedDrawing()); bse.onSurfacePlacement(); verify(listener, times(1)).onTransactionReady(eq(id), notNull()); + + // The sync is not finished for a relaunching activity. + id = startSyncSet(bse, listener); + final ActivityRecord r = new ActivityBuilder(mAtm).setCreateTask(true).build(); + final WindowState w = mock(WindowState.class); + doReturn(true).when(w).isVisibleRequested(); + doReturn(true).when(w).fillsParent(); + doReturn(true).when(w).isSyncFinished(any()); + r.mChildren.add(w); + bse.addToSyncSet(id, r); + r.onSyncFinishedDrawing(); + assertTrue(r.isSyncFinished(r.getSyncGroup())); + r.startRelaunching(); + assertFalse(r.isSyncFinished(r.getSyncGroup())); + r.finishRelaunching(); + assertTrue(r.isSyncFinished(r.getSyncGroup())); } @Test |