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

Commit 42a1773a authored by Felipe Leme's avatar Felipe Leme Committed by Android (Google) Code Review
Browse files

Merge "Improved UserSystemPackageInstaller.dump()"

parents 569d4e9d 1fbe9b59
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -540,6 +540,7 @@ public class SystemConfig {
            Slog.w(TAG, "Couldn't find or open permissions file " + permFile);
            return;
        }
        Slog.i(TAG, "Reading permissions from " + permFile);

        final boolean lowRam = ActivityManager.isLowRamDeviceStatic();

+27 −17
Original line number Diff line number Diff line
@@ -116,13 +116,13 @@ class UserSystemPackageInstaller {
     * <p>Packages that are whitelisted, but then blacklisted so that they aren't to be installed on
     * any user, are purposefully still present in this list.
     */
    private final ArrayMap<String, Integer> mWhitelitsedPackagesForUserTypes;
    private final ArrayMap<String, Integer> mWhitelistedPackagesForUserTypes;

    private final UserManagerService mUm;

    UserSystemPackageInstaller(UserManagerService ums) {
        mUm = ums;
        mWhitelitsedPackagesForUserTypes =
        mWhitelistedPackagesForUserTypes =
                determineWhitelistedPackagesForUserTypes(SystemConfig.getInstance());
    }

@@ -130,7 +130,7 @@ class UserSystemPackageInstaller {
    @VisibleForTesting
    UserSystemPackageInstaller(UserManagerService ums, ArrayMap<String, Integer> whitelist) {
        mUm = ums;
        mWhitelitsedPackagesForUserTypes = whitelist;
        mWhitelistedPackagesForUserTypes = whitelist;
    }

    /**
@@ -249,7 +249,7 @@ class UserSystemPackageInstaller {
        return (whitelistMode & USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST) != 0;
    }

    /** Gets the PackageWhitelistMode for use of {@link #mWhitelitsedPackagesForUserTypes}. */
    /** Gets the PackageWhitelistMode for use of {@link #mWhitelistedPackagesForUserTypes}. */
    private @PackageWhitelistMode int getWhitelistMode() {
        final int runtimeMode = SystemProperties.getInt(
                PACKAGE_WHITELIST_MODE_PROP, USER_TYPE_PACKAGE_WHITELIST_MODE_DEVICE_DEFAULT);
@@ -290,7 +290,7 @@ class UserSystemPackageInstaller {
            if (!pkg.isSystem()) {
                return;
            }
            if (shouldInstallPackage(pkg, mWhitelitsedPackagesForUserTypes,
            if (shouldInstallPackage(pkg, mWhitelistedPackagesForUserTypes,
                    whitelistedPackages, isImplicitWhitelistMode, isSystemUser)) {
                // Although the whitelist uses manifest names, this function returns packageNames.
                installPackages.add(pkg.packageName);
@@ -340,10 +340,10 @@ class UserSystemPackageInstaller {
     */
    @VisibleForTesting
    @NonNull Set<String> getWhitelistedPackagesForUserType(int flags) {
        Set<String> installablePkgs = new ArraySet<>(mWhitelitsedPackagesForUserTypes.size());
        for (int i = 0; i < mWhitelitsedPackagesForUserTypes.size(); i++) {
            String pkgName = mWhitelitsedPackagesForUserTypes.keyAt(i);
            int whitelistedUserTypes = mWhitelitsedPackagesForUserTypes.valueAt(i);
        Set<String> installablePkgs = new ArraySet<>(mWhitelistedPackagesForUserTypes.size());
        for (int i = 0; i < mWhitelistedPackagesForUserTypes.size(); i++) {
            String pkgName = mWhitelistedPackagesForUserTypes.keyAt(i);
            int whitelistedUserTypes = mWhitelistedPackagesForUserTypes.valueAt(i);
            if ((flags & whitelistedUserTypes) != 0) {
                installablePkgs.add(pkgName);
            }
@@ -360,7 +360,7 @@ class UserSystemPackageInstaller {
     * completely blacklists an AOSP app).
     */
    private Set<String> getWhitelistedSystemPackages() {
        return mWhitelitsedPackagesForUserTypes.keySet();
        return mWhitelistedPackagesForUserTypes.keySet();
    }

    /**
@@ -456,18 +456,28 @@ class UserSystemPackageInstaller {
    }

    void dump(PrintWriter pw) {
        pw.print("Whitelisted packages per user type");
        final int size = mWhitelitsedPackagesForUserTypes.size();
        final String prefix = "    ";
        final int mode = getWhitelistMode();
        pw.println("Whitelisted packages per user type");
        pw.print(prefix); pw.print("Mode: ");
        pw.print(mode);
        pw.print(isEnforceMode(mode) ? " (enforced)" : "");
        pw.print(isLogMode(mode) ? " (logged)" : "");
        pw.print(isImplicitWhitelistMode(mode) ? " (implicit)" : "");
        pw.println();

        final int size = mWhitelistedPackagesForUserTypes.size();
        if (size == 0) {
            pw.println(": N/A");
            pw.print(prefix); pw.println("No packages");
            return;
        }
        pw.println(" (" + size + " packages)");
        final String prefix2 = prefix + prefix;
        pw.print(prefix); pw.print(size); pw.println(" packages:");
        for (int i = 0; i < size; i++) {
            final String pkgName = mWhitelitsedPackagesForUserTypes.keyAt(i);
            final String pkgName = mWhitelistedPackagesForUserTypes.keyAt(i);
            final String whitelistedUserTypes =
                    UserInfo.flagsToString(mWhitelitsedPackagesForUserTypes.valueAt(i));
            pw.println("    " + pkgName + ": " + whitelistedUserTypes);
                    UserInfo.flagsToString(mWhitelistedPackagesForUserTypes.valueAt(i));
            pw.print(prefix2); pw.print(pkgName); pw.print(": "); pw.println(whitelistedUserTypes);
        }
    }
}