Loading core/java/android/inputmethodservice/InputMethodService.java +0 −43 Original line number Diff line number Diff line Loading @@ -410,14 +410,6 @@ public class InputMethodService extends AbstractInputMethodService { @GuardedBy("mLock") private boolean mNotifyUserActionSent; /** * {@code true} when the previous IME had non-empty inset at the bottom of the screen and we * have not shown our own window yet. In this situation, the previous inset continues to be * shown as an empty region until it is explicitly updated. Basically we can trigger the update * by calling 1) {@code mWindow.show()} or 2) {@link #clearInsetOfPreviousIme()}. */ boolean mShouldClearInsetOfPreviousIme; @UnsupportedAppUsage final Insets mTmpInsets = new Insets(); final int[] mTmpLocation = new int[2]; Loading Loading @@ -581,7 +573,6 @@ public class InputMethodService extends AbstractInputMethodService { mShowInputFlags = 0; mShowInputRequested = false; doHideWindow(); clearInsetOfPreviousIme(); if (resultReceiver != null) { resultReceiver.send(wasVis != isInputViewShown() ? InputMethodManager.RESULT_HIDDEN Loading @@ -601,7 +592,6 @@ public class InputMethodService extends AbstractInputMethodService { if (dispatchOnShowInputRequested(flags, false)) { showWindow(true); } clearInsetOfPreviousIme(); // If user uses hard keyboard, IME button should always be shown. setImeWindowStatus(mapToImeWindowStatus(isInputViewShown()), mBackDisposition); Loading Loading @@ -946,9 +936,6 @@ public class InputMethodService extends AbstractInputMethodService { super.onCreate(); mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); mSettingsObserver = SettingsObserver.createAndRegister(this); // If the previous IME has occupied non-empty inset in the screen, we need to decide whether // we continue to use the same size of the inset or update it mShouldClearInsetOfPreviousIme = (mImm.getInputMethodWindowVisibleHeight() > 0); // TODO(b/111364446) Need to address context lifecycle issue if need to re-create // for update resources & configuration correctly when show soft input // in non-default display. Loading Loading @@ -1882,9 +1869,6 @@ public class InputMethodService extends AbstractInputMethodService { if (DEBUG) Log.v(TAG, "showWindow: showing!"); onWindowShown(); mWindow.show(); // Put here rather than in onWindowShown() in case people forget to call // super.onWindowShown(). mShouldClearInsetOfPreviousIme = false; } } Loading Loading @@ -1933,32 +1917,6 @@ public class InputMethodService extends AbstractInputMethodService { // Intentionally empty } /** * Reset the inset occupied the previous IME when and only when * {@link #mShouldClearInsetOfPreviousIme} is {@code true}. */ private void clearInsetOfPreviousIme() { if (DEBUG) Log.v(TAG, "clearInsetOfPreviousIme() " + " mShouldClearInsetOfPreviousIme=" + mShouldClearInsetOfPreviousIme); if (!mShouldClearInsetOfPreviousIme) return; clearLastInputMethodWindowForTransition(); mShouldClearInsetOfPreviousIme = false; } /** * Tells the system that the IME decided to not show a window and the system no longer needs to * use the previous IME's inset. * * <p>Caveat: {@link android.inputmethodservice.InputMethodService#clearInsetOfPreviousIme()} * is the only expected caller of this method. Do not depend on this anywhere else.</p> * * <p>TODO: We probably need to reconsider how IME should be handled.</p> */ private void clearLastInputMethodWindowForTransition() { mPrivOps.clearLastInputMethodWindowForTransition(); } /** * Called when a new client has bound to the input method. This * may be followed by a series of {@link #onStartInput(EditorInfo, boolean)} Loading Loading @@ -2980,7 +2938,6 @@ public class InputMethodService extends AbstractInputMethodService { + " visibleTopInsets=" + mTmpInsets.visibleTopInsets + " touchableInsets=" + mTmpInsets.touchableInsets + " touchableRegion=" + mTmpInsets.touchableRegion); p.println(" mShouldClearInsetOfPreviousIme=" + mShouldClearInsetOfPreviousIme); p.println(" mSettingsObserver=" + mSettingsObserver); } } core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl +0 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import com.android.internal.inputmethod.IInputContentUriToken; interface IInputMethodPrivilegedOperations { void setImeWindowStatus(int vis, int backDisposition); void reportStartInput(in IBinder startInputToken); void clearLastInputMethodWindowForTransition(); IInputContentUriToken createInputContentUriToken(in Uri contentUri, in String packageName); void reportFullscreenMode(boolean fullscreen); void setInputMethod(String id); Loading core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java +0 −16 Original line number Diff line number Diff line Loading @@ -134,22 +134,6 @@ public final class InputMethodPrivilegedOperations { } } /** * Calls {@link IInputMethodPrivilegedOperations#clearLastInputMethodWindowForTransition()}. */ @AnyThread public void clearLastInputMethodWindowForTransition() { final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull(); if (ops == null) { return; } try { ops.clearLastInputMethodWindowForTransition(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Calls {@link IInputMethodPrivilegedOperations#createInputContentUriToken(Uri, String)}. * Loading services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +6 −29 Original line number Diff line number Diff line Loading @@ -1976,7 +1976,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub throw new IllegalArgumentException("Unknown id: " + mCurMethodId); } unbindCurrentMethodLocked(true); unbindCurrentMethodLocked(); mCurIntent = new Intent(InputMethod.SERVICE_INTERFACE); mCurIntent.setComponent(info.getComponent()); Loading Loading @@ -2020,7 +2020,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mCurMethod = IInputMethod.Stub.asInterface(service); if (mCurToken == null) { Slog.w(TAG, "Service connected without a token!"); unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); return; } if (DEBUG) Slog.v(TAG, "Initiating attach with token: " + mCurToken); Loading Loading @@ -2059,7 +2059,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub channel.dispose(); } void unbindCurrentMethodLocked(boolean savePosition) { void unbindCurrentMethodLocked() { if (mVisibleBound) { mContext.unbindService(mVisibleConnection); mVisibleBound = false; Loading @@ -2076,10 +2076,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub Slog.v(TAG, "Removing window token: " + mCurToken + " for display: " + mCurTokenDisplayId); } if ((mImeWindowVis & InputMethodService.IME_ACTIVE) != 0 && savePosition) { // The current IME is shown. Hence an IME switch (transition) is happening. mWindowManagerInternal.saveLastInputMethodWindowForTransition(); } mIWindowManager.removeWindowToken(mCurToken, mCurTokenDisplayId); } catch (RemoteException e) { } Loading @@ -2094,7 +2090,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub void resetCurrentMethodAndClient( /* @InputMethodClient.UnbindReason */ final int unbindClientReason) { mCurMethodId = null; unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); unbindCurrentClientLocked(unbindClientReason); } Loading Loading @@ -2865,7 +2861,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final int newFocusDisplayId = mWindowManagerInternal.getDisplayIdForWindow(windowToken); if (newFocusDisplayId != mCurTokenDisplayId) { unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); } } } else if (isTextEditor && doAutoShow && (softInputMode & Loading Loading @@ -3236,19 +3232,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return mWindowManagerInternal.getInputMethodWindowVisibleHeight(mCurTokenDisplayId); } @BinderThread private void clearLastInputMethodWindowForTransition(IBinder token) { if (!calledFromValidUser()) { return; } synchronized (mMethodMap) { if (!calledWithValidToken(token)) { return; } } mWindowManagerInternal.clearLastInputMethodWindowForTransition(); } @BinderThread private void notifyUserAction(@NonNull IBinder token) { if (DEBUG) { Loading Loading @@ -4957,7 +4940,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub try { synchronized (mMethodMap) { hideCurrentInputLocked(0, null); unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); // Reset the current IME resetSelectedInputMethodAndSubtypeLocked(null); // Also reset the settings of the current IME Loading Loading @@ -5028,12 +5011,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mImms.reportStartInput(mToken, startInputToken); } @BinderThread @Override public void clearLastInputMethodWindowForTransition() { mImms.clearLastInputMethodWindowForTransition(mToken); } @BinderThread @Override public IInputContentUriToken createInputContentUriToken(Uri contentUri, Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +0 −24 Original line number Diff line number Diff line Loading @@ -533,8 +533,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { GlobalActions mGlobalActions; Handler mHandler; WindowState mLastInputMethodWindow = null; WindowState mLastInputMethodTargetWindow = null; // FIXME This state is shared between the input reader and handler thread. // Technically it's broken and buggy but it has been like this for many years Loading Loading @@ -4732,12 +4730,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { } final WindowManager.LayoutParams attrs = win.getAttrs(); final boolean isDefaultDisplay = win.isDefaultDisplay(); final boolean needsToOffsetInputMethodTarget = (win == mLastInputMethodTargetWindow) && (mLastInputMethodWindow != null); if (needsToOffsetInputMethodTarget) { if (DEBUG_LAYOUT) Slog.i(TAG, "Offset ime target window by the last ime window state"); offsetInputMethodWindowLw(mLastInputMethodWindow, displayFrames); } final int type = attrs.type; final int fl = PolicyControl.getWindowFlags(win, attrs); Loading Loading @@ -5191,7 +5183,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { // can't appear underneath them. if (type == TYPE_INPUT_METHOD && win.isVisibleLw() && !win.getGivenInsetsPendingLw()) { setLastInputMethodWindowLw(null, null); offsetInputMethodWindowLw(win, displayFrames); } if (type == TYPE_VOICE_INTERACTION && win.isVisibleLw() Loading Loading @@ -7821,12 +7812,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { return mDefaultDisplayPolicy.hasNavigationBar(); } @Override public void setLastInputMethodWindowLw(WindowState ime, WindowState target) { mLastInputMethodWindow = ime; mLastInputMethodTargetWindow = target; } @Override public void setDismissImeOnBackKeyPressed(boolean newValue) { mDismissImeOnBackKeyPressed = newValue; Loading @@ -7845,7 +7830,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (statusBar != null) { statusBar.setCurrentUser(newUserId); } setLastInputMethodWindowLw(null, null); } @Override Loading Loading @@ -8020,14 +8004,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mShowingDream="); pw.print(mShowingDream); pw.print(" mDreamingLockscreen="); pw.print(mDreamingLockscreen); pw.print(" mDreamingSleepToken="); pw.println(mDreamingSleepToken); if (mLastInputMethodWindow != null) { pw.print(prefix); pw.print("mLastInputMethodWindow="); pw.println(mLastInputMethodWindow); } if (mLastInputMethodTargetWindow != null) { pw.print(prefix); pw.print("mLastInputMethodTargetWindow="); pw.println(mLastInputMethodTargetWindow); } if (mStatusBar != null) { pw.print(prefix); pw.print("mStatusBar="); pw.print(mStatusBar); pw.print(" isStatusBarKeyguard="); Loading Loading
core/java/android/inputmethodservice/InputMethodService.java +0 −43 Original line number Diff line number Diff line Loading @@ -410,14 +410,6 @@ public class InputMethodService extends AbstractInputMethodService { @GuardedBy("mLock") private boolean mNotifyUserActionSent; /** * {@code true} when the previous IME had non-empty inset at the bottom of the screen and we * have not shown our own window yet. In this situation, the previous inset continues to be * shown as an empty region until it is explicitly updated. Basically we can trigger the update * by calling 1) {@code mWindow.show()} or 2) {@link #clearInsetOfPreviousIme()}. */ boolean mShouldClearInsetOfPreviousIme; @UnsupportedAppUsage final Insets mTmpInsets = new Insets(); final int[] mTmpLocation = new int[2]; Loading Loading @@ -581,7 +573,6 @@ public class InputMethodService extends AbstractInputMethodService { mShowInputFlags = 0; mShowInputRequested = false; doHideWindow(); clearInsetOfPreviousIme(); if (resultReceiver != null) { resultReceiver.send(wasVis != isInputViewShown() ? InputMethodManager.RESULT_HIDDEN Loading @@ -601,7 +592,6 @@ public class InputMethodService extends AbstractInputMethodService { if (dispatchOnShowInputRequested(flags, false)) { showWindow(true); } clearInsetOfPreviousIme(); // If user uses hard keyboard, IME button should always be shown. setImeWindowStatus(mapToImeWindowStatus(isInputViewShown()), mBackDisposition); Loading Loading @@ -946,9 +936,6 @@ public class InputMethodService extends AbstractInputMethodService { super.onCreate(); mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); mSettingsObserver = SettingsObserver.createAndRegister(this); // If the previous IME has occupied non-empty inset in the screen, we need to decide whether // we continue to use the same size of the inset or update it mShouldClearInsetOfPreviousIme = (mImm.getInputMethodWindowVisibleHeight() > 0); // TODO(b/111364446) Need to address context lifecycle issue if need to re-create // for update resources & configuration correctly when show soft input // in non-default display. Loading Loading @@ -1882,9 +1869,6 @@ public class InputMethodService extends AbstractInputMethodService { if (DEBUG) Log.v(TAG, "showWindow: showing!"); onWindowShown(); mWindow.show(); // Put here rather than in onWindowShown() in case people forget to call // super.onWindowShown(). mShouldClearInsetOfPreviousIme = false; } } Loading Loading @@ -1933,32 +1917,6 @@ public class InputMethodService extends AbstractInputMethodService { // Intentionally empty } /** * Reset the inset occupied the previous IME when and only when * {@link #mShouldClearInsetOfPreviousIme} is {@code true}. */ private void clearInsetOfPreviousIme() { if (DEBUG) Log.v(TAG, "clearInsetOfPreviousIme() " + " mShouldClearInsetOfPreviousIme=" + mShouldClearInsetOfPreviousIme); if (!mShouldClearInsetOfPreviousIme) return; clearLastInputMethodWindowForTransition(); mShouldClearInsetOfPreviousIme = false; } /** * Tells the system that the IME decided to not show a window and the system no longer needs to * use the previous IME's inset. * * <p>Caveat: {@link android.inputmethodservice.InputMethodService#clearInsetOfPreviousIme()} * is the only expected caller of this method. Do not depend on this anywhere else.</p> * * <p>TODO: We probably need to reconsider how IME should be handled.</p> */ private void clearLastInputMethodWindowForTransition() { mPrivOps.clearLastInputMethodWindowForTransition(); } /** * Called when a new client has bound to the input method. This * may be followed by a series of {@link #onStartInput(EditorInfo, boolean)} Loading Loading @@ -2980,7 +2938,6 @@ public class InputMethodService extends AbstractInputMethodService { + " visibleTopInsets=" + mTmpInsets.visibleTopInsets + " touchableInsets=" + mTmpInsets.touchableInsets + " touchableRegion=" + mTmpInsets.touchableRegion); p.println(" mShouldClearInsetOfPreviousIme=" + mShouldClearInsetOfPreviousIme); p.println(" mSettingsObserver=" + mSettingsObserver); } }
core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl +0 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import com.android.internal.inputmethod.IInputContentUriToken; interface IInputMethodPrivilegedOperations { void setImeWindowStatus(int vis, int backDisposition); void reportStartInput(in IBinder startInputToken); void clearLastInputMethodWindowForTransition(); IInputContentUriToken createInputContentUriToken(in Uri contentUri, in String packageName); void reportFullscreenMode(boolean fullscreen); void setInputMethod(String id); Loading
core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java +0 −16 Original line number Diff line number Diff line Loading @@ -134,22 +134,6 @@ public final class InputMethodPrivilegedOperations { } } /** * Calls {@link IInputMethodPrivilegedOperations#clearLastInputMethodWindowForTransition()}. */ @AnyThread public void clearLastInputMethodWindowForTransition() { final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull(); if (ops == null) { return; } try { ops.clearLastInputMethodWindowForTransition(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Calls {@link IInputMethodPrivilegedOperations#createInputContentUriToken(Uri, String)}. * Loading
services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +6 −29 Original line number Diff line number Diff line Loading @@ -1976,7 +1976,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub throw new IllegalArgumentException("Unknown id: " + mCurMethodId); } unbindCurrentMethodLocked(true); unbindCurrentMethodLocked(); mCurIntent = new Intent(InputMethod.SERVICE_INTERFACE); mCurIntent.setComponent(info.getComponent()); Loading Loading @@ -2020,7 +2020,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mCurMethod = IInputMethod.Stub.asInterface(service); if (mCurToken == null) { Slog.w(TAG, "Service connected without a token!"); unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); return; } if (DEBUG) Slog.v(TAG, "Initiating attach with token: " + mCurToken); Loading Loading @@ -2059,7 +2059,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub channel.dispose(); } void unbindCurrentMethodLocked(boolean savePosition) { void unbindCurrentMethodLocked() { if (mVisibleBound) { mContext.unbindService(mVisibleConnection); mVisibleBound = false; Loading @@ -2076,10 +2076,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub Slog.v(TAG, "Removing window token: " + mCurToken + " for display: " + mCurTokenDisplayId); } if ((mImeWindowVis & InputMethodService.IME_ACTIVE) != 0 && savePosition) { // The current IME is shown. Hence an IME switch (transition) is happening. mWindowManagerInternal.saveLastInputMethodWindowForTransition(); } mIWindowManager.removeWindowToken(mCurToken, mCurTokenDisplayId); } catch (RemoteException e) { } Loading @@ -2094,7 +2090,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub void resetCurrentMethodAndClient( /* @InputMethodClient.UnbindReason */ final int unbindClientReason) { mCurMethodId = null; unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); unbindCurrentClientLocked(unbindClientReason); } Loading Loading @@ -2865,7 +2861,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final int newFocusDisplayId = mWindowManagerInternal.getDisplayIdForWindow(windowToken); if (newFocusDisplayId != mCurTokenDisplayId) { unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); } } } else if (isTextEditor && doAutoShow && (softInputMode & Loading Loading @@ -3236,19 +3232,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return mWindowManagerInternal.getInputMethodWindowVisibleHeight(mCurTokenDisplayId); } @BinderThread private void clearLastInputMethodWindowForTransition(IBinder token) { if (!calledFromValidUser()) { return; } synchronized (mMethodMap) { if (!calledWithValidToken(token)) { return; } } mWindowManagerInternal.clearLastInputMethodWindowForTransition(); } @BinderThread private void notifyUserAction(@NonNull IBinder token) { if (DEBUG) { Loading Loading @@ -4957,7 +4940,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub try { synchronized (mMethodMap) { hideCurrentInputLocked(0, null); unbindCurrentMethodLocked(false); unbindCurrentMethodLocked(); // Reset the current IME resetSelectedInputMethodAndSubtypeLocked(null); // Also reset the settings of the current IME Loading Loading @@ -5028,12 +5011,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mImms.reportStartInput(mToken, startInputToken); } @BinderThread @Override public void clearLastInputMethodWindowForTransition() { mImms.clearLastInputMethodWindowForTransition(mToken); } @BinderThread @Override public IInputContentUriToken createInputContentUriToken(Uri contentUri, Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +0 −24 Original line number Diff line number Diff line Loading @@ -533,8 +533,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { GlobalActions mGlobalActions; Handler mHandler; WindowState mLastInputMethodWindow = null; WindowState mLastInputMethodTargetWindow = null; // FIXME This state is shared between the input reader and handler thread. // Technically it's broken and buggy but it has been like this for many years Loading Loading @@ -4732,12 +4730,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { } final WindowManager.LayoutParams attrs = win.getAttrs(); final boolean isDefaultDisplay = win.isDefaultDisplay(); final boolean needsToOffsetInputMethodTarget = (win == mLastInputMethodTargetWindow) && (mLastInputMethodWindow != null); if (needsToOffsetInputMethodTarget) { if (DEBUG_LAYOUT) Slog.i(TAG, "Offset ime target window by the last ime window state"); offsetInputMethodWindowLw(mLastInputMethodWindow, displayFrames); } final int type = attrs.type; final int fl = PolicyControl.getWindowFlags(win, attrs); Loading Loading @@ -5191,7 +5183,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { // can't appear underneath them. if (type == TYPE_INPUT_METHOD && win.isVisibleLw() && !win.getGivenInsetsPendingLw()) { setLastInputMethodWindowLw(null, null); offsetInputMethodWindowLw(win, displayFrames); } if (type == TYPE_VOICE_INTERACTION && win.isVisibleLw() Loading Loading @@ -7821,12 +7812,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { return mDefaultDisplayPolicy.hasNavigationBar(); } @Override public void setLastInputMethodWindowLw(WindowState ime, WindowState target) { mLastInputMethodWindow = ime; mLastInputMethodTargetWindow = target; } @Override public void setDismissImeOnBackKeyPressed(boolean newValue) { mDismissImeOnBackKeyPressed = newValue; Loading @@ -7845,7 +7830,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (statusBar != null) { statusBar.setCurrentUser(newUserId); } setLastInputMethodWindowLw(null, null); } @Override Loading Loading @@ -8020,14 +8004,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mShowingDream="); pw.print(mShowingDream); pw.print(" mDreamingLockscreen="); pw.print(mDreamingLockscreen); pw.print(" mDreamingSleepToken="); pw.println(mDreamingSleepToken); if (mLastInputMethodWindow != null) { pw.print(prefix); pw.print("mLastInputMethodWindow="); pw.println(mLastInputMethodWindow); } if (mLastInputMethodTargetWindow != null) { pw.print(prefix); pw.print("mLastInputMethodTargetWindow="); pw.println(mLastInputMethodTargetWindow); } if (mStatusBar != null) { pw.print(prefix); pw.print("mStatusBar="); pw.print(mStatusBar); pw.print(" isStatusBarKeyguard="); Loading