summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2023-05-18 07:23:01 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-05-18 07:23:01 +0000
commita51ed207c5898bbc74afe52971be972c47a41b4b (patch)
tree25249a03d6bd2b06809636fe128bc038e2df57c6
parentda67a78c5fa0e720ca51d05c27b8a4a41cc7f4c4 (diff)
parent94b48e8c6c737b17f4b2bfbfc42208d5631fcff4 (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.java1
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java17
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