Loading services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java +254 −222 Original line number Diff line number Diff line Loading @@ -94,8 +94,18 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { mFrames = new DisplayFrames(mDisplayContent.getDisplayId(), info.first, info.second); } @Test public void addingWindow_doesNotTamperWithSysuiFlags() { mWindow.mAttrs.flags |= FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); assertEquals(0, mWindow.mAttrs.systemUiVisibility); assertEquals(0, mWindow.mAttrs.subtreeSystemUiVisibility); } @Test public void layoutWindowLw_appDrawsBars() { synchronized (mWm.mGlobalLock) { mWindow.mAttrs.flags |= FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); Loading @@ -108,9 +118,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } } @Test public void layoutWindowLw_appWontDrawBars() { synchronized (mWm.mGlobalLock) { mWindow.mAttrs.flags &= ~FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); Loading @@ -123,9 +135,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, NAV_BAR_HEIGHT); } } @Test public void layoutWindowLw_appWontDrawBars_forceStatus() throws Exception { synchronized (mWm.mGlobalLock) { mWindow.mAttrs.flags &= ~FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; mWindow.mAttrs.privateFlags |= PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND; addWindow(mWindow); Loading @@ -139,18 +153,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, NAV_BAR_HEIGHT); } @Test public void addingWindow_doesNotTamperWithSysuiFlags() { mWindow.mAttrs.flags |= FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); assertEquals(0, mWindow.mAttrs.systemUiVisibility); assertEquals(0, mWindow.mAttrs.subtreeSystemUiVisibility); } @Test public void layoutWindowLw_withDisplayCutout() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); addWindow(mWindow); Loading @@ -164,9 +171,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_never() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER; Loading @@ -181,9 +190,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), STATUS_BAR_HEIGHT, 0); } } @Test public void layoutWindowLw_withDisplayCutout_layoutFullscreen() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; Loading @@ -198,9 +209,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreen() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_FULLSCREEN; Loading @@ -215,9 +228,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), STATUS_BAR_HEIGHT, 0); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreenInCutout() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_FULLSCREEN; Loading @@ -233,10 +248,12 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_landscape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_90); addWindow(mWindow); Loading @@ -251,9 +268,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_seascape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_270); addWindow(mWindow); Loading @@ -268,9 +287,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, DISPLAY_CUTOUT_HEIGHT, 0); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreen_landscape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_90); Loading @@ -286,9 +307,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT, 0); assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_floatingInScreen() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.flags = FLAG_LAYOUT_IN_SCREEN; Loading @@ -303,9 +326,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getParentFrame(), 0, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreenInCutout_landscape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_90); Loading @@ -322,9 +347,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT, 0); assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); } } @Test public void layoutHint_appWindow() { synchronized (mWm.mGlobalLock) { // Initialize DisplayFrames mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); Loading @@ -336,8 +363,8 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { new DisplayCutout.ParcelableWrapper(); mDisplayPolicy.getLayoutHintLw(mWindow.mAttrs, null, mFrames, false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); assertThat(outFrame, is(mFrames.mUnrestricted)); assertThat(outContentInsets, is(new Rect(0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT))); Loading @@ -345,9 +372,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertThat(outOutsets, is(new Rect())); assertThat(outDisplayCutout, is(new DisplayCutout.ParcelableWrapper())); } } @Test public void layoutHint_appWindowInTask() { synchronized (mWm.mGlobalLock) { // Initialize DisplayFrames mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); Loading @@ -361,8 +390,8 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { new DisplayCutout.ParcelableWrapper(); mDisplayPolicy.getLayoutHintLw(mWindow.mAttrs, taskBounds, mFrames, false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); assertThat(outFrame, is(taskBounds)); assertThat(outContentInsets, is(new Rect())); Loading @@ -370,14 +399,16 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertThat(outOutsets, is(new Rect())); assertThat(outDisplayCutout, is(new DisplayCutout.ParcelableWrapper())); } } @Test public void layoutHint_appWindowInTask_outsideContentFrame() { synchronized (mWm.mGlobalLock) { // Initialize DisplayFrames mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); // Task is in the nav bar area (usually does not happen, but this is similar enough to the // possible overlap with the IME) // Task is in the nav bar area (usually does not happen, but this is similar enough to // the possible overlap with the IME) final Rect taskBounds = new Rect(100, mFrames.mContent.bottom + 1, 200, mFrames.mContent.bottom + 10); Loading @@ -389,8 +420,8 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { new DisplayCutout.ParcelableWrapper(); mDisplayPolicy.getLayoutHintLw(mWindow.mAttrs, taskBounds, mFrames, true /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); true /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); assertThat(outFrame, is(taskBounds)); assertThat(outContentInsets, is(new Rect())); Loading @@ -398,6 +429,7 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertThat(outOutsets, is(new Rect())); assertThat(outDisplayCutout, is(new DisplayCutout.ParcelableWrapper())); } } /** * Asserts that {@code actual} is inset by the given amounts from the full display rect. Loading Loading
services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java +254 −222 Original line number Diff line number Diff line Loading @@ -94,8 +94,18 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { mFrames = new DisplayFrames(mDisplayContent.getDisplayId(), info.first, info.second); } @Test public void addingWindow_doesNotTamperWithSysuiFlags() { mWindow.mAttrs.flags |= FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); assertEquals(0, mWindow.mAttrs.systemUiVisibility); assertEquals(0, mWindow.mAttrs.subtreeSystemUiVisibility); } @Test public void layoutWindowLw_appDrawsBars() { synchronized (mWm.mGlobalLock) { mWindow.mAttrs.flags |= FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); Loading @@ -108,9 +118,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } } @Test public void layoutWindowLw_appWontDrawBars() { synchronized (mWm.mGlobalLock) { mWindow.mAttrs.flags &= ~FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); Loading @@ -123,9 +135,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, NAV_BAR_HEIGHT); } } @Test public void layoutWindowLw_appWontDrawBars_forceStatus() throws Exception { synchronized (mWm.mGlobalLock) { mWindow.mAttrs.flags &= ~FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; mWindow.mAttrs.privateFlags |= PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND; addWindow(mWindow); Loading @@ -139,18 +153,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, NAV_BAR_HEIGHT); } @Test public void addingWindow_doesNotTamperWithSysuiFlags() { mWindow.mAttrs.flags |= FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; addWindow(mWindow); assertEquals(0, mWindow.mAttrs.systemUiVisibility); assertEquals(0, mWindow.mAttrs.subtreeSystemUiVisibility); } @Test public void layoutWindowLw_withDisplayCutout() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); addWindow(mWindow); Loading @@ -164,9 +171,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_never() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER; Loading @@ -181,9 +190,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), STATUS_BAR_HEIGHT, 0); } } @Test public void layoutWindowLw_withDisplayCutout_layoutFullscreen() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; Loading @@ -198,9 +209,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreen() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_FULLSCREEN; Loading @@ -215,9 +228,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), STATUS_BAR_HEIGHT, 0); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreenInCutout() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_FULLSCREEN; Loading @@ -233,10 +248,12 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_landscape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_90); addWindow(mWindow); Loading @@ -251,9 +268,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_seascape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_270); addWindow(mWindow); Loading @@ -268,9 +287,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, DISPLAY_CUTOUT_HEIGHT, 0); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreen_landscape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_90); Loading @@ -286,9 +307,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT, 0); assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); } } @Test public void layoutWindowLw_withDisplayCutout_floatingInScreen() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); mWindow.mAttrs.flags = FLAG_LAYOUT_IN_SCREEN; Loading @@ -303,9 +326,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetByTopBottom(mWindow.getParentFrame(), 0, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getDisplayFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT); } } @Test public void layoutWindowLw_withDisplayCutout_fullscreenInCutout_landscape() { synchronized (mWm.mGlobalLock) { addDisplayCutout(); setRotation(ROTATION_90); Loading @@ -322,9 +347,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT, 0); assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); } } @Test public void layoutHint_appWindow() { synchronized (mWm.mGlobalLock) { // Initialize DisplayFrames mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); Loading @@ -336,8 +363,8 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { new DisplayCutout.ParcelableWrapper(); mDisplayPolicy.getLayoutHintLw(mWindow.mAttrs, null, mFrames, false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); assertThat(outFrame, is(mFrames.mUnrestricted)); assertThat(outContentInsets, is(new Rect(0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT))); Loading @@ -345,9 +372,11 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertThat(outOutsets, is(new Rect())); assertThat(outDisplayCutout, is(new DisplayCutout.ParcelableWrapper())); } } @Test public void layoutHint_appWindowInTask() { synchronized (mWm.mGlobalLock) { // Initialize DisplayFrames mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); Loading @@ -361,8 +390,8 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { new DisplayCutout.ParcelableWrapper(); mDisplayPolicy.getLayoutHintLw(mWindow.mAttrs, taskBounds, mFrames, false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); false /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); assertThat(outFrame, is(taskBounds)); assertThat(outContentInsets, is(new Rect())); Loading @@ -370,14 +399,16 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertThat(outOutsets, is(new Rect())); assertThat(outDisplayCutout, is(new DisplayCutout.ParcelableWrapper())); } } @Test public void layoutHint_appWindowInTask_outsideContentFrame() { synchronized (mWm.mGlobalLock) { // Initialize DisplayFrames mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); // Task is in the nav bar area (usually does not happen, but this is similar enough to the // possible overlap with the IME) // Task is in the nav bar area (usually does not happen, but this is similar enough to // the possible overlap with the IME) final Rect taskBounds = new Rect(100, mFrames.mContent.bottom + 1, 200, mFrames.mContent.bottom + 10); Loading @@ -389,8 +420,8 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { new DisplayCutout.ParcelableWrapper(); mDisplayPolicy.getLayoutHintLw(mWindow.mAttrs, taskBounds, mFrames, true /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); true /* floatingStack */, outFrame, outContentInsets, outStableInsets, outOutsets, outDisplayCutout); assertThat(outFrame, is(taskBounds)); assertThat(outContentInsets, is(new Rect())); Loading @@ -398,6 +429,7 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertThat(outOutsets, is(new Rect())); assertThat(outDisplayCutout, is(new DisplayCutout.ParcelableWrapper())); } } /** * Asserts that {@code actual} is inset by the given amounts from the full display rect. Loading