Remove more dead tests of legacy insets mode
This CL also removes the assumptions about the new insets mode, because we are always in the new insets mode now. Fix: 156311082 Test: atest ViewRootImplTest DisplayPolicyLayoutTests WindowStateTests Change-Id: I9f6f8824ae364b9cd95f6715dd761026d602c095
This commit is contained in:
@@ -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}
|
||||
*
|
||||
@@ -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();
|
||||
final Context context = 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 */);
|
||||
|
||||
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);
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -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());
|
||||
@@ -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 =
|
||||
@@ -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 =
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user