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
This commit is contained in:
Yohei Yukawa
2017-02-10 13:39:10 -08:00
parent 0a54d4bbed
commit 1a5838e966
3 changed files with 16 additions and 52 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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();