Merge "Avoid intermediate orientation change" into sc-dev

This commit is contained in:
Riddle Hsu
2021-05-04 06:26:11 +00:00
committed by Android (Google) Code Review
2 changed files with 8 additions and 13 deletions

View File

@@ -2258,7 +2258,6 @@ class Task extends WindowContainer<WindowContainer> {
mTmpPrevBounds.set(getBounds());
final boolean wasInMultiWindowMode = inMultiWindowMode();
final boolean wasInPictureInPicture = inPinnedWindowingMode();
final int oldOrientation = getOrientation();
super.onConfigurationChanged(newParentConfig);
// Only need to update surface size here since the super method will handle updating
// surface position.
@@ -2301,11 +2300,6 @@ class Task extends WindowContainer<WindowContainer> {
mForceNotOrganized = false;
}
// Report orientation change such as changing from freeform to fullscreen.
if (oldOrientation != getOrientation()) {
onDescendantOrientationChanged(this);
}
saveLaunchingStateIfNeeded();
final boolean taskOrgChanged = updateTaskOrganizerState(false /* forceUpdate */);
if (taskOrgChanged) {

View File

@@ -62,7 +62,6 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import android.app.ActivityManager;
import android.app.TaskInfo;
@@ -1323,20 +1322,22 @@ public class TaskTests extends WindowTestsBase {
}
@Test
public void testNotifyOrientationChangeCausedByConfigurationChange() {
public void testTaskOrientationOnDisplayWindowingModeChange() {
// Skip unnecessary operations to speed up the test.
mAtm.deferWindowLayout();
final Task task = getTestTask();
final ActivityRecord activity = task.getTopMostActivity();
final DisplayContent display = task.getDisplayContent();
display.setWindowingMode(WINDOWING_MODE_FREEFORM);
mWm.setWindowingMode(display.mDisplayId, WINDOWING_MODE_FREEFORM);
activity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE);
assertEquals(SCREEN_ORIENTATION_UNSET, task.getOrientation());
verify(display).onDescendantOrientationChanged(same(task));
reset(display);
assertEquals(SCREEN_ORIENTATION_UNSPECIFIED, display.getLastOrientation());
display.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
mWm.setWindowingMode(display.mDisplayId, WINDOWING_MODE_FULLSCREEN);
assertEquals(SCREEN_ORIENTATION_LANDSCAPE, task.getOrientation());
verify(display).onDescendantOrientationChanged(same(task));
assertEquals(SCREEN_ORIENTATION_LANDSCAPE, display.getLastOrientation());
assertEquals(Configuration.ORIENTATION_LANDSCAPE, display.getConfiguration().orientation);
}
@Test