summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/ScreenDecorations.java15
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java30
2 files changed, 39 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index 4dc227c91177..d3196f6c03e1 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -566,12 +566,8 @@ public class ScreenDecorations implements CoreStartable, Tunable , Dumpable {
List<DecorProvider> decorProviders = getProviders(mHwcScreenDecorationSupport != null);
removeRedundantOverlayViews(decorProviders);
- if (mHwcScreenDecorationSupport != null) {
- createHwcOverlay();
- } else {
- removeHwcOverlay();
- }
-
+ // Overlays are added in 2 steps: first the standard overlays. Then, if applicable, the
+ // HWC overlays. This ensures that the HWC overlays are always on top
boolean[] hasCreatedOverlay = new boolean[BOUNDS_POSITION_LENGTH];
final boolean shouldOptimizeVisibility = shouldOptimizeVisibility();
Integer bound;
@@ -588,6 +584,13 @@ public class ScreenDecorations implements CoreStartable, Tunable , Dumpable {
}
}
+ // Adding the HWC overlays second so they are on top by default
+ if (mHwcScreenDecorationSupport != null) {
+ createHwcOverlay();
+ } else {
+ removeHwcOverlay();
+ }
+
if (shouldOptimizeVisibility) {
mDotViewController.setShowingListener(mPrivacyDotShowingListener);
} else {
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index f72e8ab353bc..7312b4282d74 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -248,6 +248,15 @@ final class InstallPackageHelper {
*/
final private HashMap<String, String> mPackagesToBeDisabled = new HashMap<>();
+ /**
+ * Tracks packages that need to be disabled for QSPA enabled taregts.
+ * List of packages path on the file system.
+ */
+ final private List<String> mPackagesPathToBeDisabledForQSPA = new ArrayList<String>();
+ final private boolean mQspaEnabled = SystemProperties.getBoolean(
+ "ro.vendor.config.qspa.apps", false);
+
+
// TODO(b/198166813): remove PMS dependency
InstallPackageHelper(PackageManagerService pm, AppDataHelper appDataHelper) {
mPm = pm;
@@ -265,6 +274,18 @@ final class InstallPackageHelper {
mViewCompiler = pm.mInjector.getViewCompiler();
mSharedLibraries = pm.mInjector.getSharedLibrariesImpl();
mUpdateOwnershipHelper = pm.mInjector.getUpdateOwnershipHelper();
+
+ if (mQspaEnabled) {
+ mPackagesPathToBeDisabledForQSPA.add("/system_ext/priv-app/SystemUI");
+ mPackagesPathToBeDisabledForQSPA.add("/system_ext/priv-app/Launcher3QuickStepGo");
+ mPackagesPathToBeDisabledForQSPA.add("/system_ext/priv-app/Launcher3Go");
+ mPackagesPathToBeDisabledForQSPA.add("/system/app/PrintSpooler");
+ mPackagesPathToBeDisabledForQSPA.add("/system/priv-app/StatementService");
+ mPackagesPathToBeDisabledForQSPA.add("/product/app/Calendar");
+ } else {
+ mPackagesPathToBeDisabledForQSPA.add("/system_ext/app/HeadlessLauncher");
+ }
+
}
InstallPackageHelper(PackageManagerService pm) {
@@ -3767,6 +3788,15 @@ final class InstallPackageHelper {
cacher.cleanCachedResult(file);
}
+
+ if (mPackagesPathToBeDisabledForQSPA != null &&
+ mPackagesPathToBeDisabledForQSPA.contains(file.toString())) {
+ // Ignore entries contained in {@link #mPackagesPathToBeDisabledForQSPA}
+ Slog.d(TAG, "QSPA is " + mQspaEnabled + " ignoring package for install : " + file);
+ continue;
+ }
+
+
if (mPackagesToBeDisabled.values() != null &&
(mPackagesToBeDisabled.values().contains(file.toString()) ||
mPackagesToBeDisabled.values().stream().anyMatch(file.toString()::contains))) {