summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yohei Yukawa <yukawa@google.com> 2017-02-10 13:39:10 -0800
committer Yohei Yukawa <yukawa@google.com> 2017-02-11 02:56:48 +0000
commit1a5838e966eab7a9f0dca71cabbc9922babb995e (patch)
treedcf1ba51362caeb9b72f4080748ec5794a7490c0
parent0a54d4bbed189357c82598918d819d3bf111d104 (diff)
Merge restartInput into startInput in internal IPC
As a preparation to start tracking all the event flows that cause InputMethodManagerService#setImeWindowStatus(), this CL merges an internal IPC method IInputMethod#restartInput() into IInputMethod#startInput() in favor of simplicity. Test: Done some quick manual testing to make sure that IME is still working Bug: 35079353 Change-Id: Ifda6f74ac1b1370d9e9a9fe60354b692121fdcb9
-rw-r--r--core/java/android/inputmethodservice/IInputMethodWrapper.java34
-rw-r--r--core/java/com/android/internal/view/IInputMethod.aidl5
-rw-r--r--services/core/java/com/android/server/InputMethodManagerService.java29
3 files changed, 16 insertions, 52 deletions
diff --git a/core/java/android/inputmethodservice/IInputMethodWrapper.java b/core/java/android/inputmethodservice/IInputMethodWrapper.java
index 167d5a09a2dc..bdc301c41adf 100644
--- a/core/java/android/inputmethodservice/IInputMethodWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodWrapper.java
@@ -61,7 +61,6 @@ class IInputMethodWrapper extends IInputMethod.Stub
private static final int DO_SET_INPUT_CONTEXT = 20;
private static final int DO_UNSET_INPUT_CONTEXT = 30;
private static final int DO_START_INPUT = 32;
- private static final int DO_RESTART_INPUT = 34;
private static final int DO_CREATE_SESSION = 40;
private static final int DO_SET_SESSION_ENABLED = 45;
private static final int DO_REVOKE_SESSION = 50;
@@ -166,24 +165,17 @@ class IInputMethodWrapper extends IInputMethod.Stub
case DO_START_INPUT: {
SomeArgs args = (SomeArgs)msg.obj;
int missingMethods = msg.arg1;
+ boolean restarting = msg.arg2 != 0;
IInputContext inputContext = (IInputContext)args.arg1;
InputConnection ic = inputContext != null
? new InputConnectionWrapper(mTarget, inputContext, missingMethods) : null;
EditorInfo info = (EditorInfo)args.arg2;
info.makeCompatible(mTargetSdkVersion);
- inputMethod.startInput(ic, info);
- args.recycle();
- return;
- }
- case DO_RESTART_INPUT: {
- SomeArgs args = (SomeArgs)msg.obj;
- int missingMethods = msg.arg1;
- IInputContext inputContext = (IInputContext)args.arg1;
- InputConnection ic = inputContext != null
- ? new InputConnectionWrapper(mTarget, inputContext, missingMethods) : null;
- EditorInfo info = (EditorInfo)args.arg2;
- info.makeCompatible(mTargetSdkVersion);
- inputMethod.restartInput(ic, info);
+ if (restarting) {
+ inputMethod.restartInput(ic, info);
+ } else {
+ inputMethod.startInput(ic, info);
+ }
args.recycle();
return;
}
@@ -265,17 +257,9 @@ class IInputMethodWrapper extends IInputMethod.Stub
@Override
public void startInput(IInputContext inputContext,
@InputConnectionInspector.MissingMethodFlags final int missingMethods,
- EditorInfo attribute) {
- mCaller.executeOrSendMessage(mCaller.obtainMessageIOO(DO_START_INPUT,
- missingMethods, inputContext, attribute));
- }
-
- @Override
- public void restartInput(IInputContext inputContext,
- @InputConnectionInspector.MissingMethodFlags final int missingMethods,
- EditorInfo attribute) {
- mCaller.executeOrSendMessage(mCaller.obtainMessageIOO(DO_RESTART_INPUT,
- missingMethods, inputContext, attribute));
+ EditorInfo attribute, boolean restarting) {
+ mCaller.executeOrSendMessage(mCaller.obtainMessageIIOO(DO_START_INPUT,
+ missingMethods, restarting ? 1 : 0, inputContext, attribute));
}
@Override
diff --git a/core/java/com/android/internal/view/IInputMethod.aidl b/core/java/com/android/internal/view/IInputMethod.aidl
index 6ab1ec797a22..9870612dfac5 100644
--- a/core/java/com/android/internal/view/IInputMethod.aidl
+++ b/core/java/com/android/internal/view/IInputMethod.aidl
@@ -38,9 +38,8 @@ oneway interface IInputMethod {
void unbindInput();
- void startInput(in IInputContext inputContext, int missingMethods, in EditorInfo attribute);
-
- void restartInput(in IInputContext inputContext, int missingMethods, in EditorInfo attribute);
+ void startInput(in IInputContext inputContext, int missingMethods, in EditorInfo attribute,
+ boolean restarting);
void createSession(in InputChannel channel, IInputSessionCallback callback);
diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java
index f0f50f07fcca..6cfbc5a2662b 100644
--- a/services/core/java/com/android/server/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/InputMethodManagerService.java
@@ -175,7 +175,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
static final int MSG_CREATE_SESSION = 1050;
static final int MSG_START_INPUT = 2000;
- static final int MSG_RESTART_INPUT = 2010;
static final int MSG_UNBIND_CLIENT = 3000;
static final int MSG_BIND_CLIENT = 3010;
@@ -1341,15 +1340,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
mBoundToMethod = true;
}
final SessionState session = mCurClient.curSession;
- if (initial) {
- executeOrSendMessage(session.method, mCaller.obtainMessageIOOO(
- MSG_START_INPUT, mCurInputContextMissingMethods, session, mCurInputContext,
- mCurAttribute));
- } else {
- executeOrSendMessage(session.method, mCaller.obtainMessageIOOO(
- MSG_RESTART_INPUT, mCurInputContextMissingMethods, session, mCurInputContext,
- mCurAttribute));
- }
+ executeOrSendMessage(session.method, mCaller.obtainMessageIIOOO(
+ MSG_START_INPUT, initial ? 0 : 1 /* restarting */, mCurInputContextMissingMethods,
+ session, mCurInputContext, mCurAttribute));
if (mShowRequested) {
if (DEBUG) Slog.v(TAG, "Attach new input asks to show input");
showCurrentInputLocked(getAppShowFlags(), null);
@@ -2898,25 +2891,13 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
case MSG_START_INPUT: {
int missingMethods = msg.arg1;
+ boolean restarting = msg.arg2 != 0;
args = (SomeArgs) msg.obj;
try {
SessionState session = (SessionState) args.arg1;
setEnabledSessionInMainThread(session);
session.method.startInput((IInputContext) args.arg2, missingMethods,
- (EditorInfo) args.arg3);
- } catch (RemoteException e) {
- }
- args.recycle();
- return true;
- }
- case MSG_RESTART_INPUT: {
- int missingMethods = msg.arg1;
- args = (SomeArgs) msg.obj;
- try {
- SessionState session = (SessionState) args.arg1;
- setEnabledSessionInMainThread(session);
- session.method.restartInput((IInputContext) args.arg2, missingMethods,
- (EditorInfo) args.arg3);
+ (EditorInfo) args.arg3, restarting);
} catch (RemoteException e) {
}
args.recycle();