diff options
| author | 2024-05-30 16:08:20 +0800 | |
|---|---|---|
| committer | 2024-05-30 16:08:20 +0800 | |
| commit | bdcf13a15ebdd2ed885f32184e9962c15e08c466 (patch) | |
| tree | ac33a722ad7fe83a403524ca7978041e72d8b91f | |
| parent | ec19f1f4b72d146f1d7dc08dfba43a2d55cace60 (diff) | |
Post clean up starting window related data.
When Core request to add another starting window to the same task, shell
will remove previous starting window if any. Also clear related data
so the mStartingData won't be reused to create another starting window.
Bug: 341054451
Test: atest ActivityRecordTests
Change-Id: Ibc507a9cf841d620c3c53a57da4becdd4ef1a491
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 2 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java | 13 | 
2 files changed, 15 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 e0e61fd52812..8ad6b7817f4f 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -7642,6 +7642,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A              // This could only happen when the window is removed from hierarchy. So do not keep its              // reference anymore.              mStartingWindow = null; +            mStartingData = null; +            mStartingSurface = null;          }          if (mChildren.size() == 0 && mVisibleSetFromTransferredStartingWindow) {              // We set the visible state to true for the token from a transferred starting diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index 70319754253b..83a528d3cc61 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -2745,6 +2745,19 @@ public class ActivityRecordTests extends WindowTestsBase {          assertNoStartingWindow(activity);      } +    @Test +    public void testPostCleanupStartingWindow() { +        registerTestStartingWindowOrganizer(); +        final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build(); +        activity.addStartingWindow(mPackageName, android.R.style.Theme, null, true, true, false, +                true, false, false, false); +        waitUntilHandlersIdle(); +        assertHasStartingWindow(activity); +        // Simulate Shell remove starting window actively. +        activity.mStartingWindow.removeImmediately(); +        assertNoStartingWindow(activity); +    } +      private void testLegacySplashScreen(int targetSdk, int verifyType) {          final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build();          activity.mTargetSdk = targetSdk; |