Loading services/core/java/com/android/server/wm/WindowState.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -2339,6 +2339,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return false; return false; } } if (inPinnedWindowingMode()) { return false; } final boolean windowsAreFocusable = mActivityRecord == null || mActivityRecord.windowsAreFocusable(); final boolean windowsAreFocusable = mActivityRecord == null || mActivityRecord.windowsAreFocusable(); if (!windowsAreFocusable) { if (!windowsAreFocusable) { // This window can't be an IME target if the app's windows should not be focusable. // This window can't be an IME target if the app's windows should not be focusable. Loading services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90; import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; Loading Loading @@ -244,6 +245,12 @@ public class WindowStateTests extends WindowTestsBase { appWindow.mAttrs.flags &= ~FLAG_NOT_FOCUSABLE; appWindow.mAttrs.flags &= ~FLAG_NOT_FOCUSABLE; assertTrue(appWindow.canBeImeTarget()); assertTrue(appWindow.canBeImeTarget()); // Verify PINNED windows can't be IME target. int initialMode = appWindow.mActivityRecord.getWindowingMode(); appWindow.mActivityRecord.setWindowingMode(WINDOWING_MODE_PINNED); assertFalse(appWindow.canBeImeTarget()); appWindow.mActivityRecord.setWindowingMode(initialMode); // Make windows invisible // Make windows invisible appWindow.hideLw(false /* doAnimation */); appWindow.hideLw(false /* doAnimation */); imeWindow.hideLw(false /* doAnimation */); imeWindow.hideLw(false /* doAnimation */); Loading Loading
services/core/java/com/android/server/wm/WindowState.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -2339,6 +2339,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return false; return false; } } if (inPinnedWindowingMode()) { return false; } final boolean windowsAreFocusable = mActivityRecord == null || mActivityRecord.windowsAreFocusable(); final boolean windowsAreFocusable = mActivityRecord == null || mActivityRecord.windowsAreFocusable(); if (!windowsAreFocusable) { if (!windowsAreFocusable) { // This window can't be an IME target if the app's windows should not be focusable. // This window can't be an IME target if the app's windows should not be focusable. Loading
services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90; import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; Loading Loading @@ -244,6 +245,12 @@ public class WindowStateTests extends WindowTestsBase { appWindow.mAttrs.flags &= ~FLAG_NOT_FOCUSABLE; appWindow.mAttrs.flags &= ~FLAG_NOT_FOCUSABLE; assertTrue(appWindow.canBeImeTarget()); assertTrue(appWindow.canBeImeTarget()); // Verify PINNED windows can't be IME target. int initialMode = appWindow.mActivityRecord.getWindowingMode(); appWindow.mActivityRecord.setWindowingMode(WINDOWING_MODE_PINNED); assertFalse(appWindow.canBeImeTarget()); appWindow.mActivityRecord.setWindowingMode(initialMode); // Make windows invisible // Make windows invisible appWindow.hideLw(false /* doAnimation */); appWindow.hideLw(false /* doAnimation */); imeWindow.hideLw(false /* doAnimation */); imeWindow.hideLw(false /* doAnimation */); Loading