summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2022-09-13 19:11:45 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-09-13 19:11:45 +0000
commit32859b1d00a0e4c441ecaf51b5f95d346fdac5bd (patch)
treedda28436315a3b21a388218623c8121d770aae5a
parent42addf53c4c4e686129c88df13e20a700f2f34ea (diff)
parent7b5ae86566d103d16f27f4c08f4a1f9e41738a92 (diff)
Merge "Fix a potential NPE after scheduleShowImePostLayout"
-rw-r--r--services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java6
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ImeInsetsSourceProviderTest.java1
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());
}