Loading services/core/java/com/android/server/wm/DisplayContent.java +4 −1 Original line number Diff line number Diff line Loading @@ -5009,8 +5009,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp // exists so it get's layered above the starting window. if (imeTarget != null && !(imeTarget.mActivityRecord != null && imeTarget.mActivityRecord.hasStartingWindow())) { final WindowToken imeControlTargetToken = mImeControlTarget != null && mImeControlTarget.getWindow() != null ? mImeControlTarget.getWindow().mToken : null; final boolean canImeTargetSetRelativeLayer = imeTarget.getSurfaceControl() != null && imeTarget == mImeControlTarget && imeTarget.mToken == imeControlTargetToken && !imeTarget.inMultiWindowMode() && imeTarget.mToken.getActivity(app -> app.isAnimating(TRANSITION | PARENTS, ANIMATION_TYPE_ALL & ~ANIMATION_TYPE_RECENTS)) == null; Loading services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java +19 −0 Original line number Diff line number Diff line Loading @@ -428,6 +428,25 @@ public class ZOrderingTests extends WindowTestsBase { assertWindowHigher(mImeWindow, imeAppTarget); } @Test public void testAssignWindowLayers_ForImeOnPopupImeLayeringTarget() { final WindowState imeAppTarget = createWindow(null, TYPE_APPLICATION, mAppWindow.mActivityRecord, "imeAppTarget"); mDisplayContent.setImeInputTarget(imeAppTarget); mDisplayContent.setImeLayeringTarget(imeAppTarget); mDisplayContent.setImeControlTarget(imeAppTarget); // Set a popup IME layering target and keeps the original IME control target behinds it. final WindowState popupImeTargetWin = createWindow(imeAppTarget, TYPE_APPLICATION_SUB_PANEL, mAppWindow.mActivityRecord, "popupImeTargetWin"); mDisplayContent.setImeLayeringTarget(popupImeTargetWin); mDisplayContent.updateImeParent(); // Ime should on top of the popup IME layering target window. mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(mImeWindow, popupImeTargetWin); } @Test public void testAssignWindowLayers_ForNegativelyZOrderedSubtype() { Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +4 −1 Original line number Diff line number Diff line Loading @@ -5009,8 +5009,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp // exists so it get's layered above the starting window. if (imeTarget != null && !(imeTarget.mActivityRecord != null && imeTarget.mActivityRecord.hasStartingWindow())) { final WindowToken imeControlTargetToken = mImeControlTarget != null && mImeControlTarget.getWindow() != null ? mImeControlTarget.getWindow().mToken : null; final boolean canImeTargetSetRelativeLayer = imeTarget.getSurfaceControl() != null && imeTarget == mImeControlTarget && imeTarget.mToken == imeControlTargetToken && !imeTarget.inMultiWindowMode() && imeTarget.mToken.getActivity(app -> app.isAnimating(TRANSITION | PARENTS, ANIMATION_TYPE_ALL & ~ANIMATION_TYPE_RECENTS)) == null; Loading
services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java +19 −0 Original line number Diff line number Diff line Loading @@ -428,6 +428,25 @@ public class ZOrderingTests extends WindowTestsBase { assertWindowHigher(mImeWindow, imeAppTarget); } @Test public void testAssignWindowLayers_ForImeOnPopupImeLayeringTarget() { final WindowState imeAppTarget = createWindow(null, TYPE_APPLICATION, mAppWindow.mActivityRecord, "imeAppTarget"); mDisplayContent.setImeInputTarget(imeAppTarget); mDisplayContent.setImeLayeringTarget(imeAppTarget); mDisplayContent.setImeControlTarget(imeAppTarget); // Set a popup IME layering target and keeps the original IME control target behinds it. final WindowState popupImeTargetWin = createWindow(imeAppTarget, TYPE_APPLICATION_SUB_PANEL, mAppWindow.mActivityRecord, "popupImeTargetWin"); mDisplayContent.setImeLayeringTarget(popupImeTargetWin); mDisplayContent.updateImeParent(); // Ime should on top of the popup IME layering target window. mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(mImeWindow, popupImeTargetWin); } @Test public void testAssignWindowLayers_ForNegativelyZOrderedSubtype() { Loading