Merge "Add more packages to Settings#mInstallerPackages."

This commit is contained in:
Alan Stokes
2020-01-08 09:37:36 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 24 deletions

View File

@@ -13452,9 +13452,7 @@ public class PackageManagerService extends IPackageManager.Stub
// Okay!
targetPackageSetting.setInstallerPackageName(installerPackageName);
if (installerPackageName != null) {
mSettings.mInstallerPackages.add(installerPackageName);
}
mSettings.addInstallerPackageNames(targetPackageSetting.installSource);
scheduleWriteSettingsLocked();
}
}
@@ -15160,7 +15158,8 @@ public class PackageManagerService extends IPackageManager.Stub
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "updateSettings");
final String pkgName = pkg.getPackageName();
final String installerPackageName = installArgs.installSource.installerPackageName;
final InstallSource installSource = installArgs.installSource;
final String installerPackageName = installSource.installerPackageName;
final int[] installedForUsers = res.origUsers;
final int installReason = installArgs.installReason;
@@ -15171,7 +15170,7 @@ public class PackageManagerService extends IPackageManager.Stub
// For system-bundled packages, we assume that installing an upgraded version
// of the package implies that the user actually wants to run that new code,
// so we enable the package.
PackageSetting ps = mSettings.mPackages.get(pkgName);
final PackageSetting ps = mSettings.mPackages.get(pkgName);
final int userId = installArgs.user.getIdentifier();
if (ps != null) {
if (isSystemApp(pkg)) {
@@ -15208,8 +15207,8 @@ public class PackageManagerService extends IPackageManager.Stub
ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, userId, installerPackageName);
}
ps.setInstallSource(installArgs.installSource);
ps.setInstallSource(installSource);
mSettings.addInstallerPackageNames(installSource);
// When replacing an existing package, preserve the original install reason for all
// users that had the package installed before.
@@ -15239,7 +15238,6 @@ public class PackageManagerService extends IPackageManager.Stub
res.name = pkgName;
res.uid = pkg.getUid();
res.pkg = pkg;
mSettings.setInstallerPackageName(pkgName, installerPackageName);
res.setReturnCode(PackageManager.INSTALL_SUCCEEDED);
//to update install status
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "writeSettings");

View File

@@ -280,8 +280,11 @@ public final class Settings {
/** Map from package name to settings */
final ArrayMap<String, PackageSetting> mPackages = new ArrayMap<>();
/** List of packages that installed other packages */
final ArraySet<String> mInstallerPackages = new ArraySet<>();
/**
* List of packages that were involved in installing other packages, i.e. are listed
* in at least one app's InstallSource.
*/
private final ArraySet<String> mInstallerPackages = new ArraySet<>();
/** Map from package name to appId and excluded userids */
private final ArrayMap<String, KernelPackageState> mKernelMapping = new ArrayMap<>();
@@ -441,16 +444,6 @@ public final class Settings {
return mPermissions.canPropagatePermissionToInstantApp(permName);
}
void setInstallerPackageName(String pkgName, String installerPkgName) {
PackageSetting p = mPackages.get(pkgName);
if (p != null) {
p.setInstallerPackageName(installerPkgName);
if (installerPkgName != null) {
mInstallerPackages.add(installerPkgName);
}
}
}
/** Gets and optionally creates a new shared user id. */
SharedUserSetting getSharedUserLPw(String name, int pkgFlags, int pkgPrivateFlags,
boolean create) throws PackageManagerException {
@@ -3777,9 +3770,10 @@ public final class Settings {
}
if (packageSetting != null) {
packageSetting.uidError = "true".equals(uidError);
packageSetting.installSource = InstallSource.create(
InstallSource installSource = InstallSource.create(
installInitiatingPackageName, installOriginatingPackageName,
installerPackageName, "true".equals(isOrphaned));
packageSetting.installSource = installSource;
packageSetting.volumeUuid = volumeUuid;
packageSetting.categoryHint = categoryHint;
packageSetting.legacyNativeLibraryPathString = legacyNativeLibraryPathStr;
@@ -3809,9 +3803,7 @@ public final class Settings {
packageSetting.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, 0, null);
}
if (installerPackageName != null) {
mInstallerPackages.add(installerPackageName);
}
addInstallerPackageNames(installSource);
int outerDepth = parser.getDepth();
int type;
@@ -3870,6 +3862,18 @@ public final class Settings {
}
}
void addInstallerPackageNames(InstallSource installSource) {
if (installSource.installerPackageName != null) {
mInstallerPackages.add(installSource.installerPackageName);
}
if (installSource.initiatingPackageName != null) {
mInstallerPackages.add(installSource.initiatingPackageName);
}
if (installSource.originatingPackageName != null) {
mInstallerPackages.add(installSource.originatingPackageName);
}
}
private void readDisabledComponentsLPw(PackageSettingBase packageSetting, XmlPullParser parser,
int userId) throws IOException, XmlPullParserException {
int outerDepth = parser.getDepth();