summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/InputMethodManagerService.java
diff options
context:
space:
mode:
authorSatoshi Kataoka <satok@google.com>2012-11-19 17:30:40 +0900
committersatok <satok@google.com>2012-11-20 11:12:07 +0900
commit8d03305b576e429909e420c235163c2be1aae732 (patch)
tree3987816d6a5f0a30adaadc24d9ba358fcb7fcbe0 /services/java/com/android/server/InputMethodManagerService.java
parent2656abe09895088eca25caafc3e92869217d1447 (diff)
downloadframeworks_base-8d03305b576e429909e420c235163c2be1aae732.zip
frameworks_base-8d03305b576e429909e420c235163c2be1aae732.tar.gz
frameworks_base-8d03305b576e429909e420c235163c2be1aae732.tar.bz2
Hide current soft input when a background user gains window focus.
Bug: 7507226 Change-Id: If58f68469e21eaaba8536c4b54b3aa8cf8c08eb5
Diffstat (limited to 'services/java/com/android/server/InputMethodManagerService.java')
-rw-r--r--services/java/com/android/server/InputMethodManagerService.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index da6f1fa..c10dd45 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -1814,9 +1814,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
public InputBindResult windowGainedFocus(IInputMethodClient client, IBinder windowToken,
int controlFlags, int softInputMode, int windowFlags,
EditorInfo attribute, IInputContext inputContext) {
- if (!calledFromValidUser()) {
- return null;
- }
+ // Needs to check the validity before clearing calling identity
+ final boolean calledFromValidUser = calledFromValidUser();
+
InputBindResult res = null;
long ident = Binder.clearCallingIdentity();
try {
@@ -1846,6 +1846,14 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
} catch (RemoteException e) {
}
+ if (!calledFromValidUser) {
+ Slog.w(TAG, "A background user is requesting window. Hiding IME.");
+ Slog.w(TAG, "If you want to interect with IME, you need "
+ + "android.permission.INTERACT_ACROSS_USERS_FULL");
+ hideCurrentInputLocked(0, null);
+ return null;
+ }
+
if (mCurFocusedWindow == windowToken) {
Slog.w(TAG, "Window already focused, ignoring focus gain of: " + client
+ " attribute=" + attribute + ", token = " + windowToken);