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

Commit dd7853a6 authored by Alex Buynytskyy's avatar Alex Buynytskyy Committed by Android (Google) Code Review
Browse files

Merge "Use the same application info instance." into tm-qpr-dev

parents 77023ce0 da1a68e6
Loading
Loading
Loading
Loading
+48 −8
Original line number Original line Diff line number Diff line
@@ -713,6 +713,15 @@ public class PackageParser {
        if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) {
        if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) {
            return null;
            return null;
        }
        }

        final ApplicationInfo applicationInfo;
        if ((flags & (PackageManager.GET_ACTIVITIES | PackageManager.GET_RECEIVERS
                | PackageManager.GET_SERVICES | PackageManager.GET_PROVIDERS)) != 0) {
            applicationInfo = generateApplicationInfo(p, flags, state, userId);
        } else {
            applicationInfo = null;
        }

        PackageInfo pi = new PackageInfo();
        PackageInfo pi = new PackageInfo();
        pi.packageName = p.packageName;
        pi.packageName = p.packageName;
        pi.splitNames = p.splitNames;
        pi.splitNames = p.splitNames;
@@ -773,7 +782,7 @@ public class PackageParser {
                        if (PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME.equals(a.className)) {
                        if (PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME.equals(a.className)) {
                            continue;
                            continue;
                        }
                        }
                        res[num++] = generateActivityInfo(a, flags, state, userId);
                        res[num++] = generateActivityInfo(a, flags, state, userId, applicationInfo);
                    }
                    }
                }
                }
                pi.activities = ArrayUtils.trimToSize(res, num);
                pi.activities = ArrayUtils.trimToSize(res, num);
@@ -787,7 +796,7 @@ public class PackageParser {
                for (int i = 0; i < N; i++) {
                for (int i = 0; i < N; i++) {
                    final Activity a = p.receivers.get(i);
                    final Activity a = p.receivers.get(i);
                    if (isMatch(state, a.info, flags)) {
                    if (isMatch(state, a.info, flags)) {
                        res[num++] = generateActivityInfo(a, flags, state, userId);
                        res[num++] = generateActivityInfo(a, flags, state, userId, applicationInfo);
                    }
                    }
                }
                }
                pi.receivers = ArrayUtils.trimToSize(res, num);
                pi.receivers = ArrayUtils.trimToSize(res, num);
@@ -801,7 +810,7 @@ public class PackageParser {
                for (int i = 0; i < N; i++) {
                for (int i = 0; i < N; i++) {
                    final Service s = p.services.get(i);
                    final Service s = p.services.get(i);
                    if (isMatch(state, s.info, flags)) {
                    if (isMatch(state, s.info, flags)) {
                        res[num++] = generateServiceInfo(s, flags, state, userId);
                        res[num++] = generateServiceInfo(s, flags, state, userId, applicationInfo);
                    }
                    }
                }
                }
                pi.services = ArrayUtils.trimToSize(res, num);
                pi.services = ArrayUtils.trimToSize(res, num);
@@ -815,7 +824,8 @@ public class PackageParser {
                for (int i = 0; i < N; i++) {
                for (int i = 0; i < N; i++) {
                    final Provider pr = p.providers.get(i);
                    final Provider pr = p.providers.get(i);
                    if (isMatch(state, pr.info, flags)) {
                    if (isMatch(state, pr.info, flags)) {
                        res[num++] = generateProviderInfo(pr, flags, state, userId);
                        res[num++] = generateProviderInfo(pr, flags, state, userId,
                                applicationInfo);
                    }
                    }
                }
                }
                pi.providers = ArrayUtils.trimToSize(res, num);
                pi.providers = ArrayUtils.trimToSize(res, num);
@@ -8216,6 +8226,11 @@ public class PackageParser {
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    public static final ActivityInfo generateActivityInfo(Activity a, int flags,
    public static final ActivityInfo generateActivityInfo(Activity a, int flags,
            FrameworkPackageUserState state, int userId) {
            FrameworkPackageUserState state, int userId) {
        return generateActivityInfo(a, flags, state, userId, null);
    }

    private static ActivityInfo generateActivityInfo(Activity a, int flags,
            FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) {
        if (a == null) return null;
        if (a == null) return null;
        if (!checkUseInstalledOrHidden(flags, state, a.owner.applicationInfo)) {
        if (!checkUseInstalledOrHidden(flags, state, a.owner.applicationInfo)) {
            return null;
            return null;
@@ -8227,7 +8242,12 @@ public class PackageParser {
        // Make shallow copies so we can store the metadata safely
        // Make shallow copies so we can store the metadata safely
        ActivityInfo ai = new ActivityInfo(a.info);
        ActivityInfo ai = new ActivityInfo(a.info);
        ai.metaData = a.metaData;
        ai.metaData = a.metaData;
        ai.applicationInfo = generateApplicationInfo(a.owner, flags, state, userId);

        if (applicationInfo == null) {
            applicationInfo = generateApplicationInfo(a.owner, flags, state, userId);
        }
        ai.applicationInfo = applicationInfo;

        return ai;
        return ai;
    }
    }


@@ -8308,6 +8328,11 @@ public class PackageParser {
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    public static final ServiceInfo generateServiceInfo(Service s, int flags,
    public static final ServiceInfo generateServiceInfo(Service s, int flags,
            FrameworkPackageUserState state, int userId) {
            FrameworkPackageUserState state, int userId) {
        return generateServiceInfo(s, flags, state, userId, null);
    }

    private static ServiceInfo generateServiceInfo(Service s, int flags,
            FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) {
        if (s == null) return null;
        if (s == null) return null;
        if (!checkUseInstalledOrHidden(flags, state, s.owner.applicationInfo)) {
        if (!checkUseInstalledOrHidden(flags, state, s.owner.applicationInfo)) {
            return null;
            return null;
@@ -8319,7 +8344,12 @@ public class PackageParser {
        // Make shallow copies so we can store the metadata safely
        // Make shallow copies so we can store the metadata safely
        ServiceInfo si = new ServiceInfo(s.info);
        ServiceInfo si = new ServiceInfo(s.info);
        si.metaData = s.metaData;
        si.metaData = s.metaData;
        si.applicationInfo = generateApplicationInfo(s.owner, flags, state, userId);

        if (applicationInfo == null) {
            applicationInfo = generateApplicationInfo(s.owner, flags, state, userId);
        }
        si.applicationInfo = applicationInfo;

        return si;
        return si;
    }
    }


@@ -8406,6 +8436,11 @@ public class PackageParser {
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    public static final ProviderInfo generateProviderInfo(Provider p, int flags,
    public static final ProviderInfo generateProviderInfo(Provider p, int flags,
            FrameworkPackageUserState state, int userId) {
            FrameworkPackageUserState state, int userId) {
        return generateProviderInfo(p, flags, state, userId, null);
    }

    private static ProviderInfo generateProviderInfo(Provider p, int flags,
            FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) {
        if (p == null) return null;
        if (p == null) return null;
        if (!checkUseInstalledOrHidden(flags, state, p.owner.applicationInfo)) {
        if (!checkUseInstalledOrHidden(flags, state, p.owner.applicationInfo)) {
            return null;
            return null;
@@ -8422,7 +8457,12 @@ public class PackageParser {
        if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) {
        if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) {
            pi.uriPermissionPatterns = null;
            pi.uriPermissionPatterns = null;
        }
        }
        pi.applicationInfo = generateApplicationInfo(p.owner, flags, state, userId);

        if (applicationInfo == null) {
            applicationInfo = generateApplicationInfo(p.owner, flags, state, userId);
        }
        pi.applicationInfo = applicationInfo;

        return pi;
        return pi;
    }
    }