diff options
| author | 2022-09-13 19:11:45 +0000 | |
|---|---|---|
| committer | 2022-09-13 19:11:45 +0000 | |
| commit | 32859b1d00a0e4c441ecaf51b5f95d346fdac5bd (patch) | |
| tree | dda28436315a3b21a388218623c8121d770aae5a | |
| parent | 42addf53c4c4e686129c88df13e20a700f2f34ea (diff) | |
| parent | 7b5ae86566d103d16f27f4c08f4a1f9e41738a92 (diff) | |
Merge "Fix a potential NPE after scheduleShowImePostLayout"
| -rw-r--r-- | services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java | 6 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/ImeInsetsSourceProviderTest.java | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java index 3e6e06a27fdc..14a1cd011ad6 100644 --- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java +++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java @@ -218,6 +218,12 @@ final class ImeInsetsSourceProvider extends WindowContainerInsetsSourceProvider if (dcTarget == null || mImeRequester == null) { return false; } + // Not ready to show if there is no IME control target. + final InsetsControlTarget controlTarget = mDisplayContent.getImeTarget(IME_TARGET_CONTROL); + if (controlTarget == null) { + return false; + } + ProtoLog.d(WM_DEBUG_IME, "dcTarget: %s mImeRequester: %s", dcTarget.getWindow().getName(), mImeRequester.getWindow() == null ? mImeRequester : mImeRequester.getWindow().getName()); diff --git a/services/tests/wmtests/src/com/android/server/wm/ImeInsetsSourceProviderTest.java b/services/tests/wmtests/src/com/android/server/wm/ImeInsetsSourceProviderTest.java index ca8481a8c50b..c839d1254397 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ImeInsetsSourceProviderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/ImeInsetsSourceProviderTest.java @@ -63,6 +63,7 @@ public class ImeInsetsSourceProviderTest extends WindowTestsBase { public void testInputMethodInputTargetCanShowIme() { WindowState target = createWindow(null, TYPE_APPLICATION, "app"); mDisplayContent.setImeLayeringTarget(target); + mDisplayContent.updateImeInputAndControlTarget(target); mImeProvider.scheduleShowImePostLayout(target); assertTrue(mImeProvider.isReadyToShowIme()); } |