summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author William Loh <wloh@google.com> 2023-05-11 04:14:47 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-05-11 04:14:47 +0000
commitd0b51cec59d15bd48d9867929f9b5c670c431042 (patch)
tree1c8792f3ad45c4604f7611b83bc97b847fa57ca1
parent13da7d799ac6f50252bc31248aadce143b2ebe3f (diff)
parent9fe084508c4acd11b16fa5dbcc9d69b056564541 (diff)
Merge "Fix appMetadataFilePath when restoring system app" into udc-dev am: 2c1d1981db am: 9fe084508c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23140325 Change-Id: Id4a8122c9ec71fa588e55f1d7575e2877995cec6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java14
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerShellCommand.java2
-rw-r--r--services/core/java/com/android/server/pm/Settings.java3
3 files changed, 12 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index be8890bc8786..5979b12e4a30 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -499,13 +499,6 @@ final class InstallPackageHelper {
mPm.setUpCustomResolverActivity(pkg, pkgSetting);
}
- File appMetadataFile = new File(pkgSetting.getPath(), APP_METADATA_FILE_NAME);
- if (appMetadataFile.exists()) {
- pkgSetting.setAppMetadataFilePath(appMetadataFile.getAbsolutePath());
- } else {
- pkgSetting.setAppMetadataFilePath(null);
- }
-
if (pkg.getPackageName().equals("android")) {
mPm.setPlatformPackage(pkg, pkgSetting);
}
@@ -2124,6 +2117,13 @@ final class InstallPackageHelper {
installRequest.setNewUsers(
ps.queryInstalledUsers(mPm.mUserManager.getUserIds(), true));
ps.setUpdateAvailable(false /*updateAvailable*/);
+
+ File appMetadataFile = new File(ps.getPath(), APP_METADATA_FILE_NAME);
+ if (appMetadataFile.exists()) {
+ ps.setAppMetadataFilePath(appMetadataFile.getAbsolutePath());
+ } else {
+ ps.setAppMetadataFilePath(null);
+ }
}
if (installRequest.getReturnCode() == PackageManager.INSTALL_SUCCEEDED) {
mPm.updateSequenceNumberLP(ps, installRequest.getNewUsers());
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 58183f0bc16a..d3f3a69f507d 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -16,6 +16,7 @@
package com.android.server.pm;
+import static android.Manifest.permission.GET_APP_METADATA;
import static android.content.pm.PackageInstaller.LOCATION_DATA_APP;
import static android.content.pm.PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT;
@@ -3576,6 +3577,7 @@ class PackageManagerShellCommand extends ShellCommand {
}
private int runGetAppMetadata() {
+ mContext.enforceCallingOrSelfPermission(GET_APP_METADATA, "getAppMetadataFd");
final PrintWriter pw = getOutPrintWriter();
String pkgName = getNextArgRequired();
ParcelFileDescriptor pfd = null;
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index e0dbcbf27264..f2d1357ac1b5 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -921,6 +921,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
p.getUsesStaticLibraries(), p.getUsesStaticLibrariesVersions(), p.getMimeGroups(),
mDomainVerificationManager.generateNewId());
if (ret != null) {
+ ret.setAppMetadataFilePath(p.getAppMetadataFilePath());
ret.getPkgState().setUpdatedSystemApp(false);
}
mDisabledSysPackages.remove(name);
@@ -3700,6 +3701,8 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
ps.setSharedUserAppId(sharedUserAppId);
}
+ ps.setAppMetadataFilePath(parser.getAttributeValue(null, "appMetadataFilePath"));
+
int outerDepth = parser.getDepth();
int type;
while ((type = parser.next()) != XmlPullParser.END_DOCUMENT