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

Commit 9de58d22 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Make sure known packages are preinstalled

Fixes: 144602147
Test: Booted
Change-Id: I9f1c9dbe7d12fe091e188b44ccfce32da6190af6
parent 53ed21a4
Loading
Loading
Loading
Loading
+54 −14
Original line number Diff line number Diff line
@@ -22874,40 +22874,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) {