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

Commit 88e165c8 authored by Winson Chiu's avatar Winson Chiu
Browse files

Remove PackageInfoWithoutStateUtils

Now that parsing is entirely server side, there is no point in having
the utilities and interfaces split between with and without state.

This merges the without state implementation down into the with state
variant to consolidate the code and remove unused code paths.

Test: atest CompatibilityModeTest
Test: atest PackageParserLegacyCoreTest
Test: atest PackageParserTest

Change-Id: Ie238338a4cf1eb8ab10c9e22c9234a437b5fab7d
parent 3173369c
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.perftests.utils.BenchmarkState
import android.perftests.utils.PerfStatusReporter
import androidx.test.filters.LargeTest
import com.android.internal.util.ConcurrentUtils
import com.android.server.pm.pkg.parsing.ParsingPackageImpl
import com.android.server.pm.parsing.pkg.PackageImpl
import com.android.server.pm.pkg.parsing.ParsingPackageUtils
import libcore.io.IoUtils
import org.junit.Rule
@@ -190,7 +190,7 @@ public class PackageParsingPerfTest {
    }

    class ParallelParser2(cacher: PackageCacher2? = null)
        : ParallelParser<ParsingPackageImpl>(cacher) {
        : ParallelParser<PackageImpl>(cacher) {
        val input = ThreadLocal.withInitial {
            // For testing, just disable enforcement to avoid hooking up to compat framework
            ParseTypeImpl(ParseInput.Callback { _, _, _ -> false })
@@ -208,17 +208,18 @@ public class PackageParsingPerfTest {
                    path: String,
                    manifestArray: TypedArray,
                    isCoreApp: Boolean
                ) = ParsingPackageImpl(
                ) = PackageImpl(
                    packageName,
                    baseApkPath,
                    path,
                    manifestArray
                    manifestArray,
                    isCoreApp,
                )
            })

        override fun parseImpl(file: File) =
                parser.parsePackage(input.get()!!.reset(), file, 0, null).result
                        as ParsingPackageImpl
                        as PackageImpl
    }

    abstract class PackageCacher<PackageType : Parcelable>(private val cacheDir: File) {
@@ -274,8 +275,8 @@ public class PackageParsingPerfTest {
    /**
     * Re-implementation of the server side PackageCacher, as it's inaccessible here.
     */
    class PackageCacher2(cacheDir: File) : PackageCacher<ParsingPackageImpl>(cacheDir) {
    class PackageCacher2(cacheDir: File) : PackageCacher<PackageImpl>(cacheDir) {
        override fun fromParcel(parcel: Parcel) =
            ParsingPackageImpl(parcel)
            PackageImpl(parcel)
    }
}
+5 −7
Original line number Diff line number Diff line
@@ -143,7 +143,6 @@ import com.android.server.pm.pkg.component.ParsedIntentInfo;
import com.android.server.pm.pkg.component.ParsedMainComponent;
import com.android.server.pm.pkg.component.ParsedProvider;
import com.android.server.pm.pkg.component.ParsedService;
import com.android.server.pm.pkg.parsing.PackageInfoWithoutStateUtils;
import com.android.server.pm.resolution.ComponentResolverApi;
import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
import com.android.server.pm.verify.domain.DomainVerificationUtils;
@@ -905,7 +904,7 @@ public class ComputerEngine implements Computer {
                    a, flags, ps.getUserStateOrDefault(userId), userId, ps);
        }
        if (resolveComponentName().equals(component)) {
            return PackageInfoWithoutStateUtils.generateDelegateActivityInfo(mResolveActivity,
            return PackageInfoUtils.generateDelegateActivityInfo(mResolveActivity,
                    flags, PackageUserStateInternal.DEFAULT, userId);
        }
        return null;
@@ -1591,8 +1590,7 @@ public class ComputerEngine implements Computer {
            return result;
        }
        final ResolveInfo ephemeralInstaller = new ResolveInfo(mInstantAppInstallerInfo);
        ephemeralInstaller.activityInfo =
                PackageInfoWithoutStateUtils.generateDelegateActivityInfo(
        ephemeralInstaller.activityInfo = PackageInfoUtils.generateDelegateActivityInfo(
                instantAppInstallerActivity(), 0 /*flags*/,
                ps.getUserStateOrDefault(userId), userId);
        ephemeralInstaller.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART
@@ -1681,7 +1679,7 @@ public class ComputerEngine implements Computer {
            ai.setVersionCode(ps.getVersionCode());
            ai.flags = ps.getFlags();
            ai.privateFlags = ps.getPrivateFlags();
            pi.applicationInfo = PackageInfoWithoutStateUtils.generateDelegateApplicationInfo(
            pi.applicationInfo = PackageInfoUtils.generateDelegateApplicationInfo(
                    ai, flags, state, userId);

            if (DEBUG_PACKAGE_INFO) {
+3 −4
Original line number Diff line number Diff line
@@ -116,7 +116,6 @@ import com.android.server.pm.pkg.component.ParsedComponent;
import com.android.server.pm.pkg.component.ParsedIntentInfo;
import com.android.server.pm.pkg.component.ParsedPermission;
import com.android.server.pm.pkg.component.ParsedProcess;
import com.android.server.pm.pkg.parsing.PackageInfoWithoutStateUtils;
import com.android.server.pm.resolution.ComponentResolver;
import com.android.server.pm.verify.domain.DomainVerificationLegacySettings;
import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
@@ -2687,8 +2686,8 @@ public final class Settings implements Watchable, Snappable {
            for (final PackageSetting pkg : mPackages.values()) {
                // TODO(b/135203078): This doesn't handle multiple users
                final String dataPath = pkg.getPkg() == null ? null :
                        PackageInfoWithoutStateUtils.getDataDir(pkg.getPkg(),
                                UserHandle.USER_SYSTEM).getAbsolutePath();
                        PackageInfoUtils.getDataDir(pkg.getPkg(), UserHandle.USER_SYSTEM)
                                .getAbsolutePath();

                if (pkg.getPkg() == null || dataPath == null) {
                    if (!"android".equals(pkg.getPackageName())) {
@@ -4619,7 +4618,7 @@ public final class Settings implements Watchable, Snappable {
                pw.append(prefix).append("  queriesIntents=")
                        .println(ps.getPkg().getQueriesIntents());
            }
            File dataDir = PackageInfoWithoutStateUtils.getDataDir(pkg, UserHandle.myUserId());
            File dataDir = PackageInfoUtils.getDataDir(pkg, UserHandle.myUserId());
            pw.print(prefix); pw.print("  dataDir="); pw.println(dataDir.getAbsolutePath());
            pw.print(prefix); pw.print("  supportsScreens=[");
            boolean first = true;
+2 −2
Original line number Diff line number Diff line
@@ -53,8 +53,8 @@ import com.android.server.LocalServices;
import com.android.server.pm.Installer;
import com.android.server.pm.Installer.InstallerException;
import com.android.server.pm.PackageManagerServiceCompilerMapping;
import com.android.server.pm.parsing.PackageInfoUtils;
import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.pkg.parsing.PackageInfoWithoutStateUtils;

import dalvik.system.DexFile;
import dalvik.system.VMRuntime;
@@ -488,7 +488,7 @@ public class ArtManagerService extends android.content.pm.dex.IArtManager.Stub {
            final String packageName = pkg.getPackageName();
            final String apkPath = pkg.getBaseApkPath();
            // TODO(b/143971007): Use a cross-user directory
            File dataDir = PackageInfoWithoutStateUtils.getDataDir(pkg, UserHandle.myUserId());
            File dataDir = PackageInfoUtils.getDataDir(pkg, UserHandle.myUserId());
            final String outDexFile = dataDir.getAbsolutePath() + "/code_cache/compiled_view.dex";
            if (pkg.isPrivileged() || pkg.isUseEmbeddedDex()
                    || pkg.isDefaultToDeviceProtectedStorage()) {
+2 −2
Original line number Diff line number Diff line
@@ -16,13 +16,13 @@

package com.android.server.pm.dex;

import com.android.server.pm.pkg.parsing.PackageInfoWithoutStateUtils;
import android.os.Binder;
import android.os.UserHandle;
import android.util.Log;

import com.android.internal.annotations.GuardedBy;
import com.android.server.pm.Installer;
import com.android.server.pm.parsing.PackageInfoUtils;
import com.android.server.pm.parsing.pkg.AndroidPackage;

import java.io.File;
@@ -42,7 +42,7 @@ public class ViewCompiler {
            final String packageName = pkg.getPackageName();
            final String apkPath = pkg.getBaseApkPath();
            // TODO(b/143971007): Use a cross-user directory
            File dataDir = PackageInfoWithoutStateUtils.getDataDir(pkg, UserHandle.myUserId());
            File dataDir = PackageInfoUtils.getDataDir(pkg, UserHandle.myUserId());
            final String outDexFile = dataDir.getAbsolutePath() + "/code_cache/compiled_view.dex";
            Log.i("PackageManager", "Compiling layouts in " + packageName + " (" + apkPath +
                ") to " + outDexFile);
Loading