Loading services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java +2 −2 Original line number Diff line number Diff line Loading @@ -220,7 +220,7 @@ public final class ImeVisibilityStateComputer { @Override public void onImeTargetOverlayVisibilityChanged(@NonNull IBinder overlayWindowToken, @WindowManager.LayoutParams.WindowType int windowType, boolean visible, boolean removed) { boolean removed, int displayId) { // Ignoring the starting window since it's ok to cover the IME target // window in temporary without affecting the IME visibility. final boolean hasOverlay = visible && !removed Loading @@ -232,7 +232,7 @@ public final class ImeVisibilityStateComputer { @Override public void onImeInputTargetVisibilityChanged(IBinder imeInputTarget, boolean visibleRequested, boolean removed) { boolean visibleRequested, boolean removed, int displayId) { final boolean visibleAndNotRemoved = visibleRequested && !removed; synchronized (ImfLock.class) { if (visibleAndNotRemoved) { Loading services/core/java/com/android/server/wm/DisplayContent.java +3 −2 Original line number Diff line number Diff line Loading @@ -4415,13 +4415,14 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mWmService.dispatchImeInputTargetVisibilityChanged( targetWin.mClient.asBinder(), isVisibleRequested, targetWin.mActivityRecord != null && targetWin.mActivityRecord.finishing); && targetWin.mActivityRecord.finishing, mDisplayId); } }); targetWin.mToken.registerWindowContainerListener( mImeTargetTokenListenerPair.second); mWmService.dispatchImeInputTargetVisibilityChanged(targetWin.mClient.asBinder(), targetWin.isVisible() /* visible */, false /* removed */); targetWin.isVisible() /* visible */, false /* removed */, mDisplayId); } } if (refreshImeSecureFlag(getPendingTransaction())) { Loading services/core/java/com/android/server/wm/ImeTargetChangeListener.java +5 −3 Original line number Diff line number Diff line Loading @@ -37,25 +37,27 @@ public interface ImeTargetChangeListener { * @param visible the visibility of the overlay window, {@code true} means visible * and {@code false} otherwise. * @param removed Whether the IME target overlay window has being removed. * @param displayId display ID where the overlay window exists. */ default void onImeTargetOverlayVisibilityChanged(@NonNull IBinder overlayWindowToken, @WindowManager.LayoutParams.WindowType int windowType, boolean visible, boolean removed) { boolean visible, boolean removed, int displayId) { } /** * Called when the visibility of IME input target window has changed. * * @param imeInputTarget the window token of the IME input target window. * @param visible the new window visibility made by {@param imeInputTarget}. visible is * @param visible the new window visibility made by {@code imeInputTarget}. visible is * {@code true} when switching to the new visible IME input target * window and started input, or the same input target relayout to * visible from invisible. In contrast, visible is {@code false} when * closing the input target, or the same input target relayout to * invisible from visible. * @param removed Whether the IME input target window has being removed. * @param displayId display ID where the overlay window exists. */ default void onImeInputTargetVisibilityChanged(@NonNull IBinder imeInputTarget, boolean visible, boolean removed) { boolean removed, int displayId) { } } services/core/java/com/android/server/wm/WindowManagerService.java +12 −9 Original line number Diff line number Diff line Loading @@ -1897,7 +1897,8 @@ public class WindowManagerService extends IWindowManager.Stub displayContent.computeImeTarget(true /* updateImeTarget */); if (win.isImeOverlayLayeringTarget()) { dispatchImeTargetOverlayVisibilityChanged(client.asBinder(), win.mAttrs.type, win.isVisibleRequestedOrAdding(), false /* removed */); win.isVisibleRequestedOrAdding(), false /* removed */, displayContent.getDisplayId()); } } Loading Loading @@ -2661,13 +2662,13 @@ public class WindowManagerService extends IWindowManager.Stub final boolean winVisibleChanged = win.isVisible() != wasVisible; if (win.isImeOverlayLayeringTarget() && winVisibleChanged) { dispatchImeTargetOverlayVisibilityChanged(client.asBinder(), win.mAttrs.type, win.isVisible(), false /* removed */); win.isVisible(), false /* removed */, win.getDisplayId()); } // Notify listeners about IME input target window visibility change. final boolean isImeInputTarget = win.getDisplayContent().getImeInputTarget() == win; if (isImeInputTarget && winVisibleChanged) { dispatchImeInputTargetVisibilityChanged(win.mClient.asBinder(), win.isVisible() /* visible */, false /* removed */); win.isVisible() /* visible */, false /* removed */, win.getDisplayId()); } if (outRelayoutResult != null) { Loading Loading @@ -3515,27 +3516,29 @@ public class WindowManagerService extends IWindowManager.Stub void dispatchImeTargetOverlayVisibilityChanged(@NonNull IBinder token, @WindowManager.LayoutParams.WindowType int windowType, boolean visible, boolean removed) { boolean removed, int displayId) { if (mImeTargetChangeListener != null) { if (DEBUG_INPUT_METHOD) { Slog.d(TAG, "onImeTargetOverlayVisibilityChanged, win=" + mWindowMap.get(token) + ", type=" + ViewDebug.intToString(WindowManager.LayoutParams.class, "type", windowType) + "visible=" + visible + ", removed=" + removed); "type", windowType) + "visible=" + visible + ", removed=" + removed + ", displayId=" + displayId); } mH.post(() -> mImeTargetChangeListener.onImeTargetOverlayVisibilityChanged(token, windowType, visible, removed)); windowType, visible, removed, displayId)); } } void dispatchImeInputTargetVisibilityChanged(@NonNull IBinder token, boolean visible, boolean removed) { boolean removed, int displayId) { if (mImeTargetChangeListener != null) { if (DEBUG_INPUT_METHOD) { Slog.d(TAG, "onImeInputTargetVisibilityChanged, win=" + mWindowMap.get(token) + "visible=" + visible + ", removed=" + removed); + "visible=" + visible + ", removed=" + removed + ", displayId" + displayId); } mH.post(() -> mImeTargetChangeListener.onImeInputTargetVisibilityChanged(token, visible, removed)); visible, removed, displayId)); } } Loading services/core/java/com/android/server/wm/WindowState.java +3 −3 Original line number Diff line number Diff line Loading @@ -2359,11 +2359,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } super.removeImmediately(); final DisplayContent dc = getDisplayContent(); if (isImeOverlayLayeringTarget()) { mWmService.dispatchImeTargetOverlayVisibilityChanged(mClient.asBinder(), mAttrs.type, false /* visible */, true /* removed */); false /* visible */, true /* removed */, dc.getDisplayId()); } final DisplayContent dc = getDisplayContent(); if (isImeLayeringTarget()) { // Remove the attached IME screenshot surface. dc.removeImeSurfaceByTarget(this); Loading @@ -2374,7 +2374,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } if (dc.getImeInputTarget() == this && !inRelaunchingActivity()) { mWmService.dispatchImeInputTargetVisibilityChanged(mClient.asBinder(), false /* visible */, true /* removed */); false /* visible */, true /* removed */, dc.getDisplayId()); dc.updateImeInputAndControlTarget(null); } Loading Loading
services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java +2 −2 Original line number Diff line number Diff line Loading @@ -220,7 +220,7 @@ public final class ImeVisibilityStateComputer { @Override public void onImeTargetOverlayVisibilityChanged(@NonNull IBinder overlayWindowToken, @WindowManager.LayoutParams.WindowType int windowType, boolean visible, boolean removed) { boolean removed, int displayId) { // Ignoring the starting window since it's ok to cover the IME target // window in temporary without affecting the IME visibility. final boolean hasOverlay = visible && !removed Loading @@ -232,7 +232,7 @@ public final class ImeVisibilityStateComputer { @Override public void onImeInputTargetVisibilityChanged(IBinder imeInputTarget, boolean visibleRequested, boolean removed) { boolean visibleRequested, boolean removed, int displayId) { final boolean visibleAndNotRemoved = visibleRequested && !removed; synchronized (ImfLock.class) { if (visibleAndNotRemoved) { Loading
services/core/java/com/android/server/wm/DisplayContent.java +3 −2 Original line number Diff line number Diff line Loading @@ -4415,13 +4415,14 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mWmService.dispatchImeInputTargetVisibilityChanged( targetWin.mClient.asBinder(), isVisibleRequested, targetWin.mActivityRecord != null && targetWin.mActivityRecord.finishing); && targetWin.mActivityRecord.finishing, mDisplayId); } }); targetWin.mToken.registerWindowContainerListener( mImeTargetTokenListenerPair.second); mWmService.dispatchImeInputTargetVisibilityChanged(targetWin.mClient.asBinder(), targetWin.isVisible() /* visible */, false /* removed */); targetWin.isVisible() /* visible */, false /* removed */, mDisplayId); } } if (refreshImeSecureFlag(getPendingTransaction())) { Loading
services/core/java/com/android/server/wm/ImeTargetChangeListener.java +5 −3 Original line number Diff line number Diff line Loading @@ -37,25 +37,27 @@ public interface ImeTargetChangeListener { * @param visible the visibility of the overlay window, {@code true} means visible * and {@code false} otherwise. * @param removed Whether the IME target overlay window has being removed. * @param displayId display ID where the overlay window exists. */ default void onImeTargetOverlayVisibilityChanged(@NonNull IBinder overlayWindowToken, @WindowManager.LayoutParams.WindowType int windowType, boolean visible, boolean removed) { boolean visible, boolean removed, int displayId) { } /** * Called when the visibility of IME input target window has changed. * * @param imeInputTarget the window token of the IME input target window. * @param visible the new window visibility made by {@param imeInputTarget}. visible is * @param visible the new window visibility made by {@code imeInputTarget}. visible is * {@code true} when switching to the new visible IME input target * window and started input, or the same input target relayout to * visible from invisible. In contrast, visible is {@code false} when * closing the input target, or the same input target relayout to * invisible from visible. * @param removed Whether the IME input target window has being removed. * @param displayId display ID where the overlay window exists. */ default void onImeInputTargetVisibilityChanged(@NonNull IBinder imeInputTarget, boolean visible, boolean removed) { boolean removed, int displayId) { } }
services/core/java/com/android/server/wm/WindowManagerService.java +12 −9 Original line number Diff line number Diff line Loading @@ -1897,7 +1897,8 @@ public class WindowManagerService extends IWindowManager.Stub displayContent.computeImeTarget(true /* updateImeTarget */); if (win.isImeOverlayLayeringTarget()) { dispatchImeTargetOverlayVisibilityChanged(client.asBinder(), win.mAttrs.type, win.isVisibleRequestedOrAdding(), false /* removed */); win.isVisibleRequestedOrAdding(), false /* removed */, displayContent.getDisplayId()); } } Loading Loading @@ -2661,13 +2662,13 @@ public class WindowManagerService extends IWindowManager.Stub final boolean winVisibleChanged = win.isVisible() != wasVisible; if (win.isImeOverlayLayeringTarget() && winVisibleChanged) { dispatchImeTargetOverlayVisibilityChanged(client.asBinder(), win.mAttrs.type, win.isVisible(), false /* removed */); win.isVisible(), false /* removed */, win.getDisplayId()); } // Notify listeners about IME input target window visibility change. final boolean isImeInputTarget = win.getDisplayContent().getImeInputTarget() == win; if (isImeInputTarget && winVisibleChanged) { dispatchImeInputTargetVisibilityChanged(win.mClient.asBinder(), win.isVisible() /* visible */, false /* removed */); win.isVisible() /* visible */, false /* removed */, win.getDisplayId()); } if (outRelayoutResult != null) { Loading Loading @@ -3515,27 +3516,29 @@ public class WindowManagerService extends IWindowManager.Stub void dispatchImeTargetOverlayVisibilityChanged(@NonNull IBinder token, @WindowManager.LayoutParams.WindowType int windowType, boolean visible, boolean removed) { boolean removed, int displayId) { if (mImeTargetChangeListener != null) { if (DEBUG_INPUT_METHOD) { Slog.d(TAG, "onImeTargetOverlayVisibilityChanged, win=" + mWindowMap.get(token) + ", type=" + ViewDebug.intToString(WindowManager.LayoutParams.class, "type", windowType) + "visible=" + visible + ", removed=" + removed); "type", windowType) + "visible=" + visible + ", removed=" + removed + ", displayId=" + displayId); } mH.post(() -> mImeTargetChangeListener.onImeTargetOverlayVisibilityChanged(token, windowType, visible, removed)); windowType, visible, removed, displayId)); } } void dispatchImeInputTargetVisibilityChanged(@NonNull IBinder token, boolean visible, boolean removed) { boolean removed, int displayId) { if (mImeTargetChangeListener != null) { if (DEBUG_INPUT_METHOD) { Slog.d(TAG, "onImeInputTargetVisibilityChanged, win=" + mWindowMap.get(token) + "visible=" + visible + ", removed=" + removed); + "visible=" + visible + ", removed=" + removed + ", displayId" + displayId); } mH.post(() -> mImeTargetChangeListener.onImeInputTargetVisibilityChanged(token, visible, removed)); visible, removed, displayId)); } } Loading
services/core/java/com/android/server/wm/WindowState.java +3 −3 Original line number Diff line number Diff line Loading @@ -2359,11 +2359,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } super.removeImmediately(); final DisplayContent dc = getDisplayContent(); if (isImeOverlayLayeringTarget()) { mWmService.dispatchImeTargetOverlayVisibilityChanged(mClient.asBinder(), mAttrs.type, false /* visible */, true /* removed */); false /* visible */, true /* removed */, dc.getDisplayId()); } final DisplayContent dc = getDisplayContent(); if (isImeLayeringTarget()) { // Remove the attached IME screenshot surface. dc.removeImeSurfaceByTarget(this); Loading @@ -2374,7 +2374,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } if (dc.getImeInputTarget() == this && !inRelaunchingActivity()) { mWmService.dispatchImeInputTargetVisibilityChanged(mClient.asBinder(), false /* visible */, true /* removed */); false /* visible */, true /* removed */, dc.getDisplayId()); dc.updateImeInputAndControlTarget(null); } Loading