diff options
| author | 2024-07-18 09:06:29 +0000 | |
|---|---|---|
| committer | 2024-07-18 09:06:29 +0000 | |
| commit | b9aa61dd0478bd8a1a846ea2df3351dac3947d8c (patch) | |
| tree | 6aaefceadafc7f588d20f67d746b9d2d7507e20d | |
| parent | 710e52241870cf63419e6491c6130b7d6911aae5 (diff) | |
| parent | 2af23635c22403c4c4ceaee12130492089a04d79 (diff) | |
Merge "Don't assocaite starting window to task for overlay TF" into main
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 6 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java | 25 |
2 files changed, 30 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index ccf8d4fce6c0..400919a88b1f 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2901,6 +2901,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A || mStartingData.mAssociatedTask != null) { return; } + if (task.isVisible() && !task.inTransition()) { + // Don't associated with task if the task is visible especially when the activity is + // embedded. We just need to show splash screen on the activity in case the first frame + // is not ready. + return; + } associateStartingDataWithTask(); attachStartingSurfaceToAssociatedTask(); } 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 b4505fad1b20..24fc7ee0c392 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -2955,7 +2955,8 @@ public class ActivityRecordTests extends WindowTestsBase { @Test public void testStartingWindowInTaskFragment() { - final ActivityRecord activity1 = new ActivityBuilder(mAtm).setCreateTask(true).build(); + final ActivityRecord activity1 = new ActivityBuilder(mAtm).setCreateTask(true) + .setVisible(false).build(); final WindowState startingWindow = createWindowState( new WindowManager.LayoutParams(TYPE_APPLICATION_STARTING), activity1); activity1.addWindow(startingWindow); @@ -3011,6 +3012,28 @@ public class ActivityRecordTests extends WindowTestsBase { } @Test + public void testStartingWindowInTaskFragmentWithVisibleTask() { + final ActivityRecord activity1 = new ActivityBuilder(mAtm).setCreateTask(true).build(); + final Task task = activity1.getTask(); + final Rect taskBounds = task.getBounds(); + final Rect tfBounds = new Rect(taskBounds.left, taskBounds.top, + taskBounds.left + taskBounds.width() / 2, taskBounds.bottom); + final TaskFragment taskFragment = new TaskFragmentBuilder(mAtm).setParentTask(task) + .setBounds(tfBounds).build(); + + final ActivityRecord activity2 = new ActivityBuilder(mAtm).build(); + final WindowState startingWindow = createWindowState( + new WindowManager.LayoutParams(TYPE_APPLICATION_STARTING), activity1); + taskFragment.addChild(activity2); + activity2.addWindow(startingWindow); + activity2.mStartingData = mock(StartingData.class); + activity2.attachStartingWindow(startingWindow); + + assertNull(activity2.mStartingData.mAssociatedTask); + assertNull(task.mSharedStartingData); + } + + @Test public void testTransitionAnimationBounds() { removeGlobalMinSizeRestriction(); final Task task = new TaskBuilder(mSupervisor) |