Loading core/java/android/window/flags/windowing_frontend.aconfig +11 −1 Original line number Diff line number Diff line Loading @@ -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" Loading services/core/java/com/android/server/wm/KeyguardController.java +19 −5 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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"; Loading Loading @@ -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; } Loading Loading @@ -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(); Loading Loading @@ -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(); Loading services/core/java/com/android/server/wm/WindowManagerService.java +0 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading Loading
core/java/android/window/flags/windowing_frontend.aconfig +11 −1 Original line number Diff line number Diff line Loading @@ -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" Loading
services/core/java/com/android/server/wm/KeyguardController.java +19 −5 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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"; Loading Loading @@ -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; } Loading Loading @@ -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(); Loading Loading @@ -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(); Loading
services/core/java/com/android/server/wm/WindowManagerService.java +0 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading