Loading services/core/java/com/android/server/wm/ActivityRecord.java +4 −2 Original line number Diff line number Diff line Loading @@ -6340,8 +6340,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mSharedStartingData != null ? mSharedStartingData.mAssociatedTask : null; if (associatedTask == null) { removeStartingWindow(); } else if (associatedTask.getActivity( r -> r.mVisibleRequested && !r.firstWindowDrawn) == null) { } else if (associatedTask.getActivity(r -> r.mVisibleRequested && !r.firstWindowDrawn // Don't block starting window removal if an Activity can't be a starting window // target. && r.mSharedStartingData != null) == null) { // The last drawn activity may not be the one that owns the starting window. final ActivityRecord r = associatedTask.topActivityContainsStartingWindow(); if (r != null) { Loading services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +5 −0 Original line number Diff line number Diff line Loading @@ -2853,6 +2853,11 @@ public class ActivityRecordTests extends WindowTestsBase { assertTrue(activity2.isResizeable()); activity1.reparent(taskFragment1, POSITION_TOP); // Adds an Activity which doesn't have shared starting data, and verify if it blocks // starting window removal. final ActivityRecord activity3 = new ActivityBuilder(mAtm).build(); taskFragment2.addChild(activity3, POSITION_TOP); verify(activity1.getSyncTransaction()).reparent(eq(startingWindow.mSurfaceControl), eq(task.mSurfaceControl)); assertEquals(activity1.mStartingData, startingWindow.mStartingData); Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +4 −2 Original line number Diff line number Diff line Loading @@ -6340,8 +6340,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mSharedStartingData != null ? mSharedStartingData.mAssociatedTask : null; if (associatedTask == null) { removeStartingWindow(); } else if (associatedTask.getActivity( r -> r.mVisibleRequested && !r.firstWindowDrawn) == null) { } else if (associatedTask.getActivity(r -> r.mVisibleRequested && !r.firstWindowDrawn // Don't block starting window removal if an Activity can't be a starting window // target. && r.mSharedStartingData != null) == null) { // The last drawn activity may not be the one that owns the starting window. final ActivityRecord r = associatedTask.topActivityContainsStartingWindow(); if (r != null) { Loading
services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +5 −0 Original line number Diff line number Diff line Loading @@ -2853,6 +2853,11 @@ public class ActivityRecordTests extends WindowTestsBase { assertTrue(activity2.isResizeable()); activity1.reparent(taskFragment1, POSITION_TOP); // Adds an Activity which doesn't have shared starting data, and verify if it blocks // starting window removal. final ActivityRecord activity3 = new ActivityBuilder(mAtm).build(); taskFragment2.addChild(activity3, POSITION_TOP); verify(activity1.getSyncTransaction()).reparent(eq(startingWindow.mSurfaceControl), eq(task.mSurfaceControl)); assertEquals(activity1.mStartingData, startingWindow.mStartingData); Loading