Merge "Propagate setImeWindowStatus() to WMS"
This commit is contained in:
committed by
Android (Google) Code Review
commit
3400795aec
@@ -281,6 +281,25 @@ public abstract class WindowManagerInternal {
|
||||
*/
|
||||
public abstract void clearLastInputMethodWindowForTransition();
|
||||
|
||||
/**
|
||||
* Notifies WindowManagerService that the current IME window status is being changed.
|
||||
*
|
||||
* <p>Only {@link com.android.server.InputMethodManagerService} is the expected and tested
|
||||
* caller of this method.</p>
|
||||
*
|
||||
* @param imeToken token to track the active input method. Corresponding IME windows can be
|
||||
* identified by checking {@link android.view.WindowManager.LayoutParams#token}.
|
||||
* Note that there is no guarantee that the corresponding window is already
|
||||
* created
|
||||
* @param imeWindowVisible whether the active IME thinks that its window should be visible or
|
||||
* hidden, no matter how WindowManagerService will react / has reacted
|
||||
* to corresponding API calls. Note that this state is not guaranteed
|
||||
* to be synchronized with state in WindowManagerService.
|
||||
* @param targetWindowToken token to identify the target window that the IME is associated with.
|
||||
*/
|
||||
public abstract void updateInputMethodWindowStatus(IBinder imeToken, boolean imeWindowVisible,
|
||||
IBinder targetWindowToken);
|
||||
|
||||
/**
|
||||
* Returns true when the hardware keyboard is available.
|
||||
*/
|
||||
|
||||
@@ -1863,8 +1863,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
return;
|
||||
}
|
||||
|
||||
final StartInputInfo info;
|
||||
synchronized (mMethodMap) {
|
||||
final StartInputInfo info = mStartInputMap.get(startInputToken);
|
||||
info = mStartInputMap.get(startInputToken);
|
||||
if (info == null) {
|
||||
throw new InvalidParameterException("Unknown startInputToken=" + startInputToken);
|
||||
}
|
||||
@@ -1872,6 +1873,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
mBackDisposition = backDisposition;
|
||||
updateSystemUiLocked(token, vis, backDisposition);
|
||||
}
|
||||
mWindowManagerInternal.updateInputMethodWindowStatus(info.mImeToken,
|
||||
(vis & InputMethodService.IME_VISIBLE) != 0, info.mTargetWindow);
|
||||
}
|
||||
|
||||
private void updateSystemUi(IBinder token, int vis, int backDisposition) {
|
||||
|
||||
@@ -75,6 +75,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_CONFIGURATION
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DRAG;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
|
||||
@@ -7913,6 +7914,17 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateInputMethodWindowStatus(IBinder imeToken, boolean imeWindowVisible,
|
||||
IBinder targetWindowToken) {
|
||||
// TODO (b/34628091): Use this method to address the window animation issue.
|
||||
if (DEBUG_INPUT_METHOD) {
|
||||
Slog.w(TAG_WM, "updateInputMethodWindowStatus: imeToken=" + imeToken
|
||||
+ " imeWindowVisible=" + imeWindowVisible
|
||||
+ " targetWindowToken=" + targetWindowToken);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHardKeyboardAvailable() {
|
||||
synchronized (mWindowMap) {
|
||||
|
||||
Reference in New Issue
Block a user