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

Commit c03c5d10 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Execute Keyguard-going-away on the changed Display" into main

parents 014118ee 433821a5
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -248,6 +248,16 @@ flag {
  }
}

flag {
  name: "keyguard_remove_default_display_usage"
  namespace: "windowing_frontend"
  description: "Execute transitions on affected DisplayContent(s) instead of Default DisplayContent"
  bug: "430227391"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
    name: "predictive_back_priority_system_navigation_observer"
    namespace: "systemui"
+19 −5
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import com.android.server.policy.WindowManagerPolicy;
import com.android.window.flags.Flags;

import java.io.PrintWriter;
import java.util.ArrayList;

/**
 * Controls Keyguard occluding, dismissing and transitions depending on what kind of activities are
@@ -78,6 +79,9 @@ class KeyguardController {
    private static final boolean ENABLE_NEW_KEYGUARD_SHELL_TRANSITIONS =
            Flags.ensureKeyguardDoesTransitionStarting();

    private static final boolean REMOVE_DEFAULT_DISPLAY_USAGE =
            Flags.keyguardRemoveDefaultDisplayUsage();

    private static final String TAG = TAG_WITH_CLASS_NAME ? "KeyguardController" : TAG_ATM;

    static final String KEYGUARD_SLEEP_TOKEN_TAG = "keyguard";
@@ -300,20 +304,20 @@ class KeyguardController {
    void keyguardGoingAway(int flags) {
        Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "keyguardGoingAway");

        boolean goingAwayChanged = false;
        final ArrayList<DisplayContent> changedDisplays = new ArrayList<>();
        for (int i = mRootWindowContainer.getChildCount() - 1; i >= 0; i--) {
            final DisplayContent dc = mRootWindowContainer.getChildAt(i);
            if (!dc.isRemoving() && !dc.isRemoved()) {
                final var state = getDisplayState(dc.mDisplayId);
                if (state.mKeyguardShowing && !state.mKeyguardGoingAway) {
                    goingAwayChanged = true;
                    state.mKeyguardGoingAway = true;
                    state.writeEventLog("keyguardGoingAway");
                    scheduleGoingAwayTimeout(dc.mDisplayId);
                    changedDisplays.add(dc);
                }
            }
        }
        if (!goingAwayChanged) {
        if (changedDisplays.isEmpty()) {
            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
            return;
        }
@@ -341,7 +345,13 @@ class KeyguardController {
            mRootWindowContainer.resumeFocusedTasksTopActivities();
            mRootWindowContainer.ensureActivitiesVisible();
            mRootWindowContainer.addStartingWindowsForVisibleActivities();
            if (REMOVE_DEFAULT_DISPLAY_USAGE) {
                for (int i = changedDisplays.size() - 1; i >= 0; i--) {
                    changedDisplays.get(i).executeAppTransition();
                }
            } else {
                mWindowManager.executeAppTransition();
            }
        } finally {
            mService.continueWindowLayout();
            mService.mChainTracker.endPartial();
@@ -540,7 +550,11 @@ class KeyguardController {
            dc.mAtmService.getTransitionController().requestTransitionIfNeeded(
                    TRANSIT_OPEN, TRANSIT_FLAG_KEYGUARD_GOING_AWAY, null /* trigger */, dc, chain);
            updateKeyguardSleepToken();
            if (REMOVE_DEFAULT_DISPLAY_USAGE) {
                dc.executeAppTransition();
            } else {
                mWindowManager.executeAppTransition();
            }
        } finally {
            mService.continueWindowLayout();
            mService.mChainTracker.endPartial();
+0 −1
Original line number Diff line number Diff line
@@ -3412,7 +3412,6 @@ public class WindowManagerService extends IWindowManager.Stub
    }

    // TODO(multi-display): remove when no default display use case.
    // (i.e. KeyguardController)
    public void executeAppTransition() {
        if (!checkCallingPermission(MANAGE_APP_TOKENS, "executeAppTransition()")) {
            throw new SecurityException("Requires MANAGE_APP_TOKENS permission");