summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java9
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java19
-rw-r--r--services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java4
-rw-r--r--services/core/java/com/android/server/wm/KeyguardController.java2
4 files changed, 34 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
index 3ac95d71de3d..bfb9db828131 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
@@ -125,6 +125,11 @@ public abstract class InputMethodManagerInternal {
public abstract void removeImeSurface();
/**
+ * Updates the IME visibility, back disposition and show IME picker status for SystemUI.
+ */
+ public abstract void updateImeWindowStatus();
+
+ /**
* Fake implementation of {@link InputMethodManagerInternal}. All the methods do nothing.
*/
private static final InputMethodManagerInternal NOP =
@@ -175,6 +180,10 @@ public abstract class InputMethodManagerInternal {
@Override
public void removeImeSurface() {
}
+
+ @Override
+ public void updateImeWindowStatus() {
+ }
};
/**
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 94a5099b45da..254243f7167c 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -248,6 +248,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
static final int MSG_CREATE_SESSION = 1050;
static final int MSG_REMOVE_IME_SURFACE = 1060;
static final int MSG_REMOVE_IME_SURFACE_FROM_WINDOW = 1061;
+ static final int MSG_UPDATE_IME_WINDOW_STATUS = 1070;
static final int MSG_START_INPUT = 2000;
@@ -2940,6 +2941,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
}
}
+ private void updateImeWindowStatus() {
+ synchronized (mMethodMap) {
+ updateSystemUiLocked();
+ }
+ }
+
void updateSystemUiLocked() {
updateSystemUiLocked(mImeWindowVis, mBackDisposition);
}
@@ -4537,6 +4544,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
}
return true;
}
+ case MSG_UPDATE_IME_WINDOW_STATUS: {
+ synchronized (mMethodMap) {
+ updateSystemUiLocked();
+ }
+ return true;
+ }
// ---------------------------------------------------------
case MSG_START_INPUT: {
@@ -5202,6 +5215,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
public void removeImeSurface() {
mService.mHandler.sendMessage(mService.mHandler.obtainMessage(MSG_REMOVE_IME_SURFACE));
}
+
+ @Override
+ public void updateImeWindowStatus() {
+ mService.mHandler.sendMessage(
+ mService.mHandler.obtainMessage(MSG_UPDATE_IME_WINDOW_STATUS));
+ }
}
@BinderThread
diff --git a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
index 885093d61486..fcaf6d8fe400 100644
--- a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
@@ -241,6 +241,10 @@ public final class MultiClientInputMethodManagerService {
public void removeImeSurface() {
reportNotSupported();
}
+
+ @Override
+ public void updateImeWindowStatus() {
+ }
});
}
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index 8ff9fbaa3995..df4f2a91a8a5 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -50,6 +50,7 @@ import android.util.SparseArray;
import android.util.proto.ProtoOutputStream;
import com.android.internal.policy.IKeyguardDismissCallback;
+import com.android.server.inputmethod.InputMethodManagerInternal;
import com.android.server.policy.WindowManagerPolicy;
import java.io.PrintWriter;
@@ -191,6 +192,7 @@ class KeyguardController {
// state when evaluating visibilities.
updateKeyguardSleepToken();
mRootWindowContainer.ensureActivitiesVisible(null, 0, !PRESERVE_WINDOWS);
+ InputMethodManagerInternal.get().updateImeWindowStatus();
}
/**