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

Commit c7cd73aa authored by Winson Chiu's avatar Winson Chiu Committed by Android (Google) Code Review
Browse files

Merge "Optimization: remove duplicated flags computations for getInstalledPackages" into rvc-dev

parents b31a5f43 c7f8e758
Loading
Loading
Loading
Loading
+0 −3
Original line number Original line Diff line number Diff line
@@ -350,9 +350,6 @@ public class PackageInfoWithoutStateUtils {
        // TODO(b/135203078): Consolidate the data directory logic, remove initForUser
        // TODO(b/135203078): Consolidate the data directory logic, remove initForUser
        ai.initForUser(userId);
        ai.initForUser(userId);


        ai.flags = appInfoFlags(pkg);
        ai.privateFlags = appInfoPrivateFlags(pkg);

        if ((flags & PackageManager.GET_META_DATA) == 0) {
        if ((flags & PackageManager.GET_META_DATA) == 0) {
            ai.metaData = null;
            ai.metaData = null;
        }
        }
+7 −1
Original line number Original line Diff line number Diff line
@@ -850,9 +850,15 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
    @Deprecated
    @Deprecated
    @Override
    @Override
    public ApplicationInfo toAppInfoWithoutState() {
    public ApplicationInfo toAppInfoWithoutState() {
        ApplicationInfo appInfo = new ApplicationInfo();
        ApplicationInfo appInfo = toAppInfoWithoutStateWithoutFlags();
        appInfo.flags = PackageInfoWithoutStateUtils.appInfoFlags(this);
        appInfo.flags = PackageInfoWithoutStateUtils.appInfoFlags(this);
        appInfo.privateFlags = PackageInfoWithoutStateUtils.appInfoPrivateFlags(this);
        appInfo.privateFlags = PackageInfoWithoutStateUtils.appInfoPrivateFlags(this);
        return appInfo;
    }

    @Override
    public ApplicationInfo toAppInfoWithoutStateWithoutFlags() {
        ApplicationInfo appInfo = new ApplicationInfo();


        appInfo.appComponentFactory = appComponentFactory;
        appInfo.appComponentFactory = appComponentFactory;
        appInfo.backupAgentName = backupAgentName;
        appInfo.backupAgentName = backupAgentName;
+5 −0
Original line number Original line Diff line number Diff line
@@ -858,4 +858,9 @@ public interface ParsingPackageRead extends Parcelable {


    // TODO(b/135203078): Hide and enforce going through PackageInfoUtils
    // TODO(b/135203078): Hide and enforce going through PackageInfoUtils
    ApplicationInfo toAppInfoWithoutState();
    ApplicationInfo toAppInfoWithoutState();

    /**
     * same as toAppInfoWithoutState except without flag computation.
     */
    ApplicationInfo toAppInfoWithoutStateWithoutFlags();
}
}
+23 −5
Original line number Original line Diff line number Diff line
@@ -235,8 +235,9 @@ public class PackageInfoUtils {
        info.primaryCpuAbi = AndroidPackageUtils.getPrimaryCpuAbi(pkg, pkgSetting);
        info.primaryCpuAbi = AndroidPackageUtils.getPrimaryCpuAbi(pkg, pkgSetting);
        info.secondaryCpuAbi = AndroidPackageUtils.getSecondaryCpuAbi(pkg, pkgSetting);
        info.secondaryCpuAbi = AndroidPackageUtils.getSecondaryCpuAbi(pkg, pkgSetting);


        info.flags |= appInfoFlags(pkg, pkgSetting);
        info.flags |= appInfoFlags(info.flags, pkgSetting);
        info.privateFlags |= appInfoPrivateFlags(pkg, pkgSetting);
        info.privateFlags |= appInfoPrivateFlags(info.privateFlags, pkgSetting);

        return info;
        return info;
    }
    }


@@ -455,9 +456,18 @@ public class PackageInfoUtils {
    public static int appInfoFlags(AndroidPackage pkg, @Nullable PackageSetting pkgSetting) {
    public static int appInfoFlags(AndroidPackage pkg, @Nullable PackageSetting pkgSetting) {
        // TODO(b/135203078): Add setting related state
        // TODO(b/135203078): Add setting related state
        // @formatter:off
        // @formatter:off
        int flags = PackageInfoWithoutStateUtils.appInfoFlags(pkg)
        int pkgWithoutStateFlags = PackageInfoWithoutStateUtils.appInfoFlags(pkg)
                | flag(pkg.isSystem(), ApplicationInfo.FLAG_SYSTEM)
                | flag(pkg.isSystem(), ApplicationInfo.FLAG_SYSTEM)
                | flag(pkg.isFactoryTest(), ApplicationInfo.FLAG_FACTORY_TEST);
                | flag(pkg.isFactoryTest(), ApplicationInfo.FLAG_FACTORY_TEST);

        return appInfoFlags(pkgWithoutStateFlags, pkgSetting);
        // @formatter:on
    }

    /** @see ApplicationInfo#flags */
    public static int appInfoFlags(int pkgWithoutStateFlags, @NonNull PackageSetting pkgSetting) {
        // @formatter:off
        int flags = pkgWithoutStateFlags;
        if (pkgSetting != null) {
        if (pkgSetting != null) {
            flags |= flag(pkgSetting.getPkgState().isUpdatedSystemApp(), ApplicationInfo.FLAG_UPDATED_SYSTEM_APP);
            flags |= flag(pkgSetting.getPkgState().isUpdatedSystemApp(), ApplicationInfo.FLAG_UPDATED_SYSTEM_APP);
        }
        }
@@ -467,9 +477,8 @@ public class PackageInfoUtils {


    /** @see ApplicationInfo#privateFlags */
    /** @see ApplicationInfo#privateFlags */
    public static int appInfoPrivateFlags(AndroidPackage pkg, @Nullable PackageSetting pkgSetting) {
    public static int appInfoPrivateFlags(AndroidPackage pkg, @Nullable PackageSetting pkgSetting) {
        // TODO(b/135203078): Add setting related state
        // @formatter:off
        // @formatter:off
        return PackageInfoWithoutStateUtils.appInfoPrivateFlags(pkg)
        int pkgWithoutStateFlags = PackageInfoWithoutStateUtils.appInfoPrivateFlags(pkg)
                | flag(pkg.isSystemExt(), ApplicationInfo.PRIVATE_FLAG_SYSTEM_EXT)
                | flag(pkg.isSystemExt(), ApplicationInfo.PRIVATE_FLAG_SYSTEM_EXT)
                | flag(pkg.isPrivileged(), ApplicationInfo.PRIVATE_FLAG_PRIVILEGED)
                | flag(pkg.isPrivileged(), ApplicationInfo.PRIVATE_FLAG_PRIVILEGED)
                | flag(pkg.isOem(), ApplicationInfo.PRIVATE_FLAG_OEM)
                | flag(pkg.isOem(), ApplicationInfo.PRIVATE_FLAG_OEM)
@@ -477,6 +486,15 @@ public class PackageInfoUtils {
                | flag(pkg.isProduct(), ApplicationInfo.PRIVATE_FLAG_PRODUCT)
                | flag(pkg.isProduct(), ApplicationInfo.PRIVATE_FLAG_PRODUCT)
                | flag(pkg.isOdm(), ApplicationInfo.PRIVATE_FLAG_ODM)
                | flag(pkg.isOdm(), ApplicationInfo.PRIVATE_FLAG_ODM)
                | flag(pkg.isSignedWithPlatformKey(), ApplicationInfo.PRIVATE_FLAG_SIGNED_WITH_PLATFORM_KEY);
                | flag(pkg.isSignedWithPlatformKey(), ApplicationInfo.PRIVATE_FLAG_SIGNED_WITH_PLATFORM_KEY);
        return appInfoPrivateFlags(pkgWithoutStateFlags, pkgSetting);
        // @formatter:on
    }

    /** @see ApplicationInfo#privateFlags */
    public static int appInfoPrivateFlags(int pkgWithoutStateFlags, @Nullable PackageSetting pkgSetting) {
        // @formatter:off
        // TODO: Add state specific flags
        return pkgWithoutStateFlags;
        // @formatter:on
        // @formatter:on
    }
    }


+6 −0
Original line number Original line Diff line number Diff line
@@ -300,6 +300,12 @@ public interface AndroidPackage extends PkgAppInfo, PkgPackageInfo, ParsingPacka
    @NonNull
    @NonNull
    ApplicationInfo toAppInfoWithoutState();
    ApplicationInfo toAppInfoWithoutState();


    /**
     * Same as toAppInfoWithoutState except it does not compute any flags.
     */
    @NonNull
    ApplicationInfo toAppInfoWithoutStateWithoutFlags();

    /**
    /**
     * TODO(b/135203078): Remove usages?
     * TODO(b/135203078): Remove usages?
     * @return a mock of what the previous package.applicationInfo would've returned for logging
     * @return a mock of what the previous package.applicationInfo would've returned for logging
Loading