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

Commit 33050ed1 authored by Pawan Wagh's avatar Pawan Wagh
Browse files

Pass down the installSource to initial scan request

Initiating package will be null and only the source of truth
is InstallRequest. Passing down the install source to scan request.

Test: m PageSizeCompatWarningsTest && atest -c PageSizeCompatWarningsTest
Flag: EXEMPT test_only
Bug: 443089413
Change-Id: Ieec96f2e7319ff15da8aaf483ea2c19c006dd683
parent 3e8cf0d7
Loading
Loading
Loading
Loading
+15 −13
Original line number Diff line number Diff line
@@ -1297,7 +1297,7 @@ final class InstallPackageHelper {
                final ScanResult scanResult = scanPackageTraced(request.getParsedPackage(),
                        request.getParseFlags(), request.getScanFlags(),
                        System.currentTimeMillis(), request.getUser(),
                        request.getAbiOverride());
                        request.getAbiOverride(), request.getInstallSource());
                request.setScanResult(scanResult);
                request.onScanFinished();
                if (!scannedPackages.add(packageName)) {
@@ -4206,13 +4206,14 @@ final class InstallPackageHelper {
    }

    private ScanResult scanPackageTraced(ParsedPackage parsedPackage,
            final @ParsingPackageUtils.ParseFlags int parseFlags,
            @PackageManagerService.ScanFlags int scanFlags, long currentTime,
            @Nullable UserHandle user, String cpuAbiOverride) throws PackageManagerException {
            @ParsingPackageUtils.ParseFlags int parseFlags,
            @PackageManagerService.ScanFlags int scanFlags, long scanTime, UserHandle user,
            @Nullable String cpuAbiOverride, @Nullable InstallSource installSource)
            throws PackageManagerException {
        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "scanPackage");
        try {
            return scanPackageNew(parsedPackage, parseFlags, scanFlags, currentTime, user,
                    cpuAbiOverride);
            return scanPackageNew(parsedPackage, parseFlags, scanFlags, scanTime, user,
                    cpuAbiOverride, installSource);
        } finally {
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
        }
@@ -4221,7 +4222,7 @@ final class InstallPackageHelper {
    private ScanRequest prepareInitialScanRequest(@NonNull ParsedPackage parsedPackage,
            @ParsingPackageUtils.ParseFlags int parseFlags,
            @PackageManagerService.ScanFlags int scanFlags,
            @Nullable UserHandle user, String cpuAbiOverride)
            @Nullable UserHandle user, String cpuAbiOverride, @Nullable InstallSource installSource)
            throws PackageManagerException {
        final AndroidPackage platformPackage;
        final String realPkgName;
@@ -4278,8 +4279,8 @@ final class InstallPackageHelper {

        final boolean isPlatformPackage = platformPackage != null
                && platformPackage.getPackageName().equals(parsedPackage.getPackageName());
        final  String initiatingPackage = installedPkgSetting != null
                ? installedPkgSetting.getInstallSource().mInitiatingPackageName : null;
        final  String initiatingPackage = installSource != null
                ? installSource.mInitiatingPackageName : null;
        // Run 16 KB alignment checks on 4 KB device if evaluated as true for new installations.
        // To prevent deadlock, move the call of SettingsProvider out of mLock block
        final boolean enableAlignmentChecks = ScanPackageUtils.enableAlignmentChecks(
@@ -4298,10 +4299,10 @@ final class InstallPackageHelper {
    private ScanResult scanPackageNew(@NonNull ParsedPackage parsedPackage,
            final @ParsingPackageUtils.ParseFlags int parseFlags,
            @PackageManagerService.ScanFlags int scanFlags, long currentTime,
            @Nullable UserHandle user, String cpuAbiOverride)
            @Nullable UserHandle user, String cpuAbiOverride, @Nullable InstallSource installSource)
            throws PackageManagerException {
        final ScanRequest initialScanRequest = prepareInitialScanRequest(parsedPackage, parseFlags,
                scanFlags, user, cpuAbiOverride);
                scanFlags, user, cpuAbiOverride, installSource);
        final PackageSetting installedPkgSetting = initialScanRequest.mPkgSetting;
        final PackageSetting disabledPkgSetting = initialScanRequest.mDisabledPkgSetting;

@@ -4341,7 +4342,7 @@ final class InstallPackageHelper {
            final boolean scanSystemPartition =
                (parseFlags & ParsingPackageUtils.PARSE_IS_SYSTEM_DIR) != 0;
            final ScanRequest initialScanRequest = prepareInitialScanRequest(parsedPackage,
                    parseFlags, scanFlags, user, null);
                    parseFlags, scanFlags, user, null /*cpuAbiOverride*/, null /*installSource*/);
            final PackageSetting installedPkgSetting = initialScanRequest.mPkgSetting;
            final PackageSetting originalPkgSetting = initialScanRequest.mOriginalPkgSetting;
            final PackageSetting pkgSetting =
@@ -4583,7 +4584,8 @@ final class InstallPackageHelper {

            final long firstInstallTime = System.currentTimeMillis();
            final ScanResult scanResult = scanPackageNew(parsedPackage, parseFlags,
                    scanFlags | SCAN_UPDATE_SIGNATURE, firstInstallTime, user, null);
                    scanFlags | SCAN_UPDATE_SIGNATURE, firstInstallTime, user,
                    null /*cpuAbiOverride*/, null /*installSource*/);
            // Set scan outcome as successful for InitAppScanMetrics.
            metrics.setInitAppScanOutcome(PackageManager.INSTALL_SUCCEEDED);
            return new Pair<>(scanResult, shouldHideSystemApp);