Merge "Track the last softInputMode in IMMS"

This commit is contained in:
TreeHugger Robot
2017-02-13 03:31:42 +00:00
committed by Android (Google) Code Review
3 changed files with 76 additions and 4 deletions

View File

@@ -1495,7 +1495,7 @@ public final class InputMethodManager {
boolean forceNewFocus = false;
synchronized (mH) {
if (DEBUG) Log.v(TAG, "onWindowFocus: " + focusedView
+ " softInputMode=" + softInputMode
+ " softInputMode=" + InputMethodClient.softInputModeToString(softInputMode)
+ " first=" + first + " flags=#"
+ Integer.toHexString(windowFlags));
if (mHasBeenInactive) {

View File

@@ -17,6 +17,7 @@
package com.android.internal.view;
import android.annotation.IntDef;
import android.view.WindowManager.LayoutParams;
import java.lang.annotation.Retention;
@@ -103,4 +104,65 @@ public final class InputMethodClient {
return "Unknown=" + reason;
}
}
public static String softInputModeToString(final int softInputMode) {
final StringBuilder sb = new StringBuilder();
final int state = softInputMode & LayoutParams.SOFT_INPUT_MASK_STATE;
final int adjust = softInputMode & LayoutParams.SOFT_INPUT_MASK_ADJUST;
final boolean isForwardNav =
(softInputMode & LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) != 0;
switch (state) {
case LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED:
sb.append("STATE_UNSPECIFIED");
break;
case LayoutParams.SOFT_INPUT_STATE_UNCHANGED:
sb.append("STATE_UNCHANGED");
break;
case LayoutParams.SOFT_INPUT_STATE_HIDDEN:
sb.append("STATE_HIDDEN");
break;
case LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN:
sb.append("STATE_ALWAYS_HIDDEN");
break;
case LayoutParams.SOFT_INPUT_STATE_VISIBLE:
sb.append("STATE_VISIBLE");
break;
case LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE:
sb.append("STATE_ALWAYS_VISIBLE");
break;
default:
sb.append("STATE_UNKNOWN(");
sb.append(state);
sb.append(")");
break;
}
switch (adjust) {
case LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED:
sb.append("|ADJUST_UNSPECIFIED");
break;
case LayoutParams.SOFT_INPUT_ADJUST_RESIZE:
sb.append("|ADJUST_RESIZE");
break;
case LayoutParams.SOFT_INPUT_ADJUST_PAN:
sb.append("|ADJUST_PAN");
break;
case LayoutParams.SOFT_INPUT_ADJUST_NOTHING:
sb.append("|ADJUST_NOTHING");
break;
default:
sb.append("|ADJUST_UNKNOWN(");
sb.append(adjust);
sb.append(")");
break;
}
if (isForwardNav) {
// This is a special bit that is set by the system only during the window navigation.
sb.append("|IS_FORWARD_NAVIGATION");
}
return sb.toString();
}
}

View File

@@ -346,6 +346,13 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
*/
IBinder mCurFocusedWindow;
/**
* {@link WindowManager.LayoutParams#softInputMode} of {@link #mCurFocusedWindow}.
*
* @see #mCurFocusedWindow
*/
int mCurFocusedWindowSoftInputMode;
/**
* The client by which {@link #mCurFocusedWindow} was reported. Used only for debugging.
*/
@@ -2281,7 +2288,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
+ InputConnectionInspector.getMissingMethodFlagsAsString(missingMethods)
+ " attribute=" + attribute
+ " controlFlags=#" + Integer.toHexString(controlFlags)
+ " softInputMode=#" + Integer.toHexString(softInputMode)
+ " softInputMode=" + InputMethodClient.softInputModeToString(softInputMode)
+ " windowFlags=#" + Integer.toHexString(windowFlags));
ClientState cs = mClients.get(client.asBinder());
@@ -2326,6 +2333,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
return null;
}
mCurFocusedWindow = windowToken;
mCurFocusedWindowSoftInputMode = softInputMode;
mCurFocusedWindowClient = cs;
// Should we auto-show the IME even if the caller has not
@@ -4069,9 +4077,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
p.println(" mCurMethodId=" + mCurMethodId);
client = mCurClient;
p.println(" mCurClient=" + client + " mCurSeq=" + mCurSeq);
p.println(" mCurFocusedWindow=" + mCurFocusedWindow);
p.println(" mCurFocusedWindow=" + mCurFocusedWindow
+ " softInputMode=" +
InputMethodClient.softInputModeToString(mCurFocusedWindowSoftInputMode)
+ " client=" + mCurFocusedWindowClient);
focusedWindowClient = mCurFocusedWindowClient;
p.println(" mCurFocusedWindowClient=" + focusedWindowClient);
p.println(" mCurId=" + mCurId + " mHaveConnect=" + mHaveConnection
+ " mBoundToMethod=" + mBoundToMethod);
p.println(" mCurToken=" + mCurToken);