Introduce IInputMethodManager.InitParams
IInputMethod#initializeInternal() is a hot-spot where we keep adding new parameters recently. Introducing a dedicated parameter object would allow us to add further parameters with fewer lines of changes. This is a mechanical refactoring. There should be no developer observable behavior change. Bug: 234882948 Test: presubmit Change-Id: I98a5424385804ec190885ba53973935f9db66b88
This commit is contained in:
@@ -40,7 +40,6 @@ import android.view.inputmethod.InputMethodSubtype;
|
||||
import com.android.internal.inputmethod.CancellationGroup;
|
||||
import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
|
||||
import com.android.internal.inputmethod.IInputMethod;
|
||||
import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
|
||||
import com.android.internal.inputmethod.IInputMethodSession;
|
||||
import com.android.internal.inputmethod.IInputMethodSessionCallback;
|
||||
import com.android.internal.inputmethod.IRemoteInputConnection;
|
||||
@@ -172,17 +171,9 @@ class IInputMethodWrapper extends IInputMethod.Stub
|
||||
args.recycle();
|
||||
return;
|
||||
}
|
||||
case DO_INITIALIZE_INTERNAL: {
|
||||
SomeArgs args = (SomeArgs) msg.obj;
|
||||
try {
|
||||
inputMethod.initializeInternal((IBinder) args.arg1,
|
||||
(IInputMethodPrivilegedOperations) args.arg2, msg.arg1,
|
||||
(boolean) args.arg3, msg.arg2);
|
||||
} finally {
|
||||
args.recycle();
|
||||
}
|
||||
case DO_INITIALIZE_INTERNAL:
|
||||
inputMethod.initializeInternal((IInputMethod.InitParams) msg.obj);
|
||||
return;
|
||||
}
|
||||
case DO_SET_INPUT_CONTEXT: {
|
||||
inputMethod.bindInput((InputBinding)msg.obj);
|
||||
return;
|
||||
@@ -293,11 +284,8 @@ class IInputMethodWrapper extends IInputMethod.Stub
|
||||
|
||||
@BinderThread
|
||||
@Override
|
||||
public void initializeInternal(IBinder token, IInputMethodPrivilegedOperations privOps,
|
||||
int configChanges, boolean stylusHwSupported,
|
||||
@InputMethodNavButtonFlags int navButtonFlags) {
|
||||
mCaller.executeOrSendMessage(mCaller.obtainMessageIIOOO(DO_INITIALIZE_INTERNAL,
|
||||
configChanges, navButtonFlags, token, privOps, stylusHwSupported));
|
||||
public void initializeInternal(@NonNull IInputMethod.InitParams params) {
|
||||
mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_INITIALIZE_INTERNAL, params));
|
||||
}
|
||||
|
||||
@BinderThread
|
||||
|
||||
@@ -145,7 +145,6 @@ import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
|
||||
import com.android.internal.inputmethod.IInputContentUriToken;
|
||||
import com.android.internal.inputmethod.IInputMethod;
|
||||
import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
|
||||
import com.android.internal.inputmethod.IRemoteInputConnection;
|
||||
import com.android.internal.inputmethod.ImeTracing;
|
||||
import com.android.internal.inputmethod.InlineSuggestionsRequestInfo;
|
||||
@@ -699,23 +698,21 @@ public class InputMethodService extends AbstractInputMethodService {
|
||||
*/
|
||||
@MainThread
|
||||
@Override
|
||||
public final void initializeInternal(@NonNull IBinder token,
|
||||
IInputMethodPrivilegedOperations privilegedOperations, int configChanges,
|
||||
boolean stylusHwSupported, @InputMethodNavButtonFlags int navButtonFlags) {
|
||||
public final void initializeInternal(@NonNull IInputMethod.InitParams params) {
|
||||
if (mDestroyed) {
|
||||
Log.i(TAG, "The InputMethodService has already onDestroyed()."
|
||||
+ "Ignore the initialization.");
|
||||
return;
|
||||
}
|
||||
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMS.initializeInternal");
|
||||
mConfigTracker.onInitialize(configChanges);
|
||||
mPrivOps.set(privilegedOperations);
|
||||
InputMethodPrivilegedOperationsRegistry.put(token, mPrivOps);
|
||||
if (stylusHwSupported) {
|
||||
mConfigTracker.onInitialize(params.configChanges);
|
||||
mPrivOps.set(params.privilegedOperations);
|
||||
InputMethodPrivilegedOperationsRegistry.put(params.token, mPrivOps);
|
||||
if (params.stylusHandWritingSupported) {
|
||||
mInkWindow = new InkWindow(mWindow.getContext());
|
||||
}
|
||||
mNavigationBarController.onNavButtonFlagsChanged(navButtonFlags);
|
||||
attachToken(token);
|
||||
mNavigationBarController.onNavButtonFlagsChanged(params.navigationBarFlags);
|
||||
attachToken(params.token);
|
||||
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ import android.view.View;
|
||||
|
||||
import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
|
||||
import com.android.internal.inputmethod.IInputMethod;
|
||||
import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
|
||||
import com.android.internal.inputmethod.InlineSuggestionsRequestInfo;
|
||||
import com.android.internal.inputmethod.InputMethodNavButtonFlags;
|
||||
|
||||
@@ -100,21 +99,12 @@ public interface InputMethod {
|
||||
* unique token for the session it has with the system service as well as
|
||||
* IPC endpoint to do some other privileged operations.
|
||||
*
|
||||
* @param token special token for the system to identify
|
||||
* {@link InputMethodService}
|
||||
* @param privilegedOperations IPC endpoint to do some privileged
|
||||
* operations that are allowed only to the
|
||||
* current IME.
|
||||
* @param configChanges {@link InputMethodInfo#getConfigChanges()} declared by IME.
|
||||
* @param stylusHwSupported {@link InputMethodInfo#supportsStylusHandwriting()} declared by IME.
|
||||
* @param navButtonFlags The initial state of {@link InputMethodNavButtonFlags}.
|
||||
* @param params Contains parameters to initialize the {@link InputMethodService}.
|
||||
* @hide
|
||||
*/
|
||||
@MainThread
|
||||
default void initializeInternal(IBinder token,
|
||||
IInputMethodPrivilegedOperations privilegedOperations, int configChanges,
|
||||
boolean stylusHwSupported, @InputMethodNavButtonFlags int navButtonFlags) {
|
||||
attachToken(token);
|
||||
default void initializeInternal(@NonNull IInputMethod.InitParams params) {
|
||||
attachToken(params.token);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,8 +35,16 @@ import com.android.internal.inputmethod.InlineSuggestionsRequestInfo;
|
||||
* Top-level interface to an input method component (implemented in a Service).
|
||||
*/
|
||||
oneway interface IInputMethod {
|
||||
void initializeInternal(IBinder token, IInputMethodPrivilegedOperations privOps,
|
||||
int configChanges, boolean stylusHwSupported, int navigationBarFlags);
|
||||
|
||||
parcelable InitParams {
|
||||
IBinder token;
|
||||
IInputMethodPrivilegedOperations privilegedOperations;
|
||||
int configChanges;
|
||||
boolean stylusHandWritingSupported;
|
||||
int navigationBarFlags;
|
||||
}
|
||||
|
||||
void initializeInternal(in InitParams params);
|
||||
|
||||
void onCreateInlineSuggestionsRequest(in InlineSuggestionsRequestInfo requestInfo,
|
||||
in IInlineSuggestionsRequestCallback cb);
|
||||
|
||||
@@ -108,12 +108,17 @@ final class IInputMethodInvoker {
|
||||
}
|
||||
|
||||
@AnyThread
|
||||
void initializeInternal(IBinder token, IInputMethodPrivilegedOperations privOps,
|
||||
int configChanges, boolean stylusHwSupported,
|
||||
@InputMethodNavButtonFlags int navButtonFlags) {
|
||||
void initializeInternal(IBinder token, IInputMethodPrivilegedOperations privilegedOperations,
|
||||
int configChanges, boolean stylusHandWritingSupported,
|
||||
@InputMethodNavButtonFlags int navigationBarFlags) {
|
||||
final IInputMethod.InitParams params = new IInputMethod.InitParams();
|
||||
params.token = token;
|
||||
params.privilegedOperations = privilegedOperations;
|
||||
params.configChanges = configChanges;
|
||||
params.stylusHandWritingSupported = stylusHandWritingSupported;
|
||||
params.navigationBarFlags = navigationBarFlags;
|
||||
try {
|
||||
mTarget.initializeInternal(token, privOps, configChanges, stylusHwSupported,
|
||||
navButtonFlags);
|
||||
mTarget.initializeInternal(params);
|
||||
} catch (RemoteException e) {
|
||||
logRemoteException(e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user