Merge "Change TaskInfo topActivityInSizeCompat to look at visibility" into tm-qpr-dev am: 5fe3c3e64a am: 2c157a055e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21931180

Change-Id: I03c67fc17776ca08bf49e64c0bcaa8166b32c65e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Vali Calinescu
2023-03-15 13:12:07 +00:00
committed by Automerger Merge Worker
3 changed files with 26 additions and 5 deletions

View File

@@ -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.

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;
@@ -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

View File

@@ -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());
@@ -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();