Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4658f49c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make sure known packages are preinstalled"

parents 8443c5e9 9de58d22
Loading
Loading
Loading
Loading
+54 −14
Original line number Diff line number Diff line
@@ -22870,40 +22870,80 @@ 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) {
                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);
            }
        }
        @Override
        public boolean isResolveActivityComponent(ComponentInfo component) {