Loading core/tests/coretests/src/android/view/ViewRootImplTest.java +13 −133 Original line number Diff line number Diff line Loading @@ -28,29 +28,23 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; import static android.view.WindowManager.LayoutParams.TYPE_TOAST; import static org.hamcrest.Matchers.equalTo; import static androidx.test.InstrumentationRegistry.getInstrumentation; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeTrue; import static org.junit.Assert.assertTrue; import android.content.Context; import android.graphics.Insets; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; import android.view.WindowInsets.Side; import android.view.WindowInsets.Type; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * Tests for {@link ViewRootImpl} * Loading @@ -62,59 +56,18 @@ import java.lang.reflect.Method; @RunWith(AndroidJUnit4.class) public class ViewRootImplTest { private Context mContext; private ViewRootImplAccessor mViewRootImpl; private ViewRootImpl mViewRootImpl; @Before public void setUp() throws Exception { mContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { mViewRootImpl = new ViewRootImplAccessor( new ViewRootImpl(mContext, mContext.getDisplayNoVerify())); }); } @Test public void negativeInsets_areSetToZero() throws Exception { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); mViewRootImpl.getAttachInfo().getContentInsets().set(-10, -20, -30 , -40); mViewRootImpl.getAttachInfo().getStableInsets().set(-10, -20, -30 , -40); final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */); final Context context = getInstrumentation().getTargetContext(); assertThat(insets.getSystemWindowInsets(), equalTo(Insets.NONE)); assertThat(insets.getStableInsets(), equalTo(Insets.NONE)); } @Test public void negativeInsets_areSetToZero_positiveAreLeftAsIs() throws Exception { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); mViewRootImpl.getAttachInfo().getContentInsets().set(-10, 20, -30 , 40); mViewRootImpl.getAttachInfo().getStableInsets().set(10, -20, 30 , -40); final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */); assertThat(insets.getSystemWindowInsets(), equalTo(Insets.of(0, 20, 0, 40))); assertThat(insets.getStableInsets(), equalTo(Insets.of(10, 0, 30, 0))); } @Test public void positiveInsets_areLeftAsIs() throws Exception { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); mViewRootImpl.getAttachInfo().getContentInsets().set(10, 20, 30 , 40); mViewRootImpl.getAttachInfo().getStableInsets().set(10, 20, 30 , 40); final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */); assertThat(insets.getSystemWindowInsets(), equalTo(Insets.of(10, 20, 30, 40))); assertThat(insets.getStableInsets(), equalTo(Insets.of(10, 20, 30, 40))); getInstrumentation().runOnMainSync(() -> mViewRootImpl = new ViewRootImpl(context, context.getDisplayNoVerify())); } @Test public void adjustLayoutParamsForCompatibility_layoutFullscreen() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); attrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -125,8 +78,6 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_layoutInScreen() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); attrs.flags = FLAG_LAYOUT_IN_SCREEN; ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -137,8 +88,6 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_layoutHideNavigation() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); attrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -149,28 +98,22 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_toast() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_TOAST); ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); assertEquals(true, attrs.isFitInsetsIgnoringVisibility()); assertTrue(attrs.isFitInsetsIgnoringVisibility()); } @Test public void adjustLayoutParamsForCompatibility_systemAlert() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_SYSTEM_ALERT); ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); assertEquals(true, attrs.isFitInsetsIgnoringVisibility()); assertTrue(attrs.isFitInsetsIgnoringVisibility()); } @Test public void adjustLayoutParamsForCompatibility_fitSystemBars() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -180,8 +123,6 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_noAdjustLayout() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); final int types = Type.all(); final int sides = Side.TOP | Side.LEFT; Loading @@ -201,11 +142,8 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_noAdjustAppearance() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final ViewRootImpl viewRoot = mViewRootImpl.get(); final WindowInsetsController controller = viewRoot.getInsetsController(); final WindowManager.LayoutParams attrs = viewRoot.mWindowAttributes; final WindowInsetsController controller = mViewRootImpl.getInsetsController(); final WindowManager.LayoutParams attrs = mViewRootImpl.mWindowAttributes; final int appearance = 0; controller.setSystemBarsAppearance(appearance, 0xffffffff); attrs.systemUiVisibility = SYSTEM_UI_FLAG_LOW_PROFILE Loading @@ -220,11 +158,8 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_noAdjustBehavior() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final ViewRootImpl viewRoot = mViewRootImpl.get(); final WindowInsetsController controller = viewRoot.getInsetsController(); final WindowManager.LayoutParams attrs = viewRoot.mWindowAttributes; final WindowInsetsController controller = mViewRootImpl.getInsetsController(); final WindowManager.LayoutParams attrs = mViewRootImpl.mWindowAttributes; final int behavior = BEHAVIOR_SHOW_BARS_BY_TOUCH; controller.setSystemBarsBehavior(behavior); attrs.systemUiVisibility = SYSTEM_UI_FLAG_IMMERSIVE_STICKY; Loading @@ -234,59 +169,4 @@ public class ViewRootImplTest { // setSystemBarsBehavior. assertEquals(behavior, controller.getSystemBarsBehavior()); } private static class ViewRootImplAccessor { private final ViewRootImpl mViewRootImpl; ViewRootImplAccessor(ViewRootImpl viewRootImpl) { mViewRootImpl = viewRootImpl; } public ViewRootImpl get() { return mViewRootImpl; } AttachInfoAccessor getAttachInfo() throws Exception { return new AttachInfoAccessor( getField(mViewRootImpl, ViewRootImpl.class.getDeclaredField("mAttachInfo"))); } WindowInsets getWindowInsets(boolean forceConstruct) throws Exception { return (WindowInsets) invokeMethod(mViewRootImpl, ViewRootImpl.class.getDeclaredMethod("getWindowInsets", boolean.class), forceConstruct); } class AttachInfoAccessor { private final Class<?> mClass; private final Object mAttachInfo; AttachInfoAccessor(Object attachInfo) throws Exception { mAttachInfo = attachInfo; mClass = ViewRootImpl.class.getClassLoader().loadClass( "android.view.View$AttachInfo"); } Rect getContentInsets() throws Exception { return (Rect) getField(mAttachInfo, mClass.getDeclaredField("mContentInsets")); } Rect getStableInsets() throws Exception { return (Rect) getField(mAttachInfo, mClass.getDeclaredField("mStableInsets")); } } private static Object getField(Object o, Field field) throws Exception { field.setAccessible(true); return field.get(o); } private static Object invokeMethod(Object o, Method method, Object... args) throws Exception { method.setAccessible(true); return method.invoke(o, args); } } } services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java +0 −162 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ import static android.view.Surface.ROTATION_0; import static android.view.Surface.ROTATION_270; import static android.view.Surface.ROTATION_90; import static android.view.View.SYSTEM_UI_FLAG_FULLSCREEN; import static android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR; Loading @@ -40,7 +38,6 @@ import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_M import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_SCREEN_DECOR; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR; Loading @@ -50,7 +47,6 @@ import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeTrue; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import static org.testng.Assert.expectThrows; Loading @@ -64,18 +60,15 @@ import android.util.Pair; import android.view.DisplayCutout; import android.view.DisplayInfo; import android.view.InsetsState; import android.view.ViewRootImpl; import android.view.WindowInsets.Side; import android.view.WindowInsets.Type; import android.view.WindowManager; import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import com.android.server.policy.WindowManagerPolicy; import com.android.server.wm.utils.WmDisplayCutout; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -116,12 +109,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { updateDisplayFrames(); } @After public void tearDown() { PolicyControl.setFilters(""); mWindow.getDisplayContent().mInputMethodTarget = null; } public void setRotation(int rotation) { mRotation = rotation; updateDisplayFrames(); Loading Loading @@ -210,8 +197,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitStatusBars() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsTypes(Type.statusBars()); addWindow(mWindow); Loading @@ -228,8 +213,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitNavigationBars() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsTypes(Type.navigationBars()); addWindow(mWindow); Loading @@ -246,8 +229,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitAllSides() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsSides(Side.all()); addWindow(mWindow); Loading @@ -264,8 +245,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitTopOnly() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsSides(Side.TOP); addWindow(mWindow); Loading @@ -282,8 +261,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitInsetsIgnoringVisibility() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final InsetsState state = mDisplayContent.getInsetsPolicy().getInsetsForDispatch(mWindow); state.getSource(InsetsState.ITYPE_STATUS_BAR).setVisible(false); Loading @@ -304,8 +281,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitInsetsNotIgnoringVisibility() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final InsetsState state = mDisplayContent.getInsetsPolicy().getInsetsForDispatch(mWindow); state.getSource(InsetsState.ITYPE_STATUS_BAR).setVisible(false); Loading @@ -326,7 +301,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitDisplayCutout() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); addDisplayCutout(); mWindow.mAttrs.setFitInsetsTypes(Type.displayCutout()); Loading Loading @@ -682,31 +656,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } @Test public void layoutWindowLw_withForwardInset_SoftInputAdjustResize() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_NONE); mWindow.mAttrs.flags = FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; mWindow.mAttrs.setFitInsetsTypes(0 /* types */); mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; addWindow(mWindow); final int forwardedInsetBottom = 50; mDisplayPolicy.setForwardedInsets(Insets.of(0, 0, 0, forwardedInsetBottom)); mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); assertInsetBy(mWindow.getParentFrame(), 0, 0, 0, 0); assertInsetByTopBottom(mWindow.getStableFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT + forwardedInsetBottom); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT + forwardedInsetBottom); assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } @Test public void layoutWindowLw_withForwardInset_SoftInputAdjustNothing() { mWindow.mAttrs.flags = Loading @@ -728,117 +677,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withImmersive_SoftInputAdjustResize() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION; addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); int bottomInset = mFrames.mDisplayHeight - INPUT_METHOD_WINDOW_TOP; assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0); assertInsetByTopBottom(mWindow.getContentFrameLw(), 0, 0); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, bottomInset); } } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withImmersive_SoftInputAdjustNothing() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_NOTHING; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION; addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0); assertInsetByTopBottom(mWindow.getContentFrameLw(), 0, 0); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), 0, 0); } } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withForceImmersive_fullscreen() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = 0; PolicyControl.setFilters(PolicyControl.NAME_IMMERSIVE_FULL + "=*"); addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); int bottomInset = mFrames.mDisplayHeight - INPUT_METHOD_WINDOW_TOP; assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0); assertInsetByTopBottom(mWindow.getContentFrameLw(), 0, 0); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, bottomInset); } } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withForceImmersive_nonFullscreen() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = 0; mWindow.mAttrs.width = DISPLAY_WIDTH / 2; mWindow.mAttrs.height = DISPLAY_HEIGHT / 2; PolicyControl.setFilters(PolicyControl.NAME_IMMERSIVE_FULL + "=*"); addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); int bottomInset = mFrames.mDisplayHeight - INPUT_METHOD_WINDOW_TOP; assertInsetByTopBottom(mWindow.getParentFrame(), STATUS_BAR_HEIGHT, bottomInset); assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, bottomInset); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, bottomInset); } } @Test public void layoutHint_appWindow() { mWindow.mAttrs.flags = Loading services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +0 −20 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMAR import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.Surface.ROTATION_0; import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL; import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW; import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; Loading Loading @@ -75,17 +74,13 @@ import android.util.Size; import android.view.DisplayCutout; import android.view.InsetsSource; import android.view.SurfaceControl; import android.view.ViewRootImpl; import android.view.WindowManager; import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import com.android.server.wm.utils.WmDisplayCutout; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -103,21 +98,6 @@ import java.util.List; @Presubmit @RunWith(WindowTestRunner.class) public class WindowStateTests extends WindowTestsBase { private static int sPreviousNewInsetsMode; @BeforeClass public static void setUpOnce() { // TODO: Make use of SettingsSession when it becomes feasible for this. sPreviousNewInsetsMode = ViewRootImpl.sNewInsetsMode; // To let the insets provider control the insets visibility, the insets mode has to be // NEW_INSETS_MODE_FULL. ViewRootImpl.sNewInsetsMode = NEW_INSETS_MODE_FULL; } @AfterClass public static void tearDownOnce() { ViewRootImpl.sNewInsetsMode = sPreviousNewInsetsMode; } @Before public void setUp() { Loading Loading
core/tests/coretests/src/android/view/ViewRootImplTest.java +13 −133 Original line number Diff line number Diff line Loading @@ -28,29 +28,23 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; import static android.view.WindowManager.LayoutParams.TYPE_TOAST; import static org.hamcrest.Matchers.equalTo; import static androidx.test.InstrumentationRegistry.getInstrumentation; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeTrue; import static org.junit.Assert.assertTrue; import android.content.Context; import android.graphics.Insets; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; import android.view.WindowInsets.Side; import android.view.WindowInsets.Type; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * Tests for {@link ViewRootImpl} * Loading @@ -62,59 +56,18 @@ import java.lang.reflect.Method; @RunWith(AndroidJUnit4.class) public class ViewRootImplTest { private Context mContext; private ViewRootImplAccessor mViewRootImpl; private ViewRootImpl mViewRootImpl; @Before public void setUp() throws Exception { mContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { mViewRootImpl = new ViewRootImplAccessor( new ViewRootImpl(mContext, mContext.getDisplayNoVerify())); }); } @Test public void negativeInsets_areSetToZero() throws Exception { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); mViewRootImpl.getAttachInfo().getContentInsets().set(-10, -20, -30 , -40); mViewRootImpl.getAttachInfo().getStableInsets().set(-10, -20, -30 , -40); final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */); final Context context = getInstrumentation().getTargetContext(); assertThat(insets.getSystemWindowInsets(), equalTo(Insets.NONE)); assertThat(insets.getStableInsets(), equalTo(Insets.NONE)); } @Test public void negativeInsets_areSetToZero_positiveAreLeftAsIs() throws Exception { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); mViewRootImpl.getAttachInfo().getContentInsets().set(-10, 20, -30 , 40); mViewRootImpl.getAttachInfo().getStableInsets().set(10, -20, 30 , -40); final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */); assertThat(insets.getSystemWindowInsets(), equalTo(Insets.of(0, 20, 0, 40))); assertThat(insets.getStableInsets(), equalTo(Insets.of(10, 0, 30, 0))); } @Test public void positiveInsets_areLeftAsIs() throws Exception { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); mViewRootImpl.getAttachInfo().getContentInsets().set(10, 20, 30 , 40); mViewRootImpl.getAttachInfo().getStableInsets().set(10, 20, 30 , 40); final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */); assertThat(insets.getSystemWindowInsets(), equalTo(Insets.of(10, 20, 30, 40))); assertThat(insets.getStableInsets(), equalTo(Insets.of(10, 20, 30, 40))); getInstrumentation().runOnMainSync(() -> mViewRootImpl = new ViewRootImpl(context, context.getDisplayNoVerify())); } @Test public void adjustLayoutParamsForCompatibility_layoutFullscreen() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); attrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -125,8 +78,6 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_layoutInScreen() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); attrs.flags = FLAG_LAYOUT_IN_SCREEN; ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -137,8 +88,6 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_layoutHideNavigation() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); attrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -149,28 +98,22 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_toast() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_TOAST); ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); assertEquals(true, attrs.isFitInsetsIgnoringVisibility()); assertTrue(attrs.isFitInsetsIgnoringVisibility()); } @Test public void adjustLayoutParamsForCompatibility_systemAlert() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_SYSTEM_ALERT); ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); assertEquals(true, attrs.isFitInsetsIgnoringVisibility()); assertTrue(attrs.isFitInsetsIgnoringVisibility()); } @Test public void adjustLayoutParamsForCompatibility_fitSystemBars() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); ViewRootImpl.adjustLayoutParamsForCompatibility(attrs); Loading @@ -180,8 +123,6 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_noAdjustLayout() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION); final int types = Type.all(); final int sides = Side.TOP | Side.LEFT; Loading @@ -201,11 +142,8 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_noAdjustAppearance() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final ViewRootImpl viewRoot = mViewRootImpl.get(); final WindowInsetsController controller = viewRoot.getInsetsController(); final WindowManager.LayoutParams attrs = viewRoot.mWindowAttributes; final WindowInsetsController controller = mViewRootImpl.getInsetsController(); final WindowManager.LayoutParams attrs = mViewRootImpl.mWindowAttributes; final int appearance = 0; controller.setSystemBarsAppearance(appearance, 0xffffffff); attrs.systemUiVisibility = SYSTEM_UI_FLAG_LOW_PROFILE Loading @@ -220,11 +158,8 @@ public class ViewRootImplTest { @Test public void adjustLayoutParamsForCompatibility_noAdjustBehavior() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final ViewRootImpl viewRoot = mViewRootImpl.get(); final WindowInsetsController controller = viewRoot.getInsetsController(); final WindowManager.LayoutParams attrs = viewRoot.mWindowAttributes; final WindowInsetsController controller = mViewRootImpl.getInsetsController(); final WindowManager.LayoutParams attrs = mViewRootImpl.mWindowAttributes; final int behavior = BEHAVIOR_SHOW_BARS_BY_TOUCH; controller.setSystemBarsBehavior(behavior); attrs.systemUiVisibility = SYSTEM_UI_FLAG_IMMERSIVE_STICKY; Loading @@ -234,59 +169,4 @@ public class ViewRootImplTest { // setSystemBarsBehavior. assertEquals(behavior, controller.getSystemBarsBehavior()); } private static class ViewRootImplAccessor { private final ViewRootImpl mViewRootImpl; ViewRootImplAccessor(ViewRootImpl viewRootImpl) { mViewRootImpl = viewRootImpl; } public ViewRootImpl get() { return mViewRootImpl; } AttachInfoAccessor getAttachInfo() throws Exception { return new AttachInfoAccessor( getField(mViewRootImpl, ViewRootImpl.class.getDeclaredField("mAttachInfo"))); } WindowInsets getWindowInsets(boolean forceConstruct) throws Exception { return (WindowInsets) invokeMethod(mViewRootImpl, ViewRootImpl.class.getDeclaredMethod("getWindowInsets", boolean.class), forceConstruct); } class AttachInfoAccessor { private final Class<?> mClass; private final Object mAttachInfo; AttachInfoAccessor(Object attachInfo) throws Exception { mAttachInfo = attachInfo; mClass = ViewRootImpl.class.getClassLoader().loadClass( "android.view.View$AttachInfo"); } Rect getContentInsets() throws Exception { return (Rect) getField(mAttachInfo, mClass.getDeclaredField("mContentInsets")); } Rect getStableInsets() throws Exception { return (Rect) getField(mAttachInfo, mClass.getDeclaredField("mStableInsets")); } } private static Object getField(Object o, Field field) throws Exception { field.setAccessible(true); return field.get(o); } private static Object invokeMethod(Object o, Method method, Object... args) throws Exception { method.setAccessible(true); return method.invoke(o, args); } } }
services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java +0 −162 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ import static android.view.Surface.ROTATION_0; import static android.view.Surface.ROTATION_270; import static android.view.Surface.ROTATION_90; import static android.view.View.SYSTEM_UI_FLAG_FULLSCREEN; import static android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR; Loading @@ -40,7 +38,6 @@ import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_M import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_SCREEN_DECOR; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR; Loading @@ -50,7 +47,6 @@ import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeTrue; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import static org.testng.Assert.expectThrows; Loading @@ -64,18 +60,15 @@ import android.util.Pair; import android.view.DisplayCutout; import android.view.DisplayInfo; import android.view.InsetsState; import android.view.ViewRootImpl; import android.view.WindowInsets.Side; import android.view.WindowInsets.Type; import android.view.WindowManager; import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import com.android.server.policy.WindowManagerPolicy; import com.android.server.wm.utils.WmDisplayCutout; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -116,12 +109,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { updateDisplayFrames(); } @After public void tearDown() { PolicyControl.setFilters(""); mWindow.getDisplayContent().mInputMethodTarget = null; } public void setRotation(int rotation) { mRotation = rotation; updateDisplayFrames(); Loading Loading @@ -210,8 +197,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitStatusBars() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsTypes(Type.statusBars()); addWindow(mWindow); Loading @@ -228,8 +213,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitNavigationBars() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsTypes(Type.navigationBars()); addWindow(mWindow); Loading @@ -246,8 +229,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitAllSides() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsSides(Side.all()); addWindow(mWindow); Loading @@ -264,8 +245,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitTopOnly() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); mWindow.mAttrs.setFitInsetsSides(Side.TOP); addWindow(mWindow); Loading @@ -282,8 +261,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitInsetsIgnoringVisibility() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final InsetsState state = mDisplayContent.getInsetsPolicy().getInsetsForDispatch(mWindow); state.getSource(InsetsState.ITYPE_STATUS_BAR).setVisible(false); Loading @@ -304,8 +281,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitInsetsNotIgnoringVisibility() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); final InsetsState state = mDisplayContent.getInsetsPolicy().getInsetsForDispatch(mWindow); state.getSource(InsetsState.ITYPE_STATUS_BAR).setVisible(false); Loading @@ -326,7 +301,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { @Test public void layoutWindowLw_fitDisplayCutout() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL); addDisplayCutout(); mWindow.mAttrs.setFitInsetsTypes(Type.displayCutout()); Loading Loading @@ -682,31 +656,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } @Test public void layoutWindowLw_withForwardInset_SoftInputAdjustResize() { assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_NONE); mWindow.mAttrs.flags = FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; mWindow.mAttrs.setFitInsetsTypes(0 /* types */); mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; addWindow(mWindow); final int forwardedInsetBottom = 50; mDisplayPolicy.setForwardedInsets(Insets.of(0, 0, 0, forwardedInsetBottom)); mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); assertInsetBy(mWindow.getParentFrame(), 0, 0, 0, 0); assertInsetByTopBottom(mWindow.getStableFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT); assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT + forwardedInsetBottom); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT + forwardedInsetBottom); assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0); assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } @Test public void layoutWindowLw_withForwardInset_SoftInputAdjustNothing() { mWindow.mAttrs.flags = Loading @@ -728,117 +677,6 @@ public class DisplayPolicyLayoutTests extends DisplayPolicyTestsBase { assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0); } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withImmersive_SoftInputAdjustResize() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION; addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); int bottomInset = mFrames.mDisplayHeight - INPUT_METHOD_WINDOW_TOP; assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0); assertInsetByTopBottom(mWindow.getContentFrameLw(), 0, 0); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, bottomInset); } } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withImmersive_SoftInputAdjustNothing() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_NOTHING; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION; addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0); assertInsetByTopBottom(mWindow.getContentFrameLw(), 0, 0); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), 0, 0); } } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withForceImmersive_fullscreen() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = 0; PolicyControl.setFilters(PolicyControl.NAME_IMMERSIVE_FULL + "=*"); addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); int bottomInset = mFrames.mDisplayHeight - INPUT_METHOD_WINDOW_TOP; assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0); assertInsetByTopBottom(mWindow.getContentFrameLw(), 0, 0); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, bottomInset); } } // TODO(b/118118435): remove after removing PolicyControl @FlakyTest(bugId = 129711077) @Test public void layoutWindowLw_withForceImmersive_nonFullscreen() { assumeTrue(ViewRootImpl.sNewInsetsMode != ViewRootImpl.NEW_INSETS_MODE_FULL); synchronized (mWm.mGlobalLock) { mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE; mWindow.mAttrs.flags = 0; mWindow.mAttrs.systemUiVisibility = 0; mWindow.mAttrs.width = DISPLAY_WIDTH / 2; mWindow.mAttrs.height = DISPLAY_HEIGHT / 2; PolicyControl.setFilters(PolicyControl.NAME_IMMERSIVE_FULL + "=*"); addWindow(mWindow); mWindow.getDisplayContent().mInputMethodTarget = mWindow; mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */); mFrames.mContent.bottom = mFrames.mVoiceContent.bottom = INPUT_METHOD_WINDOW_TOP; mFrames.mCurrent.bottom = INPUT_METHOD_WINDOW_TOP; mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames); int bottomInset = mFrames.mDisplayHeight - INPUT_METHOD_WINDOW_TOP; assertInsetByTopBottom(mWindow.getParentFrame(), STATUS_BAR_HEIGHT, bottomInset); assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, bottomInset); assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, bottomInset); } } @Test public void layoutHint_appWindow() { mWindow.mAttrs.flags = Loading
services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +0 −20 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMAR import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.Surface.ROTATION_0; import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL; import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW; import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; Loading Loading @@ -75,17 +74,13 @@ import android.util.Size; import android.view.DisplayCutout; import android.view.InsetsSource; import android.view.SurfaceControl; import android.view.ViewRootImpl; import android.view.WindowManager; import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import com.android.server.wm.utils.WmDisplayCutout; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -103,21 +98,6 @@ import java.util.List; @Presubmit @RunWith(WindowTestRunner.class) public class WindowStateTests extends WindowTestsBase { private static int sPreviousNewInsetsMode; @BeforeClass public static void setUpOnce() { // TODO: Make use of SettingsSession when it becomes feasible for this. sPreviousNewInsetsMode = ViewRootImpl.sNewInsetsMode; // To let the insets provider control the insets visibility, the insets mode has to be // NEW_INSETS_MODE_FULL. ViewRootImpl.sNewInsetsMode = NEW_INSETS_MODE_FULL; } @AfterClass public static void tearDownOnce() { ViewRootImpl.sNewInsetsMode = sPreviousNewInsetsMode; } @Before public void setUp() { Loading