Fix test failure on WindowMagnificationControllerTest

In the failed test, we try to keep the same position after
the rotation. The center of the window is at the center of the
screen by default. We assume the screen is rectangle however
it seems something wrong on the emulator so the center X
and center Y are the same, hence the window doesn't have any offset
after the rotation.

To fix it, we make the center X and cetner Y different.

Bug: 200799671
Test: atest WindowMagnificationControllerTest on cf_x86_64
Change-Id: Id0482359b4b1c5c26f3e3f3f468126ae523870f7
This commit is contained in:
ryanlwlin
2021-09-23 17:11:35 +08:00
parent c1349106f9
commit 4197e17a57

View File

@@ -38,7 +38,6 @@ import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -277,27 +276,29 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
final int newRotation = (currentRotation + 1) % 4;
when(display.getRotation()).thenReturn(newRotation);
when(mContext.getDisplay()).thenReturn(display);
mInstrumentation.runOnMainSync(() -> {
mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN,
Float.NaN);
});
final PointF expectedCenter = new PointF(mWindowMagnificationController.getCenterY(),
mWindowMagnificationController.getCenterX());
final Rect windowBounds = new Rect(mWindowManager.getCurrentWindowMetrics().getBounds());
final float center = Math.min(windowBounds.exactCenterX(), windowBounds.exactCenterY());
final PointF magnifiedCenter = new PointF(center, center + 5f);
mInstrumentation.runOnMainSync(() -> {
mWindowMagnificationController.enableWindowMagnification(Float.NaN, magnifiedCenter.x,
magnifiedCenter.y);
// Get the center again in case the center we set is out of screen.
magnifiedCenter.set(mWindowMagnificationController.getCenterX(),
mWindowMagnificationController.getCenterY());
});
// Rotate the window clockwise 90 degree.
windowBounds.set(windowBounds.top, windowBounds.left, windowBounds.bottom,
windowBounds.right);
mWindowManager.setWindowBounds(windowBounds);
mInstrumentation.runOnMainSync(() -> {
mWindowMagnificationController.onConfigurationChanged(ActivityInfo.CONFIG_ORIENTATION);
});
mInstrumentation.runOnMainSync(() -> mWindowMagnificationController.onConfigurationChanged(
ActivityInfo.CONFIG_ORIENTATION));
assertEquals(newRotation, mWindowMagnificationController.mRotation);
final PointF expectedCenter = new PointF(magnifiedCenter.y, magnifiedCenter.x);
final PointF actualCenter = new PointF(mWindowMagnificationController.getCenterX(),
mWindowMagnificationController.getCenterY());
assertEquals(expectedCenter, actualCenter);
verify(mWindowManager, times(2)).updateViewLayout(any(), any());
}
@Test