Loading core/java/android/view/WindowManagerPolicy.java +5 −0 Original line number Diff line number Diff line Loading @@ -610,6 +610,11 @@ public interface WindowManagerPolicy { */ void notifyKeyguardTrustedChanged(); /** * The keyguard showing state has changed */ void onKeyguardShowingAndNotOccludedChanged(); /** * Notifies the window manager that screen is being turned off. * Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -2150,6 +2150,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void onTrustedChanged() { mWindowManagerFuncs.notifyKeyguardTrustedChanged(); } @Override public void onShowingChanged() { mWindowManagerFuncs.onKeyguardShowingAndNotOccludedChanged(); } }); } Loading services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java +3 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ public class KeyguardStateMonitor extends IKeyguardStateCallback.Stub { @Override // Binder interface public void onShowingStateChanged(boolean showing) { mIsShowing = showing; mCallback.onShowingChanged(); } @Override // Binder interface Loading Loading @@ -119,6 +121,7 @@ public class KeyguardStateMonitor extends IKeyguardStateCallback.Stub { public interface StateCallback { void onTrustedChanged(); void onShowingChanged(); } public void dump(String prefix, PrintWriter pw) { Loading services/core/java/com/android/server/wm/RootWindowContainer.java +8 −0 Original line number Diff line number Diff line Loading @@ -165,10 +165,18 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } WindowState computeFocusedWindow() { // While the keyguard is showing, we must focus anything besides the main display. // Otherwise we risk input not going to the keyguard when the user expects it to. final boolean forceDefaultDisplay = mService.mPolicy.isKeyguardShowingAndNotOccluded(); for (int i = mChildren.size() - 1; i >= 0; i--) { final DisplayContent dc = mChildren.get(i); final WindowState win = dc.findFocusedWindow(); if (win != null) { if (forceDefaultDisplay && !dc.isDefaultDisplay) { EventLog.writeEvent(0x534e4554, "71786287", win.mOwnerUid, ""); continue; } return win; } } Loading services/core/java/com/android/server/wm/WindowManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -2928,6 +2928,11 @@ public class WindowManagerService extends IWindowManager.Stub mH.sendEmptyMessage(H.NOTIFY_KEYGUARD_TRUSTED_CHANGED); } @Override public void onKeyguardShowingAndNotOccludedChanged() { mH.sendEmptyMessage(H.RECOMPUTE_FOCUS); } @Override public void screenTurningOff(ScreenOffListener listener) { mTaskSnapshotController.screenTurningOff(listener); Loading Loading @@ -4897,6 +4902,7 @@ public class WindowManagerService extends IWindowManager.Stub public static final int NOTIFY_KEYGUARD_FLAGS_CHANGED = 56; public static final int NOTIFY_KEYGUARD_TRUSTED_CHANGED = 57; public static final int SET_HAS_OVERLAY_UI = 58; public static final int RECOMPUTE_FOCUS = 61; /** * Used to denote that an integer field in a message will not be used. Loading Loading @@ -5363,6 +5369,13 @@ public class WindowManagerService extends IWindowManager.Stub mAmInternal.setHasOverlayUi(msg.arg1, msg.arg2 == 1); } break; case RECOMPUTE_FOCUS: { synchronized (mWindowMap) { updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, true /* updateInputWindows */); } } break; } if (DEBUG_WINDOW_TRACE) { Slog.v(TAG_WM, "handleMessage: exit"); Loading Loading
core/java/android/view/WindowManagerPolicy.java +5 −0 Original line number Diff line number Diff line Loading @@ -610,6 +610,11 @@ public interface WindowManagerPolicy { */ void notifyKeyguardTrustedChanged(); /** * The keyguard showing state has changed */ void onKeyguardShowingAndNotOccludedChanged(); /** * Notifies the window manager that screen is being turned off. * Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -2150,6 +2150,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void onTrustedChanged() { mWindowManagerFuncs.notifyKeyguardTrustedChanged(); } @Override public void onShowingChanged() { mWindowManagerFuncs.onKeyguardShowingAndNotOccludedChanged(); } }); } Loading
services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java +3 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ public class KeyguardStateMonitor extends IKeyguardStateCallback.Stub { @Override // Binder interface public void onShowingStateChanged(boolean showing) { mIsShowing = showing; mCallback.onShowingChanged(); } @Override // Binder interface Loading Loading @@ -119,6 +121,7 @@ public class KeyguardStateMonitor extends IKeyguardStateCallback.Stub { public interface StateCallback { void onTrustedChanged(); void onShowingChanged(); } public void dump(String prefix, PrintWriter pw) { Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +8 −0 Original line number Diff line number Diff line Loading @@ -165,10 +165,18 @@ class RootWindowContainer extends WindowContainer<DisplayContent> { } WindowState computeFocusedWindow() { // While the keyguard is showing, we must focus anything besides the main display. // Otherwise we risk input not going to the keyguard when the user expects it to. final boolean forceDefaultDisplay = mService.mPolicy.isKeyguardShowingAndNotOccluded(); for (int i = mChildren.size() - 1; i >= 0; i--) { final DisplayContent dc = mChildren.get(i); final WindowState win = dc.findFocusedWindow(); if (win != null) { if (forceDefaultDisplay && !dc.isDefaultDisplay) { EventLog.writeEvent(0x534e4554, "71786287", win.mOwnerUid, ""); continue; } return win; } } Loading
services/core/java/com/android/server/wm/WindowManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -2928,6 +2928,11 @@ public class WindowManagerService extends IWindowManager.Stub mH.sendEmptyMessage(H.NOTIFY_KEYGUARD_TRUSTED_CHANGED); } @Override public void onKeyguardShowingAndNotOccludedChanged() { mH.sendEmptyMessage(H.RECOMPUTE_FOCUS); } @Override public void screenTurningOff(ScreenOffListener listener) { mTaskSnapshotController.screenTurningOff(listener); Loading Loading @@ -4897,6 +4902,7 @@ public class WindowManagerService extends IWindowManager.Stub public static final int NOTIFY_KEYGUARD_FLAGS_CHANGED = 56; public static final int NOTIFY_KEYGUARD_TRUSTED_CHANGED = 57; public static final int SET_HAS_OVERLAY_UI = 58; public static final int RECOMPUTE_FOCUS = 61; /** * Used to denote that an integer field in a message will not be used. Loading Loading @@ -5363,6 +5369,13 @@ public class WindowManagerService extends IWindowManager.Stub mAmInternal.setHasOverlayUi(msg.arg1, msg.arg2 == 1); } break; case RECOMPUTE_FOCUS: { synchronized (mWindowMap) { updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, true /* updateInputWindows */); } } break; } if (DEBUG_WINDOW_TRACE) { Slog.v(TAG_WM, "handleMessage: exit"); Loading