Loading services/core/java/com/android/server/wm/Task.java +4 −2 Original line number Diff line number Diff line Loading @@ -3398,8 +3398,10 @@ class Task extends TaskFragment { final boolean isTopActivityResumed = top != null && top.getOrganizedTask() == this && top.isState(RESUMED); // Whether the direct top activity is in size compat mode on foreground. info.topActivityInSizeCompat = isTopActivityResumed && top.inSizeCompatMode(); final boolean isTopActivityVisible = top != null && top.getOrganizedTask() == this && top.isVisible(); // Whether the direct top activity is in size compat mode info.topActivityInSizeCompat = isTopActivityVisible && top.inSizeCompatMode(); if (info.topActivityInSizeCompat && mWmService.mLetterboxConfiguration.isTranslucentLetterboxingEnabled()) { // We hide the restart button in case of transparent activities. Loading services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +19 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANG import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_SIZE_COMPAT_MODE; import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_LETTERBOXED; import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_VISIBLE; import static com.android.server.wm.ActivityRecord.State.PAUSED; import static com.android.server.wm.ActivityRecord.State.RESTARTING_PROCESS; import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityRecord.State.STOPPED; Loading Loading @@ -3918,6 +3919,24 @@ public class SizeCompatTests extends WindowTestsBase { assertTrue(mActivity.inSizeCompatMode()); } @Test public void testTopActivityInSizeCompatMode_pausedAndInSizeCompatMode_returnsTrue() { setUpDisplaySizeWithApp(1000, 2500); mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); spyOn(mActivity); doReturn(mTask).when(mActivity).getOrganizedTask(); prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT); rotateDisplay(mActivity.mDisplayContent, ROTATION_90); mActivity.setState(PAUSED, "test"); assertTrue(mActivity.inSizeCompatMode()); assertEquals(mActivity.getState(), PAUSED); assertTrue(mActivity.isVisible()); assertTrue(mTask.getTaskInfo().topActivityInSizeCompat); } /** * Tests that all three paths in which aspect ratio logic can be applied yield the same * result, which is that aspect ratio is respected on app bounds. The three paths are Loading services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +3 −3 Original line number Diff line number Diff line Loading @@ -1486,9 +1486,9 @@ public class WindowOrganizerTests extends WindowTestsBase { assertEquals(rootTask.mTaskId, info.taskId); assertTrue(info.topActivityInSizeCompat); // Ensure task info show top activity that is not in foreground as not in size compat. // Ensure task info show top activity that is not visible as not in size compat. clearInvocations(organizer); doReturn(false).when(activity).isState(RESUMED); doReturn(false).when(activity).isVisible(); rootTask.onSizeCompatActivityChanged(); mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents(); verify(organizer).onTaskInfoChanged(infoCaptor.capture()); Loading @@ -1498,7 +1498,7 @@ public class WindowOrganizerTests extends WindowTestsBase { // Ensure task info show non size compat top activity as not in size compat. clearInvocations(organizer); doReturn(true).when(activity).isState(RESUMED); doReturn(true).when(activity).isVisible(); doReturn(false).when(activity).inSizeCompatMode(); rootTask.onSizeCompatActivityChanged(); mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents(); Loading Loading
services/core/java/com/android/server/wm/Task.java +4 −2 Original line number Diff line number Diff line Loading @@ -3398,8 +3398,10 @@ class Task extends TaskFragment { final boolean isTopActivityResumed = top != null && top.getOrganizedTask() == this && top.isState(RESUMED); // Whether the direct top activity is in size compat mode on foreground. info.topActivityInSizeCompat = isTopActivityResumed && top.inSizeCompatMode(); final boolean isTopActivityVisible = top != null && top.getOrganizedTask() == this && top.isVisible(); // Whether the direct top activity is in size compat mode info.topActivityInSizeCompat = isTopActivityVisible && top.inSizeCompatMode(); if (info.topActivityInSizeCompat && mWmService.mLetterboxConfiguration.isTranslucentLetterboxingEnabled()) { // We hide the restart button in case of transparent activities. Loading
services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +19 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANG import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_SIZE_COMPAT_MODE; import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_LETTERBOXED; import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_VISIBLE; import static com.android.server.wm.ActivityRecord.State.PAUSED; import static com.android.server.wm.ActivityRecord.State.RESTARTING_PROCESS; import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityRecord.State.STOPPED; Loading Loading @@ -3918,6 +3919,24 @@ public class SizeCompatTests extends WindowTestsBase { assertTrue(mActivity.inSizeCompatMode()); } @Test public void testTopActivityInSizeCompatMode_pausedAndInSizeCompatMode_returnsTrue() { setUpDisplaySizeWithApp(1000, 2500); mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); spyOn(mActivity); doReturn(mTask).when(mActivity).getOrganizedTask(); prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT); rotateDisplay(mActivity.mDisplayContent, ROTATION_90); mActivity.setState(PAUSED, "test"); assertTrue(mActivity.inSizeCompatMode()); assertEquals(mActivity.getState(), PAUSED); assertTrue(mActivity.isVisible()); assertTrue(mTask.getTaskInfo().topActivityInSizeCompat); } /** * Tests that all three paths in which aspect ratio logic can be applied yield the same * result, which is that aspect ratio is respected on app bounds. The three paths are Loading
services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +3 −3 Original line number Diff line number Diff line Loading @@ -1486,9 +1486,9 @@ public class WindowOrganizerTests extends WindowTestsBase { assertEquals(rootTask.mTaskId, info.taskId); assertTrue(info.topActivityInSizeCompat); // Ensure task info show top activity that is not in foreground as not in size compat. // Ensure task info show top activity that is not visible as not in size compat. clearInvocations(organizer); doReturn(false).when(activity).isState(RESUMED); doReturn(false).when(activity).isVisible(); rootTask.onSizeCompatActivityChanged(); mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents(); verify(organizer).onTaskInfoChanged(infoCaptor.capture()); Loading @@ -1498,7 +1498,7 @@ public class WindowOrganizerTests extends WindowTestsBase { // Ensure task info show non size compat top activity as not in size compat. clearInvocations(organizer); doReturn(true).when(activity).isState(RESUMED); doReturn(true).when(activity).isVisible(); doReturn(false).when(activity).inSizeCompatMode(); rootTask.onSizeCompatActivityChanged(); mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents(); Loading