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

Commit 9ebd54d1 authored by Rhed Jao's avatar Rhed Jao Committed by Android (Google) Code Review
Browse files

Merge changes I761a9e5c,I7f03720f

* changes:
  Move shared library info out of PackageManagerService (3/n)
  Move shared library info out of PackageManagerService (2/n)
parents e67f2a5b 35276de5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4788,7 +4788,7 @@ public class ComputerEngine implements Computer {
    @Override
    public List<PackageStateInternal> findSharedNonSystemLibraries(
            @NonNull PackageStateInternal pkgSetting) {
        List<SharedLibraryInfo> deps = SharedLibraryHelper.findSharedLibraries(pkgSetting);
        List<SharedLibraryInfo> deps = SharedLibraryUtils.findSharedLibraries(pkgSetting);
        if (!deps.isEmpty()) {
            List<PackageStateInternal> retValue = new ArrayList<>();
            for (SharedLibraryInfo info : deps) {
+1 −1
Original line number Diff line number Diff line
@@ -379,7 +379,7 @@ final class DexOptHelper {
        // at boot, or background job), the passed 'targetCompilerFilter' stays the same,
        // and the first package that uses the library will dexopt it. The
        // others will see that the compiled code for the library is up to date.
        Collection<SharedLibraryInfo> deps = SharedLibraryHelper.findSharedLibraries(pkgSetting);
        Collection<SharedLibraryInfo> deps = SharedLibraryUtils.findSharedLibraries(pkgSetting);
        final String[] instructionSets = getAppDexInstructionSets(
                AndroidPackageUtils.getPrimaryCpuAbi(p, pkgSetting),
                AndroidPackageUtils.getSecondaryCpuAbi(p, pkgSetting));
+8 −26
Original line number Diff line number Diff line
@@ -894,8 +894,6 @@ final class InstallPackageHelper {
        final Map<String, PackageInstalledInfo> installResults = new ArrayMap<>(requests.size());
        final Map<String, PrepareResult> prepareResults = new ArrayMap<>(requests.size());
        final Map<String, Settings.VersionInfo> versionInfos = new ArrayMap<>(requests.size());
        final Map<String, PackageSetting> lastStaticSharedLibSettings =
                new ArrayMap<>(requests.size());
        final Map<String, Boolean> createdAppId = new ArrayMap<>(requests.size());
        boolean success = false;
        try {
@@ -955,35 +953,22 @@ final class InstallPackageHelper {
                    createdAppId.put(packageName, optimisticallyRegisterAppId(result));
                    versionInfos.put(result.mPkgSetting.getPkg().getPackageName(),
                            mPm.getSettingsVersionForPackage(result.mPkgSetting.getPkg()));
                    if (result.mStaticSharedLibraryInfo != null) {
                        final PackageSetting staticSharedLibLatestVersionSetting =
                                mSharedLibraries.getStaticSharedLibLatestVersionSetting(result);
                        if (staticSharedLibLatestVersionSetting != null) {
                            lastStaticSharedLibSettings.put(
                                    result.mPkgSetting.getPkg().getPackageName(),
                                    staticSharedLibLatestVersionSetting);
                        }
                    }
                } catch (PackageManagerException e) {
                    request.mInstallResult.setError("Scanning Failed.", e);
                    return;
                }
            }
            ReconcileRequest
                    reconcileRequest = new ReconcileRequest(preparedScans, installArgs,
                    installResults,
                    prepareResults,
                    mSharedLibraries.getAll(),
                    Collections.unmodifiableMap(mPm.mPackages), versionInfos,
                    lastStaticSharedLibSettings);
            ReconcileRequest reconcileRequest = new ReconcileRequest(preparedScans, installArgs,
                    installResults, prepareResults,
                    Collections.unmodifiableMap(mPm.mPackages), versionInfos);
            CommitRequest commitRequest = null;
            synchronized (mPm.mLock) {
                Map<String, ReconciledPackage> reconciledPackages;
                try {
                    Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "reconcilePackages");
                    reconciledPackages = ReconcilePackageUtils.reconcilePackages(
                            reconcileRequest, mPm.mSettings.getKeySetManagerService(),
                            mPm.mInjector);
                            reconcileRequest, mSharedLibraries,
                            mPm.mSettings.getKeySetManagerService());
                } catch (ReconcileFailure e) {
                    for (InstallRequest request : requests) {
                        request.mInstallResult.setError("Reconciliation failed...", e);
@@ -3586,15 +3571,12 @@ final class InstallPackageHelper {
                    final String pkgName = scanResult.mPkgSetting.getPackageName();
                    final ReconcileRequest reconcileRequest = new ReconcileRequest(
                            Collections.singletonMap(pkgName, scanResult),
                            mSharedLibraries.getAll(), mPm.mPackages,
                            Collections.singletonMap(pkgName,
                                    mPm.getSettingsVersionForPackage(parsedPackage)),
                            mPm.mPackages,
                            Collections.singletonMap(pkgName,
                                    mSharedLibraries.getStaticSharedLibLatestVersionSetting(
                                            scanResult)));
                                    mPm.getSettingsVersionForPackage(parsedPackage)));
                    final Map<String, ReconciledPackage> reconcileResult =
                            ReconcilePackageUtils.reconcilePackages(reconcileRequest,
                                    mPm.mSettings.getKeySetManagerService(), mPm.mInjector);
                                    mSharedLibraries, mPm.mSettings.getKeySetManagerService());
                    appIdCreated = optimisticallyRegisterAppId(scanResult);
                    commitReconciledScanResultLocked(reconcileResult.get(pkgName),
                            mPm.mUserManager.getUserIds());
+9 −11
Original line number Diff line number Diff line
@@ -42,8 +42,8 @@ import java.util.Map;

final class ReconcilePackageUtils {
    public static Map<String, ReconciledPackage> reconcilePackages(
            final ReconcileRequest request, KeySetManagerService ksms,
            PackageManagerServiceInjector injector)
            final ReconcileRequest request, SharedLibrariesImpl sharedLibraries,
            KeySetManagerService ksms)
            throws ReconcileFailure {
        final Map<String, ScanResult> scannedPackages = request.mScannedPackages;

@@ -67,11 +67,10 @@ final class ReconcilePackageUtils {

            // in the first pass, we'll build up the set of incoming shared libraries
            final List<SharedLibraryInfo> allowedSharedLibInfos =
                    SharedLibraryHelper.getAllowedSharedLibInfos(scanResult,
                            request.mSharedLibrarySource);
                    sharedLibraries.getAllowedSharedLibInfos(scanResult);
            if (allowedSharedLibInfos != null) {
                for (SharedLibraryInfo info : allowedSharedLibInfos) {
                    if (!SharedLibraryHelper.addSharedLibraryToPackageVersionMap(
                    if (!SharedLibraryUtils.addSharedLibraryToPackageVersionMap(
                            incomingSharedLibraries, info)) {
                        throw new ReconcileFailure("Shared Library " + info.getName()
                                + " is being installed twice in this set!");
@@ -113,7 +112,8 @@ final class ReconcilePackageUtils {

            final PackageSetting disabledPkgSetting = scanResult.mRequest.mDisabledPkgSetting;
            final PackageSetting lastStaticSharedLibSetting =
                    request.mLastStaticSharedLibSettings.get(installPackageName);
                    scanResult.mStaticSharedLibraryInfo == null ? null
                            : sharedLibraries.getStaticSharedLibLatestVersionSetting(scanResult);
            final PackageSetting signatureCheckPs =
                    (prepareResult != null && lastStaticSharedLibSetting != null)
                            ? lastStaticSharedLibSetting
@@ -264,11 +264,9 @@ final class ReconcilePackageUtils {
            }
            try {
                result.get(installPackageName).mCollectedSharedLibraryInfos =
                        SharedLibraryHelper.collectSharedLibraryInfos(
                                scanResult.mRequest.mParsedPackage,
                                combinedPackages, request.mSharedLibrarySource,
                                incomingSharedLibraries, injector.getCompatibility());

                        sharedLibraries.collectSharedLibraryInfos(
                                scanResult.mRequest.mParsedPackage, combinedPackages,
                                incomingSharedLibraries);
            } catch (PackageManagerException e) {
                throw new ReconcileFailure(e.error, e.getMessage());
            }
+3 −15
Original line number Diff line number Diff line
@@ -16,10 +16,7 @@

package com.android.server.pm;

import android.content.pm.SharedLibraryInfo;

import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.utils.WatchedLongSparseArray;

import java.util.Collections;
import java.util.Map;
@@ -37,38 +34,29 @@ final class ReconcileRequest {
    public final Map<String, ScanResult> mScannedPackages;

    public final Map<String, AndroidPackage> mAllPackages;
    public final Map<String, WatchedLongSparseArray<SharedLibraryInfo>> mSharedLibrarySource;
    public final Map<String, InstallArgs> mInstallArgs;
    public final Map<String, PackageInstalledInfo> mInstallResults;
    public final Map<String, PrepareResult> mPreparedPackages;
    public final Map<String, Settings.VersionInfo> mVersionInfos;
    public final Map<String, PackageSetting> mLastStaticSharedLibSettings;

    ReconcileRequest(Map<String, ScanResult> scannedPackages,
            Map<String, InstallArgs> installArgs,
            Map<String, PackageInstalledInfo> installResults,
            Map<String, PrepareResult> preparedPackages,
            Map<String, WatchedLongSparseArray<SharedLibraryInfo>> sharedLibrarySource,
            Map<String, AndroidPackage> allPackages,
            Map<String, Settings.VersionInfo> versionInfos,
            Map<String, PackageSetting> lastStaticSharedLibSettings) {
            Map<String, Settings.VersionInfo> versionInfos) {
        mScannedPackages = scannedPackages;
        mInstallArgs = installArgs;
        mInstallResults = installResults;
        mPreparedPackages = preparedPackages;
        mSharedLibrarySource = sharedLibrarySource;
        mAllPackages = allPackages;
        mVersionInfos = versionInfos;
        mLastStaticSharedLibSettings = lastStaticSharedLibSettings;
    }

    ReconcileRequest(Map<String, ScanResult> scannedPackages,
            Map<String, WatchedLongSparseArray<SharedLibraryInfo>> sharedLibrarySource,
            Map<String, AndroidPackage> allPackages,
            Map<String, Settings.VersionInfo> versionInfos,
            Map<String, PackageSetting> lastStaticSharedLibSettings) {
            Map<String, Settings.VersionInfo> versionInfos) {
        this(scannedPackages, Collections.emptyMap(), Collections.emptyMap(),
                Collections.emptyMap(), sharedLibrarySource, allPackages, versionInfos,
                lastStaticSharedLibSettings);
                Collections.emptyMap(), allPackages, versionInfos);
    }
}
Loading