From 329cbd0e8d7f0b84500ba68ca40e6db35330d962 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Tue, 14 Apr 2020 15:42:41 +0200 Subject: [PATCH] DisplayArea: Fix computation of ImeContainers parent surface When not attached to an activity, the IME container must be attached where the DisplayAreaPolicy placed it, not in WindowContainers. Fixes: 150943539 Test: atest DisplayContentTests Change-Id: Ia205f4ce53cfa063651a0010258f14fc1a22f5ef --- .../com/android/server/wm/DisplayContent.java | 20 +++++++++++-------- .../server/wm/DisplayContentTests.java | 7 ++++--- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index ce7e79714c396..a1776299134be 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -3472,11 +3472,7 @@ class DisplayContent extends WindowContainer getImeContainer() { + return mImeWindowsContainers; + } + SurfaceControl getOverlayLayer() { return mOverlayContainers.getSurfaceControl(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index 38b3d76b447db..685c3bcea2584 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -826,7 +826,7 @@ public class DisplayContentTests extends WindowTestsBase { dc.mInputMethodTarget = createWindow(null, TYPE_STATUS_BAR, "app"); dc.mInputMethodTarget.setWindowingMode( WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY); - assertEquals(dc.getWindowingLayer(), dc.computeImeParent()); + assertEquals(dc.getImeContainer().getParentSurfaceControl(), dc.computeImeParent()); } } @@ -836,7 +836,8 @@ public class DisplayContentTests extends WindowTestsBase { doReturn(false).when(mAppWindow.mActivityRecord).matchParentBounds(); mDisplayContent.mInputMethodTarget = mAppWindow; // The surface parent of IME should be the display instead of app window. - assertEquals(mDisplayContent.getWindowingLayer(), mDisplayContent.computeImeParent()); + assertEquals(mDisplayContent.getImeContainer().getParentSurfaceControl(), + mDisplayContent.computeImeParent()); } @Test @@ -845,7 +846,7 @@ public class DisplayContentTests extends WindowTestsBase { new InsetsModeSession(ViewRootImpl.NEW_INSETS_MODE_IME)) { final DisplayContent dc = createNewDisplay(); dc.mInputMethodTarget = createWindow(null, TYPE_STATUS_BAR, "statusBar"); - assertEquals(dc.getWindowingLayer(), dc.computeImeParent()); + assertEquals(dc.getImeContainer().getParentSurfaceControl(), dc.computeImeParent()); } }