Merge "Change TaskInfo topActivityInSizeCompat to look at visibility" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
5fe3c3e64a
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user