Skip to content
Permalink
Browse files

Unhide InputMethodService#requestShowSelf()

This is a follow up CL to a recent CL [1], which aimed to move several
APIs only for InputMethodService from InputMethodManager to
InputMethodService.

This CL removes InputMethodService#hideSoftInputFromInputMethod(),
which is exactly the same as InputMethodService#requestHideSelf() that
is already available as a public API for IME developers.

This CL also virtually renames
InputMethodService#showSoftInputFromInputMethod() to
InputMethodService#requestShowSelf(), which has existed as a
private method but not been exposed to IME developers yet.

 [1]: I3163f3cbe557c85103ca287bee0874a3b4194032
      d8d03a8

Bug: 70282603
Test: atest CtsInputMethodTestCases
Change-Id: If6a786c5774805d041ea9672ef2721e4a38df7fc
  • Loading branch information...
yukawa committed Jan 16, 2018
1 parent 2b63434 commit fbc2f7acd581eca7180a3d916936fb4e758279e1
@@ -20882,7 +20882,6 @@ package android.inputmethodservice {
method public int getMaxWidth();
method public java.lang.CharSequence getTextForImeAction(int);
method public android.app.Dialog getWindow();
method public void hideSoftInputFromInputMethod(int);
method public void hideStatusIcon();
method public void hideWindow();
method public boolean isExtractViewShown();
@@ -20930,6 +20929,7 @@ package android.inputmethodservice {
method public void onWindowHidden();
method public void onWindowShown();
method public void requestHideSelf(int);
method public void requestShowSelf(int);
method public boolean sendDefaultEditorAction(boolean);
method public void sendDownUpKeyEvents(int);
method public void sendKeyChar(char);
@@ -20942,7 +20942,6 @@ package android.inputmethodservice {
method public void setInputMethodAndSubtype(java.lang.String, android.view.inputmethod.InputMethodSubtype);
method public void setInputView(android.view.View);
method public boolean shouldOfferSwitchingToNextInputMethod();
method public void showSoftInputFromInputMethod(int);
method public void showStatusIcon(int);
method public void showWindow(boolean);
method public void switchInputMethod(java.lang.String);
@@ -1088,33 +1088,6 @@ public void setInputMethodAndSubtype(String id, InputMethodSubtype subtype) {
mImm.setInputMethodAndSubtypeInternal(mToken, id, subtype);
}

/**
* Close/hide the input method's soft input area, so the user no longer
* sees it or can interact with it. This can only be called
* from the currently active input method, as validated by the given token.
*
* @param flags Provides additional operating flags. Currently may be
* 0 or have the {@link InputMethodManager#HIDE_IMPLICIT_ONLY},
* {@link InputMethodManager#HIDE_NOT_ALWAYS} bit set.
*/
public void hideSoftInputFromInputMethod(int flags) {
mImm.hideSoftInputFromInputMethodInternal(mToken, flags);
}

/**
* Show the input method's soft input area, so the user
* sees the input method window and can interact with it.
* This can only be called from the currently active input method,
* as validated by the given token.
*
* @param flags Provides additional operating flags. Currently may be
* 0 or have the {@link InputMethodManager#SHOW_IMPLICIT} or
* {@link InputMethodManager#SHOW_FORCED} bit set.
*/
public void showSoftInputFromInputMethod(int flags) {
mImm.showSoftInputFromInputMethodInternal(mToken, flags);
}

/**
* Force switch to the last used input method and subtype. If the last input method didn't have
* any subtypes, the framework will simply switch to the last input method with no subtype
@@ -1745,7 +1718,7 @@ public void showWindow(boolean showInput) {
// Rethrow the exception to preserve the existing behavior. Some IMEs may have directly
// called this method and relied on this exception for some clean-up tasks.
// TODO: Give developers a clear guideline of whether it's OK to call this method or
// InputMethodManager#showSoftInputFromInputMethod() should always be used instead.
// InputMethodService#requestShowSelf(int) should always be used instead.
throw e;
} finally {
// TODO: Is it OK to set true when we get BadTokenException?
@@ -2067,27 +2040,30 @@ public void onUpdateCursorAnchorInfo(CursorAnchorInfo cursorAnchorInfo) {

/**
* Close this input method's soft input area, removing it from the display.
* The input method will continue running, but the user can no longer use
* it to generate input by touching the screen.
* @param flags Provides additional operating flags. Currently may be
* 0 or have the {@link InputMethodManager#HIDE_IMPLICIT_ONLY
* InputMethodManager.HIDE_IMPLICIT_ONLY} bit set.
*
* The input method will continue running, but the user can no longer use it to generate input
* by touching the screen.
*
* @see InputMethodManager#HIDE_IMPLICIT_ONLY
* @see InputMethodManager#HIDE_NOT_ALWAYS
* @param flags Provides additional operating flags.
*/
public void requestHideSelf(int flags) {
mImm.hideSoftInputFromInputMethod(mToken, flags);
mImm.hideSoftInputFromInputMethodInternal(mToken, flags);
}

/**
* Show the input method. This is a call back to the
* IMF to handle showing the input method.
* @param flags Provides additional operating flags. Currently may be
* 0 or have the {@link InputMethodManager#SHOW_FORCED
* InputMethodManager.} bit set.
* Show the input method's soft input area, so the user sees the input method window and can
* interact with it.
*
* @see InputMethodManager#SHOW_IMPLICIT
* @see InputMethodManager#SHOW_FORCED
* @param flags Provides additional operating flags.
*/
private void requestShowSelf(int flags) {
mImm.showSoftInputFromInputMethod(mToken, flags);
public void requestShowSelf(int flags) {
mImm.showSoftInputFromInputMethodInternal(mToken, flags);
}

private boolean handleBack(boolean doIt) {
if (mShowInputRequested) {
// If the soft input area is shown, back closes it and we
@@ -1079,15 +1079,15 @@ public void showSoftInputUnchecked(int flags, ResultReceiver resultReceiver) {
}

/**
* Flag for {@link #hideSoftInputFromWindow} to indicate that the soft
* input window should only be hidden if it was not explicitly shown
* Flag for {@link #hideSoftInputFromWindow} and {@link InputMethodService#requestHideSelf(int)}
* to indicate that the soft input window should only be hidden if it was not explicitly shown
* by the user.
*/
public static final int HIDE_IMPLICIT_ONLY = 0x0001;

/**
* Flag for {@link #hideSoftInputFromWindow} to indicate that the soft
* input window should normally be hidden, unless it was originally
* Flag for {@link #hideSoftInputFromWindow} and {@link InputMethodService#requestShowSelf(int)}
* to indicate that the soft input window should normally be hidden, unless it was originally
* shown with {@link #SHOW_FORCED}.
*/
public static final int HIDE_NOT_ALWAYS = 0x0002;
@@ -1871,9 +1871,9 @@ public void setInputMethodAndSubtypeInternal(
* @param flags Provides additional operating flags. Currently may be
* 0 or have the {@link #HIDE_IMPLICIT_ONLY},
* {@link #HIDE_NOT_ALWAYS} bit set.
* @deprecated Use {@link InputMethodService#hideSoftInputFromInputMethod(int)}
* instead. This method was intended for IME developers who should be accessing APIs through
* the service. APIs in this class are intended for app developers interacting with the IME.
* @deprecated Use {@link InputMethodService#requestHideSelf(int)} instead. This method was
* intended for IME developers who should be accessing APIs through the service. APIs in this
* class are intended for app developers interacting with the IME.
*/
@Deprecated
public void hideSoftInputFromInputMethod(IBinder token, int flags) {
@@ -1903,9 +1903,9 @@ public void hideSoftInputFromInputMethodInternal(IBinder token, int flags) {
* @param flags Provides additional operating flags. Currently may be
* 0 or have the {@link #SHOW_IMPLICIT} or
* {@link #SHOW_FORCED} bit set.
* @deprecated Use {@link InputMethodService#showSoftInputFromInputMethod(int)}
* instead. This method was intended for IME developers who should be accessing APIs through
* the service. APIs in this class are intended for app developers interacting with the IME.
* @deprecated Use {@link InputMethodService#requestShowSelf(int)} instead. This method was
* intended for IME developers who should be accessing APIs through the service. APIs in this
* class are intended for app developers interacting with the IME.
*/
@Deprecated
public void showSoftInputFromInputMethod(IBinder token, int flags) {

0 comments on commit fbc2f7a

Please sign in to comment.
You can’t perform that action at this time.