summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
author wilsonshih <wilsonshih@google.com> 2024-12-31 08:25:26 +0000
committer Kampalus <kampalus@protonmail.ch> 2025-09-18 09:01:00 +0200
commit0dbca12e772113be98152550ebcd20a3c456f384 (patch)
treeac9cd997173a955a608b4afdf9926872fea8fc0d /services
parent99b01a65cc4c104933788b3143285ab6bae65827 (diff)
[SP 2025-08-01] Defer remove splash screen while device is locked
...and activity does not request showWhenLocked. The splash screen won't contains secure information, so it's safe to declared as showWhenLocked. But before remove starting window, if the activity does not request showWhenLocked and device is locked, try to trigger unoccluding animation, and keep app window hide until transition animation finish. Bug: 378088391 Bug: 383131643 Test: run simulate app repeatly, verify the app content won't be visible during transition animation. Merged-In: Id4db3772950059803883d00f9dd6b94aa98382f0 Change-Id: Id4db3772950059803883d00f9dd6b94aa98382f0
Diffstat (limited to 'services')
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java3
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java2
2 files changed, 3 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 78100b7a06c9..5ce6dd022e91 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -2707,7 +2707,8 @@ final class ActivityRecord extends WindowToken {
* This prevents briefly appearing the app context and causing secure concern.
*/
void deferStartingWindowRemovalForKeyguardUnoccluding() {
- if (mStartingData.mRemoveAfterTransaction != AFTER_TRANSITION_FINISH
+ if (mStartingData != null
+ && mStartingData.mRemoveAfterTransaction != AFTER_TRANSITION_FINISH
&& isKeyguardLocked() && !canShowWhenLockedInner(this) && !isVisibleRequested()
&& mTransitionController.inTransition(this)) {
mStartingData.mRemoveAfterTransaction = AFTER_TRANSITION_FINISH;
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 93876f5eeed4..05b81d4bfb67 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2774,7 +2774,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
final boolean wasShowWhenLocked = (sa.flags & FLAG_SHOW_WHEN_LOCKED) != 0;
final boolean removeShowWhenLocked = (mAttrs.flags & FLAG_SHOW_WHEN_LOCKED) == 0;
sa.flags = (sa.flags & ~mask) | (mAttrs.flags & mask);
- if (Flags.keepAppWindowHideWhileLocked() && wasShowWhenLocked && removeShowWhenLocked) {
+ if (wasShowWhenLocked && removeShowWhenLocked) {
// Trigger unoccluding animation if needed.
mActivityRecord.checkKeyguardFlagsChanged();
mActivityRecord.deferStartingWindowRemovalForKeyguardUnoccluding();