Loading services/tests/wmtests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ android_test { "CtsSurfaceValidatorLib", "service-sdksandbox.impl", "com.android.window.flags.window-aconfig-java", "android.view.inputmethod.flags-aconfig-java", "flag-junit", ], Loading services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java +55 −0 Original line number Diff line number Diff line Loading @@ -41,11 +41,13 @@ import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.verify; import android.app.StatusBarManager; import android.graphics.Insets; import android.graphics.Rect; import android.os.Binder; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.RequiresFlagsEnabled; import android.view.InsetsFrameProvider; import android.view.InsetsSource; import android.view.InsetsSourceControl; Loading Loading @@ -525,6 +527,59 @@ public class InsetsPolicyTest extends WindowTestsBase { assertTrue(win1.getWindowFrames().hasInsetsChanged()); } /** * This test verifies that after setting {@link WindowContainer#mExcludeInsetsTypes}, the IME * insets have a height of zero (applied in {@link InsetsPolicy#adjustVisibilityForIme}). */ @RequiresFlagsEnabled(android.view.inputmethod.Flags.FLAG_REFACTOR_INSETS_CONTROLLER) @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testExcludeImeInsets() { final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); final InsetsSource imeSource = new InsetsSource(ID_IME, ime()); imeSource.setVisible(true); mImeWindow.mHasSurface = true; final WindowState win = addWindow(TYPE_APPLICATION, "win1"); win.setRequestedVisibleTypes(0, ime()); win.mAboveInsetsState.addSource(imeSource); win.mHasSurface = true; DisplayContentTests.performLayout(mDisplayContent); // IME should cover half of the app's window final var winFrame = win.getFrame(); imeSource.setFrame(winFrame.left, winFrame.bottom / 2, winFrame.right, winFrame.bottom); imeSource.setVisibleFrame(imeSource.getFrame()); DisplayContentTests.performLayout(mDisplayContent); assertTrue(mImeWindow.isVisible()); assertTrue(win.isVisible()); displayPolicy.beginPostLayoutPolicyLw(); displayPolicy.applyPostLayoutPolicyLw(win, win.mAttrs, null, null); displayPolicy.finishPostLayoutPolicyLw(); final var imeInsetsShown = win.getInsetsState().calculateInsets(win.getFrame(), ime(), true); assertEquals(new Rect(0, 0, 0, winFrame.bottom / 2), imeInsetsShown.toRect()); // Now we're setting the excludedInsetsTypes for the IME. The IME is still showing, but // in this case, InsetsPolicy#adjustVisibilityForIme will override and dispatch IME // insets with zero height. win.setExcludeInsetsTypes(ime()); displayPolicy.beginPostLayoutPolicyLw(); displayPolicy.applyPostLayoutPolicyLw(win, win.mAttrs, null, null); displayPolicy.finishPostLayoutPolicyLw(); final var imeInsetsHidden = win.getInsetsState().calculateInsets(win.getFrame(), ime(), true); assertEquals(Insets.NONE, imeInsetsHidden); } private WindowState addNavigationBar() { final Binder owner = new Binder(); final WindowState win = createWindow(null, TYPE_NAVIGATION_BAR, "navBar"); Loading Loading
services/tests/wmtests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ android_test { "CtsSurfaceValidatorLib", "service-sdksandbox.impl", "com.android.window.flags.window-aconfig-java", "android.view.inputmethod.flags-aconfig-java", "flag-junit", ], Loading
services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java +55 −0 Original line number Diff line number Diff line Loading @@ -41,11 +41,13 @@ import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.verify; import android.app.StatusBarManager; import android.graphics.Insets; import android.graphics.Rect; import android.os.Binder; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.RequiresFlagsEnabled; import android.view.InsetsFrameProvider; import android.view.InsetsSource; import android.view.InsetsSourceControl; Loading Loading @@ -525,6 +527,59 @@ public class InsetsPolicyTest extends WindowTestsBase { assertTrue(win1.getWindowFrames().hasInsetsChanged()); } /** * This test verifies that after setting {@link WindowContainer#mExcludeInsetsTypes}, the IME * insets have a height of zero (applied in {@link InsetsPolicy#adjustVisibilityForIme}). */ @RequiresFlagsEnabled(android.view.inputmethod.Flags.FLAG_REFACTOR_INSETS_CONTROLLER) @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testExcludeImeInsets() { final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); final InsetsSource imeSource = new InsetsSource(ID_IME, ime()); imeSource.setVisible(true); mImeWindow.mHasSurface = true; final WindowState win = addWindow(TYPE_APPLICATION, "win1"); win.setRequestedVisibleTypes(0, ime()); win.mAboveInsetsState.addSource(imeSource); win.mHasSurface = true; DisplayContentTests.performLayout(mDisplayContent); // IME should cover half of the app's window final var winFrame = win.getFrame(); imeSource.setFrame(winFrame.left, winFrame.bottom / 2, winFrame.right, winFrame.bottom); imeSource.setVisibleFrame(imeSource.getFrame()); DisplayContentTests.performLayout(mDisplayContent); assertTrue(mImeWindow.isVisible()); assertTrue(win.isVisible()); displayPolicy.beginPostLayoutPolicyLw(); displayPolicy.applyPostLayoutPolicyLw(win, win.mAttrs, null, null); displayPolicy.finishPostLayoutPolicyLw(); final var imeInsetsShown = win.getInsetsState().calculateInsets(win.getFrame(), ime(), true); assertEquals(new Rect(0, 0, 0, winFrame.bottom / 2), imeInsetsShown.toRect()); // Now we're setting the excludedInsetsTypes for the IME. The IME is still showing, but // in this case, InsetsPolicy#adjustVisibilityForIme will override and dispatch IME // insets with zero height. win.setExcludeInsetsTypes(ime()); displayPolicy.beginPostLayoutPolicyLw(); displayPolicy.applyPostLayoutPolicyLw(win, win.mAttrs, null, null); displayPolicy.finishPostLayoutPolicyLw(); final var imeInsetsHidden = win.getInsetsState().calculateInsets(win.getFrame(), ime(), true); assertEquals(Insets.NONE, imeInsetsHidden); } private WindowState addNavigationBar() { final Binder owner = new Binder(); final WindowState win = createWindow(null, TYPE_NAVIGATION_BAR, "navBar"); Loading