From 01caa04cdee526d9e0bdf5a8f27c5e61e93b4cab Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Tue, 26 Sep 2023 17:37:59 +0000 Subject: Run TaskDisplayArea recovery during sleep tokens In AOD we can have a showWhenLocked activity visible but put to sleep by the Keyguard sleep token. Checking for isSleeping stops us from recovering display area visibility when: - AOD is active - A showWhenLocked, non-turnScreenOn app starts to launch - Post-collect, app calls recreate(), adds FLAG_TURN_SCREEN_ON - App becomes visible in relayout Change-Id: I660967a2eed3ea1c0ef1845afbdf416c26fa82ae Test: atest --iterations 10 CtsWindowManagerDeviceKeyguard:KeyguardTests Test: atest --iterations 10 CtsWindowManagerDeviceKeyguard:KeyguardLockedTests Bug: 292571302 --- services/core/java/com/android/server/wm/ActivityRecord.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 1531b995086d..cd0a4efad77e 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -5345,7 +5345,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Finish should only ever commit visibility=false, so we can check full containment // rather than just direct membership. inFinishingTransition = mTransitionController.inFinishingTransition(this); - if (!inFinishingTransition && !mDisplayContent.isSleeping()) { + if (!inFinishingTransition && (visible || !mDisplayContent.isSleeping())) { Slog.e(TAG, "setVisibility=" + visible + " while transition is not collecting or finishing " + this + " caller=" + Debug.getCallers(8)); -- cgit v1.2.3-59-g8ed1b