Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6281d642 authored by Adrian Roos's avatar Adrian Roos Committed by android-build-merger
Browse files

Merge "WM: Prevent secondary display focus while keyguard is up" into oc-dev

am: f04714c5

Change-Id: I38bab1ff56a30cccb2f748588ffbbe54d5e17e80
parents bc45dc95 f04714c5
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -603,6 +603,11 @@ public interface WindowManagerPolicy {
         */
        void notifyKeyguardTrustedChanged();

        /**
         * The keyguard showing state has changed
         */
        void onKeyguardShowingAndNotOccludedChanged();

        /**
         * Notifies the window manager that screen is being turned off.
         *
+5 −0
Original line number Diff line number Diff line
@@ -2109,6 +2109,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                    public void onTrustedChanged() {
                        mWindowManagerFuncs.notifyKeyguardTrustedChanged();
                    }

                    @Override
                    public void onShowingChanged() {
                        mWindowManagerFuncs.onKeyguardShowingAndNotOccludedChanged();
                    }
                });
    }

+3 −0
Original line number Diff line number Diff line
@@ -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
@@ -119,6 +121,7 @@ public class KeyguardStateMonitor extends IKeyguardStateCallback.Stub {

    public interface StateCallback {
        void onTrustedChanged();
        void onShowingChanged();
    }

    public void dump(String prefix, PrintWriter pw) {
+8 −0
Original line number Diff line number Diff line
@@ -164,10 +164,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;
            }
        }
+13 −0
Original line number Diff line number Diff line
@@ -2918,6 +2918,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);
@@ -4889,6 +4894,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.
@@ -5355,6 +5361,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