Merge "Keep overlay info for the android app info up to date" into tm-dev am: e0142a3d06 am: f061ab3590
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18609510 Change-Id: I723e3b295edf29d9b1e882bce842cd277122557e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -803,6 +803,13 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|||||||
private AndroidPackage mPlatformPackage;
|
private AndroidPackage mPlatformPackage;
|
||||||
ComponentName mCustomResolverComponentName;
|
ComponentName mCustomResolverComponentName;
|
||||||
|
|
||||||
|
// Recorded overlay paths configuration for the Android app info.
|
||||||
|
private String[] mPlatformPackageOverlayPaths = null;
|
||||||
|
private String[] mPlatformPackageOverlayResourceDirs = null;
|
||||||
|
// And the same paths for the replaced resolver activity package
|
||||||
|
private String[] mReplacedResolverPackageOverlayPaths = null;
|
||||||
|
private String[] mReplacedResolverPackageOverlayResourceDirs = null;
|
||||||
|
|
||||||
private boolean mResolverReplaced = false;
|
private boolean mResolverReplaced = false;
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@@ -6562,11 +6569,61 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (userId == UserHandle.USER_SYSTEM) {
|
||||||
|
// Keep the overlays in the system application info (and anything special cased as well)
|
||||||
|
// up to date to make sure system ui is themed correctly.
|
||||||
|
maybeUpdateSystemOverlays(targetPackageName, newOverlayPaths);
|
||||||
|
}
|
||||||
|
|
||||||
invalidatePackageInfoCache();
|
invalidatePackageInfoCache();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void maybeUpdateSystemOverlays(String targetPackageName, OverlayPaths newOverlayPaths) {
|
||||||
|
if (!mResolverReplaced) {
|
||||||
|
if (targetPackageName.equals("android")) {
|
||||||
|
if (newOverlayPaths == null) {
|
||||||
|
mPlatformPackageOverlayPaths = null;
|
||||||
|
mPlatformPackageOverlayResourceDirs = null;
|
||||||
|
} else {
|
||||||
|
mPlatformPackageOverlayPaths = newOverlayPaths.getOverlayPaths().toArray(
|
||||||
|
new String[0]);
|
||||||
|
mPlatformPackageOverlayResourceDirs = newOverlayPaths.getResourceDirs().toArray(
|
||||||
|
new String[0]);
|
||||||
|
}
|
||||||
|
applyUpdatedSystemOverlayPaths();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (targetPackageName.equals(mResolveActivity.applicationInfo.packageName)) {
|
||||||
|
if (newOverlayPaths == null) {
|
||||||
|
mReplacedResolverPackageOverlayPaths = null;
|
||||||
|
mReplacedResolverPackageOverlayResourceDirs = null;
|
||||||
|
} else {
|
||||||
|
mReplacedResolverPackageOverlayPaths =
|
||||||
|
newOverlayPaths.getOverlayPaths().toArray(new String[0]);
|
||||||
|
mReplacedResolverPackageOverlayResourceDirs =
|
||||||
|
newOverlayPaths.getResourceDirs().toArray(new String[0]);
|
||||||
|
}
|
||||||
|
applyUpdatedSystemOverlayPaths();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyUpdatedSystemOverlayPaths() {
|
||||||
|
if (mAndroidApplication == null) {
|
||||||
|
Slog.i(TAG, "Skipped the AndroidApplication overlay paths update - no app yet");
|
||||||
|
} else {
|
||||||
|
mAndroidApplication.overlayPaths = mPlatformPackageOverlayPaths;
|
||||||
|
mAndroidApplication.resourceDirs = mPlatformPackageOverlayResourceDirs;
|
||||||
|
}
|
||||||
|
if (mResolverReplaced) {
|
||||||
|
mResolveActivity.applicationInfo.overlayPaths = mReplacedResolverPackageOverlayPaths;
|
||||||
|
mResolveActivity.applicationInfo.resourceDirs =
|
||||||
|
mReplacedResolverPackageOverlayResourceDirs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void enforceAdjustRuntimePermissionsPolicyOrUpgradeRuntimePermissions(
|
private void enforceAdjustRuntimePermissionsPolicyOrUpgradeRuntimePermissions(
|
||||||
@NonNull String message) {
|
@NonNull String message) {
|
||||||
if (mContext.checkCallingOrSelfPermission(
|
if (mContext.checkCallingOrSelfPermission(
|
||||||
@@ -7043,6 +7100,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|||||||
}
|
}
|
||||||
PackageManagerService.onChanged();
|
PackageManagerService.onChanged();
|
||||||
}
|
}
|
||||||
|
applyUpdatedSystemOverlayPaths();
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationInfo getCoreAndroidApplication() {
|
ApplicationInfo getCoreAndroidApplication() {
|
||||||
|
|||||||
Reference in New Issue
Block a user