Merge "Dump more info for View when IMM#DEBUG is true." into nyc-dev

This commit is contained in:
Yohei Yukawa
2016-03-28 18:20:55 +00:00
committed by Android (Google) Code Review

View File

@@ -827,7 +827,7 @@ public final class InputMethodManager {
void finishInputLocked() { void finishInputLocked() {
mNextServedView = null; mNextServedView = null;
if (mServedView != null) { if (mServedView != null) {
if (DEBUG) Log.v(TAG, "FINISH INPUT: " + mServedView); if (DEBUG) Log.v(TAG, "FINISH INPUT: mServedView=" + dumpViewInfo(mServedView));
if (mCurrentTextBoxAttribute != null) { if (mCurrentTextBoxAttribute != null) {
try { try {
mService.finishInput(mClient); mService.finishInput(mClient);
@@ -1136,10 +1136,10 @@ public final class InputMethodManager {
final View view; final View view;
synchronized (mH) { synchronized (mH) {
view = mServedView; view = mServedView;
// Make sure we have a window token for the served view. // Make sure we have a window token for the served view.
if (DEBUG) { if (DEBUG) {
Log.v(TAG, "Starting input: view=" + view + Log.v(TAG, "Starting input: view=" + dumpViewInfo(view) +
" reason=" + InputMethodClient.getStartInputReason(startInputReason)); " reason=" + InputMethodClient.getStartInputReason(startInputReason));
} }
if (view == null) { if (view == null) {
@@ -1147,7 +1147,7 @@ public final class InputMethodManager {
return false; return false;
} }
} }
// Now we need to get an input connection from the served view. // Now we need to get an input connection from the served view.
// This is complicated in a couple ways: we can't be holding our lock // This is complicated in a couple ways: we can't be holding our lock
// when calling out to the view, and we need to make sure we call into // when calling out to the view, and we need to make sure we call into
@@ -1192,9 +1192,10 @@ public final class InputMethodManager {
// changed. // changed.
if (mServedView != view || !mServedConnecting) { if (mServedView != view || !mServedConnecting) {
// Something else happened, so abort. // Something else happened, so abort.
if (DEBUG) Log.v(TAG, if (DEBUG) Log.v(TAG,
"Starting input: finished by someone else (view=" "Starting input: finished by someone else. view=" + dumpViewInfo(view)
+ mServedView + " conn=" + mServedConnecting + ")"); + " mServedView=" + dumpViewInfo(mServedView)
+ " mServedConnecting=" + mServedConnecting);
return false; return false;
} }
@@ -1238,7 +1239,7 @@ public final class InputMethodManager {
mServedInputConnectionWrapper = servedContext; mServedInputConnectionWrapper = servedContext;
try { try {
if (DEBUG) Log.v(TAG, "START INPUT: " + view + " ic=" if (DEBUG) Log.v(TAG, "START INPUT: view=" + dumpViewInfo(view) + " ic="
+ ic + " tba=" + tba + " controlFlags=#" + ic + " tba=" + tba + " controlFlags=#"
+ Integer.toHexString(controlFlags)); + Integer.toHexString(controlFlags));
final InputBindResult res = mService.startInputOrWindowGainedFocus( final InputBindResult res = mService.startInputOrWindowGainedFocus(
@@ -1304,7 +1305,7 @@ public final class InputMethodManager {
} }
void focusInLocked(View view) { void focusInLocked(View view) {
if (DEBUG) Log.v(TAG, "focusIn: " + view); if (DEBUG) Log.v(TAG, "focusIn: " + dumpViewInfo(view));
if (mCurRootView != view.getRootView()) { if (mCurRootView != view.getRootView()) {
// This is a request from a window that isn't in the window with // This is a request from a window that isn't in the window with
@@ -1323,9 +1324,8 @@ public final class InputMethodManager {
*/ */
public void focusOut(View view) { public void focusOut(View view) {
synchronized (mH) { synchronized (mH) {
if (DEBUG) Log.v(TAG, "focusOut: " + view if (DEBUG) Log.v(TAG, "focusOut: view=" + dumpViewInfo(view)
+ " mServedView=" + mServedView + " mServedView=" + dumpViewInfo(mServedView));
+ " winFocus=" + view.hasWindowFocus());
if (mServedView != view) { if (mServedView != view) {
// The following code would auto-hide the IME if we end up // The following code would auto-hide the IME if we end up
// with no more views with focus. This can happen, however, // with no more views with focus. This can happen, however,
@@ -1346,9 +1346,8 @@ public final class InputMethodManager {
*/ */
public void onViewDetachedFromWindow(View view) { public void onViewDetachedFromWindow(View view) {
synchronized (mH) { synchronized (mH) {
if (DEBUG) Log.v(TAG, "onViewDetachedFromWindow: " + view if (DEBUG) Log.v(TAG, "onViewDetachedFromWindow: view=" + dumpViewInfo(view)
+ " mServedView=" + mServedView + " mServedView=" + dumpViewInfo(mServedView));
+ " hasWindowFocus=" + view.hasWindowFocus());
if (mServedView == view && view.hasWindowFocus()) { if (mServedView == view && view.hasWindowFocus()) {
mNextServedView = null; mNextServedView = null;
scheduleCheckFocusLocked(view); scheduleCheckFocusLocked(view);
@@ -2306,4 +2305,16 @@ public final class InputMethodManager {
} }
} }
} }
private static String dumpViewInfo(@Nullable final View view) {
if (view == null) {
return "null";
}
final StringBuilder sb = new StringBuilder();
sb.append(view);
sb.append(",focus=" + view.hasFocus());
sb.append(",windowFocus=" + view.hasWindowFocus());
sb.append(",window=" + view.getWindowToken());
return sb.toString();
}
} }