Merge "Make sure known packages are preinstalled"

This commit is contained in:
TreeHugger Robot
2019-11-22 20:36:56 +00:00
committed by Android (Google) Code Review

View File

@@ -22870,39 +22870,79 @@ public class PackageManagerService extends IPackageManager.Stub
return pkg == null ? null : pkg.packageName;
}
/**
* Only keep package names that refer to {@link PackageParser.Package#isSystem system}
* packages.
*
* @param pkgNames The packages to filter
*
* @return The filtered packages
*/
private @NonNull String[] filterOnlySystemPackages(@Nullable String... pkgNames) {
if (pkgNames == null) {
return ArrayUtils.emptyArray(String.class);
}
ArrayList<String> systemPackageNames = new ArrayList<>(pkgNames.length);
for (String pkgName: pkgNames) {
synchronized (mPackages) {
if (pkgName == null) {
continue;
}
PackageParser.Package pkg = getPackage(pkgName);
if (pkg == null) {
Log.w(TAG, "Could not find package " + pkgName);
continue;
}
if (!pkg.isSystem()) {
Log.w(TAG, pkgName + " is not system");
continue;
}
systemPackageNames.add(pkgName);
}
}
return systemPackageNames.toArray(new String[]{});
}
@Override
public @NonNull String[] getKnownPackageNames(int knownPackage, int userId) {
switch(knownPackage) {
switch (knownPackage) {
case PackageManagerInternal.PACKAGE_BROWSER:
return new String[]{mPermissionManager.getDefaultBrowser(userId)};
case PackageManagerInternal.PACKAGE_INSTALLER:
return new String[]{mRequiredInstallerPackage};
return filterOnlySystemPackages(mRequiredInstallerPackage);
case PackageManagerInternal.PACKAGE_SETUP_WIZARD:
return new String[]{mSetupWizardPackage};
return filterOnlySystemPackages(mSetupWizardPackage);
case PackageManagerInternal.PACKAGE_SYSTEM:
return new String[]{"android"};
case PackageManagerInternal.PACKAGE_VERIFIER:
return new String[]{mRequiredVerifierPackage};
return filterOnlySystemPackages(mRequiredVerifierPackage);
case PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER:
return new String[]{mSystemTextClassifierPackage};
return filterOnlySystemPackages(mSystemTextClassifierPackage);
case PackageManagerInternal.PACKAGE_PERMISSION_CONTROLLER:
return new String[]{mRequiredPermissionControllerPackage};
return filterOnlySystemPackages(mRequiredPermissionControllerPackage);
case PackageManagerInternal.PACKAGE_WELLBEING:
return new String[]{mWellbeingPackage};
return filterOnlySystemPackages(mWellbeingPackage);
case PackageManagerInternal.PACKAGE_DOCUMENTER:
return new String[]{mDocumenterPackage};
return filterOnlySystemPackages(mDocumenterPackage);
case PackageManagerInternal.PACKAGE_CONFIGURATOR:
return new String[]{mConfiguratorPackage};
return filterOnlySystemPackages(mConfiguratorPackage);
case PackageManagerInternal.PACKAGE_INCIDENT_REPORT_APPROVER:
return new String[]{mIncidentReportApproverPackage};
return filterOnlySystemPackages(mIncidentReportApproverPackage);
case PackageManagerInternal.PACKAGE_APP_PREDICTOR:
return new String[]{mAppPredictionServicePackage};
return filterOnlySystemPackages(mAppPredictionServicePackage);
case PackageManagerInternal.PACKAGE_TELEPHONY:
return mTelephonyPackages;
return filterOnlySystemPackages(mTelephonyPackages);
case PackageManagerInternal.PACKAGE_WIFI:
return new String[]{mWifiPackage};
return filterOnlySystemPackages(mWifiPackage);
default:
return ArrayUtils.emptyArray(String.class);
}
return ArrayUtils.emptyArray(String.class);
}
@Override