Merge "Change TaskInfo topActivityInSizeCompat to look at visibility" into tm-qpr-dev

This commit is contained in:
Vali Calinescu
2023-03-15 12:29:00 +00:00
committed by Android (Google) Code Review
3 changed files with 26 additions and 5 deletions

View File

@@ -3453,8 +3453,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.

View File

@@ -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;
@@ -3884,6 +3885,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

View File

@@ -1485,9 +1485,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());
@@ -1497,7 +1497,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();