diff options
| author | Wilson Wu <wilsonwu@google.com> | 2020-11-12 17:28:58 +0800 |
|---|---|---|
| committer | Wilson Wu <wilsonwu@google.com> | 2021-06-16 18:10:34 +0800 |
| commit | 34091a5066f3a4f2d90b3f49f3e0ab63972d45bd (patch) | |
| tree | f1c621194df8a854ec5a2ae4173e069f9ac1ae46 /core/java/android/inputmethodservice/MultiClientInputMethodServiceDelegate.java | |
| parent | b6766392b83df270c642ac6f3332e6ea0ecd8856 (diff) | |
Remove multi-client IME
Design doc: go/multi-session-ime-removal
We no longer require this mechanism to support
multi-clients IME, remove it completely.
Bug: 173341412
Test: atest CtsInputMethodTestCases
Change-Id: I0bdc8fe3d32ccabc8ea7996fc689543c3f99331a
Diffstat (limited to 'core/java/android/inputmethodservice/MultiClientInputMethodServiceDelegate.java')
| -rw-r--r-- | core/java/android/inputmethodservice/MultiClientInputMethodServiceDelegate.java | 378 |
1 files changed, 0 insertions, 378 deletions
diff --git a/core/java/android/inputmethodservice/MultiClientInputMethodServiceDelegate.java b/core/java/android/inputmethodservice/MultiClientInputMethodServiceDelegate.java deleted file mode 100644 index 0a2316508f09..000000000000 --- a/core/java/android/inputmethodservice/MultiClientInputMethodServiceDelegate.java +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.inputmethodservice; - -import android.annotation.Nullable; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.IBinder; -import android.os.Looper; -import android.os.ResultReceiver; -import android.view.KeyEvent; -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager.LayoutParams.SoftInputModeFlags; -import android.view.inputmethod.CompletionInfo; -import android.view.inputmethod.CursorAnchorInfo; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.InputConnection; - -import com.android.internal.inputmethod.StartInputFlags; - -/** - * Defines all the public APIs and interfaces that are necessary to implement multi-client IMEs. - * - * <p>Actual implementation is further delegated to - * {@link MultiClientInputMethodServiceDelegateImpl}.</p> - * - * @hide - */ -public final class MultiClientInputMethodServiceDelegate { - // @SdkConstant(SdkConstantType.SERVICE_ACTION) - public static final String SERVICE_INTERFACE = - "android.inputmethodservice.MultiClientInputMethodService"; - - /** - * Special value that is guaranteed to be not used for IME client ID. - */ - public static final int INVALID_CLIENT_ID = -1; - - /** - * Special value that is guaranteed to be not used for window handle. - */ - public static final int INVALID_WINDOW_HANDLE = -1; - - private final MultiClientInputMethodServiceDelegateImpl mImpl; - - /** - * Top-level callbacks for this {@link MultiClientInputMethodServiceDelegate}. - */ - public interface ServiceCallback { - /** - * Called when this {@link MultiClientInputMethodServiceDelegate} is recognized by the - * system and privileged operations like {@link #createInputMethodWindowToken(int)} are - * ready to be called. - */ - void initialized(); - - /** - * Called when a new IME client is recognized by the system. - * - * <p>Once the IME receives this callback, the IME can start interacting with the IME client - * by calling {@link #acceptClient(int, ClientCallback, KeyEvent.DispatcherState, Looper)}. - * </p> - * - * @param clientId ID of the client. - * @param uid UID of the IME client. - * @param pid PID of the IME client. - * @param selfReportedDisplayId display ID reported from the IME client. Since the system - * does not validate this display ID, and at any time the IME client can lose the - * access to this display ID, the IME needs to call - * {@link #isUidAllowedOnDisplay(int, int)} to check whether the IME client still - * has access to this display or not. - */ - void addClient(int clientId, int uid, int pid, int selfReportedDisplayId); - - /** - * Called when an IME client is being destroyed. - * - * @param clientId ID of the client. - */ - void removeClient(int clientId); - } - - /** - * Per-client callbacks. - */ - public interface ClientCallback { - /** - * Called when the associated IME client called {@link - * android.view.inputmethod.InputMethodManager#sendAppPrivateCommand(View, String, Bundle)}. - * - * @param action Name of the command to be performed. - * @param data Any data to include with the command. - * @see android.inputmethodservice.InputMethodService#onAppPrivateCommand(String, Bundle) - */ - void onAppPrivateCommand(String action, Bundle data); - - /** - * Called when the associated IME client called {@link - * android.view.inputmethod.InputMethodManager#displayCompletions(View, CompletionInfo[])}. - * - * @param completions Completion information provided from the IME client. - * @see android.inputmethodservice.InputMethodService#onDisplayCompletions(CompletionInfo[]) - */ - void onDisplayCompletions(CompletionInfo[] completions); - - /** - * Called when this callback session is closed. No further callback should not happen on - * this callback object. - */ - void onFinishSession(); - - /** - * Called when the associated IME client called {@link - * android.view.inputmethod.InputMethodManager#hideSoftInputFromWindow(IBinder, int)} or - * {@link android.view.inputmethod.InputMethodManager#hideSoftInputFromWindow(IBinder, int, - * ResultReceiver)}. - * - * @param flags The flag passed by the client. - * @param resultReceiver The {@link ResultReceiver} passed by the client. - * @see android.inputmethodservice.InputMethodService#onWindowHidden() - */ - void onHideSoftInput(int flags, ResultReceiver resultReceiver); - - /** - * Called when the associated IME client called {@link - * android.view.inputmethod.InputMethodManager#showSoftInput(View, int)} or {@link - * android.view.inputmethod.InputMethodManager#showSoftInput(View, int, ResultReceiver)}. - * - * @param flags The flag passed by the client. - * @param resultReceiver The {@link ResultReceiver} passed by the client. - * @see android.inputmethodservice.InputMethodService#onWindowShown() - */ - void onShowSoftInput(int flags, ResultReceiver resultReceiver); - - /** - * A generic callback when {@link InputConnection} is being established. - * - * @param inputConnection The {@link InputConnection} to be established. - * @param editorInfo The {@link EditorInfo} reported from the IME client. - * @param startInputFlags Any combinations of {@link StartInputFlags}. - * @param softInputMode SoftWindowMode specified to this window. - * @param targetWindowHandle A unique Window token. - * @see android.inputmethodservice.InputMethodService#onStartInput(EditorInfo, boolean) - */ - void onStartInputOrWindowGainedFocus( - @Nullable InputConnection inputConnection, - @Nullable EditorInfo editorInfo, - @StartInputFlags int startInputFlags, - @SoftInputModeFlags int softInputMode, - int targetWindowHandle); - - /** - * Called when the associated IME client called {@link - * android.view.inputmethod.InputMethodManager#updateCursorAnchorInfo(View, - * CursorAnchorInfo)}. - * - * @param info The {@link CursorAnchorInfo} passed by the client. - * @see android.inputmethodservice.InputMethodService#onUpdateCursorAnchorInfo( - * CursorAnchorInfo) - */ - void onUpdateCursorAnchorInfo(CursorAnchorInfo info); - - /** - * Called when the associated IME client called {@link - * android.view.inputmethod.InputMethodManager#updateSelection(View, int, int, int, int)}. - * - * @param oldSelStart The previous selection start index. - * @param oldSelEnd The previous selection end index. - * @param newSelStart The new selection start index. - * @param newSelEnd The new selection end index. - * @param candidatesStart The new candidate start index. - * @param candidatesEnd The new candidate end index. - * @see android.inputmethodservice.InputMethodService#onUpdateSelection(int, int, int, int, - * int, int) - */ - void onUpdateSelection(int oldSelStart, int oldSelEnd, int newSelStart, int newSelEnd, - int candidatesStart, int candidatesEnd); - - /** - * Called to give a chance for the IME to intercept generic motion events before they are - * processed by the application. - * - * @param event {@link MotionEvent} that is about to be handled by the IME client. - * @return {@code true} to tell the IME client that the IME handled this event. - * @see android.inputmethodservice.InputMethodService#onGenericMotionEvent(MotionEvent) - */ - boolean onGenericMotionEvent(MotionEvent event); - - /** - * Called to give a chance for the IME to intercept key down events before they are - * processed by the application. - * - * @param keyCode The value in {@link KeyEvent#getKeyCode()}. - * @param event {@link KeyEvent} for this key down event. - * @return {@code true} to tell the IME client that the IME handled this event. - * @see android.inputmethodservice.InputMethodService#onKeyDown(int, KeyEvent) - */ - boolean onKeyDown(int keyCode, KeyEvent event); - - /** - * Called to give a chance for the IME to intercept key long press events before they are - * processed by the application. - * - * @param keyCode The value in {@link KeyEvent#getKeyCode()}. - * @param event {@link KeyEvent} for this key long press event. - * @return {@code true} to tell the IME client that the IME handled this event. - * @see android.inputmethodservice.InputMethodService#onKeyLongPress(int, KeyEvent) - */ - boolean onKeyLongPress(int keyCode, KeyEvent event); - - /** - * Called to give a chance for the IME to intercept key multiple events before they are - * processed by the application. - * - * @param keyCode The value in {@link KeyEvent#getKeyCode()}. - * @param event {@link KeyEvent} for this key multiple event. - * @return {@code true} to tell the IME client that the IME handled this event. - * @see android.inputmethodservice.InputMethodService#onKeyMultiple(int, int, KeyEvent) - */ - boolean onKeyMultiple(int keyCode, KeyEvent event); - - /** - * Called to give a chance for the IME to intercept key up events before they are processed - * by the application. - * - * @param keyCode The value in {@link KeyEvent#getKeyCode()}. - * @param event {@link KeyEvent} for this key up event. - * @return {@code true} to tell the IME client that the IME handled this event. - * @see android.inputmethodservice.InputMethodService#onKeyUp(int, KeyEvent) - */ - boolean onKeyUp(int keyCode, KeyEvent event); - - /** - * Called to give a chance for the IME to intercept generic motion events before they are - * processed by the application. - * - * @param event {@link MotionEvent} that is about to be handled by the IME client. - * @return {@code true} to tell the IME client that the IME handled this event. - * @see android.inputmethodservice.InputMethodService#onTrackballEvent(MotionEvent) - */ - boolean onTrackballEvent(MotionEvent event); - } - - private MultiClientInputMethodServiceDelegate(Context context, - ServiceCallback serviceCallback) { - mImpl = new MultiClientInputMethodServiceDelegateImpl(context, serviceCallback); - } - - /** - * Must be called by the multi-client IME implementer to create - * {@link MultiClientInputMethodServiceDelegate}. - * - * @param context {@link Context} with which the delegate should interact with the system. - * @param serviceCallback {@link ServiceCallback} to receive service-level callbacks. - * @return A new instance of {@link MultiClientInputMethodServiceDelegate}. - */ - public static MultiClientInputMethodServiceDelegate create(Context context, - ServiceCallback serviceCallback) { - return new MultiClientInputMethodServiceDelegate(context, serviceCallback); - } - - /** - * Must be called by the multi-client IME service when {@link android.app.Service#onDestroy()} - * is called. - */ - public void onDestroy() { - mImpl.onDestroy(); - } - - /** - * Must be called by the multi-client IME service when - * {@link android.app.Service#onBind(Intent)} is called. - * - * @param intent {@link Intent} passed to {@link android.app.Service#onBind(Intent)}. - * @return An {@link IBinder} object that needs to be returned from - * {@link android.app.Service#onBind(Intent)}. - */ - public IBinder onBind(Intent intent) { - return mImpl.onBind(intent); - } - - /** - * Must be called by the multi-client IME service when - * {@link android.app.Service#onUnbind(Intent)} is called. - * - * @param intent {@link Intent} passed to {@link android.app.Service#onUnbind(Intent)}. - * @return A boolean value that needs to be returned from - * {@link android.app.Service#onUnbind(Intent)}. - */ - public boolean onUnbind(Intent intent) { - return mImpl.onUnbind(intent); - } - - /** - * Must be called by the multi-client IME service to create a special window token for IME - * window. - * - * <p>This method is available only after {@link ServiceCallback#initialized()}.</p> - * - * @param displayId display ID on which the IME window will be shown. - * @return Window token to be specified to the IME window/ - */ - public IBinder createInputMethodWindowToken(int displayId) { - return mImpl.createInputMethodWindowToken(displayId); - } - - /** - * Must be called by the multi-client IME service to notify the system when the IME is ready to - * accept callback events from the specified IME client. - * - * @param clientId The IME client ID specified in - * {@link ServiceCallback#addClient(int, int, int, int)}. - * @param clientCallback The {@link ClientCallback} to receive callback events from this IME - * client. - * @param dispatcherState {@link KeyEvent.DispatcherState} to be used when receiving key-related - * callbacks in {@link ClientCallback}. - * @param looper {@link Looper} on which {@link ClientCallback} will be called back. - */ - public void acceptClient(int clientId, ClientCallback clientCallback, - KeyEvent.DispatcherState dispatcherState, Looper looper) { - mImpl.acceptClient(clientId, clientCallback, dispatcherState, looper); - } - - /** - * Must be called by the multi-client IME service to notify the system when the IME is ready to - * interact with the window in the IME client. - * - * @param clientId The IME client ID specified in - * {@link ServiceCallback#addClient(int, int, int, int)}. - * @param targetWindowHandle The window handle specified in - * {@link ClientCallback#onStartInputOrWindowGainedFocus}. - * @param imeWindowToken The IME window token returned from - * {@link #createInputMethodWindowToken(int)}. - */ - public void reportImeWindowTarget(int clientId, int targetWindowHandle, - IBinder imeWindowToken) { - mImpl.reportImeWindowTarget(clientId, targetWindowHandle, imeWindowToken); - } - - /** - * Can be called by the multi-client IME service to check if the given {@code uid} is allowed - * to access to {@code displayId}. - * - * @param displayId Display ID to be queried. - * @param uid UID to be queried. - * @return {@code true} if {@code uid} is allowed to access to {@code displayId}. - */ - public boolean isUidAllowedOnDisplay(int displayId, int uid) { - return mImpl.isUidAllowedOnDisplay(displayId, uid); - } - - /** - * Can be called by MSIME to activate/deactivate a client when it is gaining/losing focus - * respectively. - * - * @param clientId client ID to activate/deactivate. - * @param active {@code true} to activate a client. - */ - public void setActive(int clientId, boolean active) { - mImpl.setActive(clientId, active); - } -} |
