From 811c0f0b0291f8ab85a8c8b9d1dff221cc258b09 Mon Sep 17 00:00:00 2001 From: Issei Suzuki Date: Thu, 2 Jun 2022 09:20:43 +0000 Subject: [PATCH] Clear ActivityRecord#mDismissKeyguard flag after app launches. This flag is used by the SysUI to dismiss an insecure keyguard when an app is launched from an insecure lock screen. The flag should only affect the app launch once, so needs to be cleared once app launch animation finishes. Bug: 234583880 Test: atest KeyguardTests Change-Id: I74e9e00caad0d9af80127b2fc930c4ff0d52af76 --- core/proto/android/server/windowmanagerservice.proto | 2 ++ services/core/java/com/android/server/wm/ActivityRecord.java | 1 + .../core/java/com/android/server/wm/KeyguardController.java | 3 +++ 3 files changed, 6 insertions(+) diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto index 152d729da3b62..92ac389ece676 100644 --- a/core/proto/android/server/windowmanagerservice.proto +++ b/core/proto/android/server/windowmanagerservice.proto @@ -116,6 +116,7 @@ message KeyguardControllerProto { repeated KeyguardOccludedProto keyguard_occluded_states = 2 [deprecated=true]; optional bool aod_showing = 3; repeated KeyguardPerDisplayProto keyguard_per_display = 4; + optional bool keyguard_going_away = 5; } message KeyguardOccludedProto { @@ -132,6 +133,7 @@ message KeyguardPerDisplayProto { optional bool keyguard_showing = 2; optional bool aod_showing = 3; optional bool keyguard_occluded = 4; + optional bool keyguard_going_away = 5; } /* represents PhoneWindowManager */ diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 4f222a4f8b833..0d6591ca2ca36 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -7343,6 +7343,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mTransit = TRANSIT_OLD_UNSET; mTransitFlags = 0; mNeedsAnimationBoundsLayer = false; + mDismissKeyguard = false; setAppLayoutChanges(FINISH_LAYOUT_REDO_ANIM | FINISH_LAYOUT_REDO_WALLPAPER, "ActivityRecord"); diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java index 01c94142f46b3..cf46126af4888 100644 --- a/services/core/java/com/android/server/wm/KeyguardController.java +++ b/services/core/java/com/android/server/wm/KeyguardController.java @@ -41,6 +41,7 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.KeyguardControllerProto.AOD_SHOWING; +import static com.android.server.wm.KeyguardControllerProto.KEYGUARD_GOING_AWAY; import static com.android.server.wm.KeyguardControllerProto.KEYGUARD_PER_DISPLAY; import static com.android.server.wm.KeyguardControllerProto.KEYGUARD_SHOWING; @@ -671,6 +672,7 @@ class KeyguardController { proto.write(KeyguardPerDisplayProto.KEYGUARD_SHOWING, mKeyguardShowing); proto.write(KeyguardPerDisplayProto.AOD_SHOWING, mAodShowing); proto.write(KeyguardPerDisplayProto.KEYGUARD_OCCLUDED, mOccluded); + proto.write(KeyguardPerDisplayProto.KEYGUARD_GOING_AWAY, mKeyguardGoingAway); proto.end(token); } } @@ -691,6 +693,7 @@ class KeyguardController { final long token = proto.start(fieldId); proto.write(AOD_SHOWING, default_state.mAodShowing); proto.write(KEYGUARD_SHOWING, default_state.mKeyguardShowing); + proto.write(KEYGUARD_GOING_AWAY, default_state.mKeyguardGoingAway); writeDisplayStatesToProto(proto, KEYGUARD_PER_DISPLAY); proto.end(token); }