Loading services/core/java/com/android/server/wm/DisplayWindowSettings.java +1 −5 Original line number Diff line number Diff line Loading @@ -326,15 +326,11 @@ class DisplayWindowSettings { void applySettingsToDisplayLocked(DisplayContent dc) { final DisplayInfo displayInfo = dc.getDisplayInfo(); final Entry entry = getEntry(displayInfo); final Entry entry = getOrCreateEntry(displayInfo); // Setting windowing mode first, because it may override overscan values later. dc.setWindowingMode(getWindowingModeLocked(entry, dc.getDisplayId())); if (entry == null) { return; } displayInfo.overscanLeft = entry.mOverscanLeft; displayInfo.overscanTop = entry.mOverscanTop; displayInfo.overscanRight = entry.mOverscanRight; Loading services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java +40 −12 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import static android.view.WindowManager.REMOVE_CONTENT_MODE_MOVE_TO_PRIMARY; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; Loading @@ -43,11 +43,13 @@ import android.view.Surface; import androidx.test.filters.SmallTest; import com.android.dx.mockito.inline.extended.ExtendedMockito; import com.android.server.policy.WindowManagerPolicy; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.MockitoSession; import java.io.File; Loading Loading @@ -94,6 +96,12 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { @After public void tearDown() { deleteRecursively(TEST_FOLDER); // TODO(b/121296525): We may want to restore other display settings (not only overscans in // testPersistOverscan*test) on mPrimaryDisplay and mSecondaryDisplay back to default // values after each test finishes, since we are going to reuse a singleton // WindowManagerService instance among all tests that extend {@link WindowTestsBase} class // (b/113239988). } @Test Loading Loading @@ -245,21 +253,35 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { @Test public void testPersistOverscanInSameInstance() { final DisplayInfo info = mPrimaryDisplay.getDisplayInfo(); mTarget.setOverscanLocked(info, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); try { mTarget.setOverscanLocked(info, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); assertOverscan(mPrimaryDisplay, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); assertOverscan(mPrimaryDisplay, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); } finally { mTarget.setOverscanLocked(info, 0, 0, 0, 0); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); } } @Test public void testPersistOverscanAcrossInstances() { final DisplayInfo info = mPrimaryDisplay.getDisplayInfo(); mTarget.setOverscanLocked(info, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); try { mTarget.setOverscanLocked(info, 10 /* left */, 20 /* top */, 30 /* right */, 40 /* bottom */); applySettingsToDisplayByNewInstance(mPrimaryDisplay); assertOverscan(mPrimaryDisplay, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); assertOverscan(mPrimaryDisplay, 10 /* left */, 20 /* top */, 30 /* right */, 40 /* bottom */); } finally { mTarget.setOverscanLocked(info, 0, 0, 0, 0); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); } } @Test Loading Loading @@ -389,26 +411,32 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { mTarget.setUserRotation(mPrimaryDisplay, WindowManagerPolicy.USER_ROTATION_LOCKED, Surface.ROTATION_0); final MockitoSession mockitoSession = ExtendedMockito.mockitoSession() .startMocking(); final DisplayRotation displayRotation = mock(DisplayRotation.class); mPrimaryDisplay = spy(mPrimaryDisplay); when(mPrimaryDisplay.getDisplayRotation()).thenReturn(displayRotation); spyOn(mPrimaryDisplay); doReturn(displayRotation).when(mPrimaryDisplay).getDisplayRotation(); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); verify(displayRotation).restoreSettings(anyInt(), anyInt(), eq(false)); mockitoSession.finishMocking(); } @Test public void testSetFixedToUserRotation() { mTarget.setFixedToUserRotation(mPrimaryDisplay, true); final MockitoSession mockitoSession = ExtendedMockito.mockitoSession() .startMocking(); final DisplayRotation displayRotation = mock(DisplayRotation.class); mPrimaryDisplay = spy(mPrimaryDisplay); when(mPrimaryDisplay.getDisplayRotation()).thenReturn(displayRotation); spyOn(mPrimaryDisplay); doReturn(displayRotation).when(mPrimaryDisplay).getDisplayRotation(); applySettingsToDisplayByNewInstance(mPrimaryDisplay); verify(displayRotation).restoreSettings(anyInt(), anyInt(), eq(true)); mockitoSession.finishMocking(); } private static void assertOverscan(DisplayContent display, int left, int top, int right, Loading Loading
services/core/java/com/android/server/wm/DisplayWindowSettings.java +1 −5 Original line number Diff line number Diff line Loading @@ -326,15 +326,11 @@ class DisplayWindowSettings { void applySettingsToDisplayLocked(DisplayContent dc) { final DisplayInfo displayInfo = dc.getDisplayInfo(); final Entry entry = getEntry(displayInfo); final Entry entry = getOrCreateEntry(displayInfo); // Setting windowing mode first, because it may override overscan values later. dc.setWindowingMode(getWindowingModeLocked(entry, dc.getDisplayId())); if (entry == null) { return; } displayInfo.overscanLeft = entry.mOverscanLeft; displayInfo.overscanTop = entry.mOverscanTop; displayInfo.overscanRight = entry.mOverscanRight; Loading
services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java +40 −12 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import static android.view.WindowManager.REMOVE_CONTENT_MODE_MOVE_TO_PRIMARY; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; Loading @@ -43,11 +43,13 @@ import android.view.Surface; import androidx.test.filters.SmallTest; import com.android.dx.mockito.inline.extended.ExtendedMockito; import com.android.server.policy.WindowManagerPolicy; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.MockitoSession; import java.io.File; Loading Loading @@ -94,6 +96,12 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { @After public void tearDown() { deleteRecursively(TEST_FOLDER); // TODO(b/121296525): We may want to restore other display settings (not only overscans in // testPersistOverscan*test) on mPrimaryDisplay and mSecondaryDisplay back to default // values after each test finishes, since we are going to reuse a singleton // WindowManagerService instance among all tests that extend {@link WindowTestsBase} class // (b/113239988). } @Test Loading Loading @@ -245,21 +253,35 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { @Test public void testPersistOverscanInSameInstance() { final DisplayInfo info = mPrimaryDisplay.getDisplayInfo(); mTarget.setOverscanLocked(info, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); try { mTarget.setOverscanLocked(info, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); assertOverscan(mPrimaryDisplay, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); assertOverscan(mPrimaryDisplay, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); } finally { mTarget.setOverscanLocked(info, 0, 0, 0, 0); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); } } @Test public void testPersistOverscanAcrossInstances() { final DisplayInfo info = mPrimaryDisplay.getDisplayInfo(); mTarget.setOverscanLocked(info, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); try { mTarget.setOverscanLocked(info, 10 /* left */, 20 /* top */, 30 /* right */, 40 /* bottom */); applySettingsToDisplayByNewInstance(mPrimaryDisplay); assertOverscan(mPrimaryDisplay, 1 /* left */, 2 /* top */, 3 /* right */, 4 /* bottom */); assertOverscan(mPrimaryDisplay, 10 /* left */, 20 /* top */, 30 /* right */, 40 /* bottom */); } finally { mTarget.setOverscanLocked(info, 0, 0, 0, 0); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); } } @Test Loading Loading @@ -389,26 +411,32 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { mTarget.setUserRotation(mPrimaryDisplay, WindowManagerPolicy.USER_ROTATION_LOCKED, Surface.ROTATION_0); final MockitoSession mockitoSession = ExtendedMockito.mockitoSession() .startMocking(); final DisplayRotation displayRotation = mock(DisplayRotation.class); mPrimaryDisplay = spy(mPrimaryDisplay); when(mPrimaryDisplay.getDisplayRotation()).thenReturn(displayRotation); spyOn(mPrimaryDisplay); doReturn(displayRotation).when(mPrimaryDisplay).getDisplayRotation(); mTarget.applySettingsToDisplayLocked(mPrimaryDisplay); verify(displayRotation).restoreSettings(anyInt(), anyInt(), eq(false)); mockitoSession.finishMocking(); } @Test public void testSetFixedToUserRotation() { mTarget.setFixedToUserRotation(mPrimaryDisplay, true); final MockitoSession mockitoSession = ExtendedMockito.mockitoSession() .startMocking(); final DisplayRotation displayRotation = mock(DisplayRotation.class); mPrimaryDisplay = spy(mPrimaryDisplay); when(mPrimaryDisplay.getDisplayRotation()).thenReturn(displayRotation); spyOn(mPrimaryDisplay); doReturn(displayRotation).when(mPrimaryDisplay).getDisplayRotation(); applySettingsToDisplayByNewInstance(mPrimaryDisplay); verify(displayRotation).restoreSettings(anyInt(), anyInt(), eq(true)); mockitoSession.finishMocking(); } private static void assertOverscan(DisplayContent display, int left, int top, int right, Loading