From c5db55023bf8b0ce3773e477635818ca86a9ac15 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Thu, 1 Apr 2021 19:41:46 +0800 Subject: [PATCH] Ignore windowDisablePreview when launching from system surface. Ignore windowDisablePreview flag if the activity is launched from system surface, which include system uid, home and system ui. Bug: 182879994 Test: CTS pass without been affect. Change-Id: I7b9eaf92aa59a7dea0e5ce4f18c847adedd5b742 --- .../java/com/android/server/wm/ActivityRecord.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 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 01a46b311740c..376595b95c9d8 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1887,6 +1887,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return selectedTheme; } + // Whether this activity launched from system or Home or SystemUI + private boolean launchedFromSystemSurface() { + return launchedFromUid == Process.SYSTEM_UID || launchedFromUid == Process.ROOT_UID + || launchedFromHomeProcess + || mAtmService.getSysUiServiceComponentLocked().getPackageName().equals( + launchedFromPackage); + } + private boolean validateStartingWindowTheme(String pkg, int theme) { // If this is a translucent window, then don't show a starting window -- the current // effect (a full-screen opaque starting window that fades away to the real contents @@ -1913,7 +1921,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A "Translucent=%s Floating=%s ShowWallpaper=%s Disable=%s", windowIsTranslucent, windowIsFloating, windowShowWallpaper, windowDisableStarting); - if (windowIsTranslucent || windowIsFloating || windowDisableStarting) { + // If this activity is launched from system surface, ignore windowDisableStarting + if (windowIsTranslucent || windowIsFloating + || (windowDisableStarting && !launchedFromSystemSurface())) { return false; } if (windowShowWallpaper