summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java44
1 files changed, 22 insertions, 22 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 203b53ffd1c9..85b507f0e184 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -6874,21 +6874,12 @@ public class WindowManagerService extends IWindowManager.Stub
if (!checkCallingPermission(INTERNAL_SYSTEM_WINDOW, "shouldShowIme()")) {
throw new SecurityException("Requires INTERNAL_SYSTEM_WINDOW permission");
}
-
+ boolean show;
synchronized (mGlobalLock) {
- final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
- if (displayContent == null) {
- ProtoLog.w(WM_ERROR,
- "Attempted to get IME flag of a display that does not exist: %d",
- displayId);
- return false;
- }
- if (displayContent.isUntrustedVirtualDisplay()) {
- return false;
- }
- return mDisplayWindowSettings.shouldShowImeLocked(displayContent)
- || mForceDesktopModeOnExternalDisplays;
+ show = shouldShowImeSystemWindowUncheckedLocked(displayId);
}
+
+ return show;
}
@Override
@@ -7311,18 +7302,12 @@ public class WindowManagerService extends IWindowManager.Stub
if (imeTarget == null) {
return;
}
- final DisplayContent displayContent = imeTarget.getDisplayContent();
- if (displayContent == null) {
- Slog.w(TAG_WM, "Attempted to show IME on an IME target that does not exist: "
- + imeTarget.getName());
+ final int displayId = imeTarget.getDisplayId();
+ if (!shouldShowImeSystemWindowUncheckedLocked(displayId)) {
return;
}
- if (displayContent.isUntrustedVirtualDisplay()) {
- throw new SecurityException("Attempted to show IME on an untrusted "
- + "virtual display: " + displayContent.getDisplayId());
- }
- displayContent.getInsetsStateController().getImeSourceProvider()
+ mRoot.getDisplayContent(displayId).getInsetsStateController().getImeSourceProvider()
.scheduleShowImePostLayout(imeTarget);
}
}
@@ -7842,4 +7827,19 @@ public class WindowManagerService extends IWindowManager.Stub
return true;
}
+
+ private boolean shouldShowImeSystemWindowUncheckedLocked(final int displayId) {
+ final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+ if (displayContent == null) {
+ ProtoLog.w(WM_ERROR,
+ "Attempted to get IME flag of a display that does not exist: %d",
+ displayId);
+ return false;
+ }
+ if (displayContent.isUntrustedVirtualDisplay()) {
+ return false;
+ }
+ return mDisplayWindowSettings.shouldShowImeLocked(displayContent)
+ || mForceDesktopModeOnExternalDisplays;
+ }
}