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

Commit 48b78837 authored by Jackal Guo's avatar Jackal Guo Committed by Android (Google) Code Review
Browse files

Merge "Only dump necessary info when specifying a package"

parents 089fdf45 1949f82e
Loading
Loading
Loading
Loading
+146 −85
Original line number Original line Diff line number Diff line
@@ -4617,8 +4617,14 @@ public class PackageManagerService extends IPackageManager.Stub
        public void dump(int type, FileDescriptor fd, PrintWriter pw, DumpState dumpState) {
        public void dump(int type, FileDescriptor fd, PrintWriter pw, DumpState dumpState) {
            final String packageName = dumpState.getTargetPackageName();
            final String packageName = dumpState.getTargetPackageName();
            final PackageSetting setting = mSettings.getPackageLPr(packageName);
            final boolean checkin = dumpState.isCheckIn();
            final boolean checkin = dumpState.isCheckIn();
            // Return if the package doesn't exist.
            if (packageName != null && setting == null) {
                return;
            }
            switch (type) {
            switch (type) {
                case DumpState.DUMP_VERSION:
                case DumpState.DUMP_VERSION:
                {
                {
@@ -4711,8 +4717,7 @@ public class PackageManagerService extends IPackageManager.Stub
                case DumpState.DUMP_QUERIES:
                case DumpState.DUMP_QUERIES:
                {
                {
                    final PackageSetting setting = mSettings.getPackageLPr(packageName);
                    final Integer filteringAppId = setting == null ? null : setting.appId;
                    Integer filteringAppId = setting == null ? null : setting.appId;
                    mAppsFilter.dumpQueries(
                    mAppsFilter.dumpQueries(
                            pw, filteringAppId, dumpState, mUserManager.getUserIds(),
                            pw, filteringAppId, dumpState, mUserManager.getUserIds(),
                            this::getPackagesForUidInternalBody);
                            this::getPackagesForUidInternalBody);
@@ -4723,8 +4728,9 @@ public class PackageManagerService extends IPackageManager.Stub
                {
                {
                    final android.util.IndentingPrintWriter writer =
                    final android.util.IndentingPrintWriter writer =
                            new android.util.IndentingPrintWriter(pw);
                            new android.util.IndentingPrintWriter(pw);
                    if (dumpState.onTitlePrinted()) pw.println();
                    if (dumpState.onTitlePrinted()) {
                        pw.println();
                    }
                    writer.println("Domain verification status:");
                    writer.println("Domain verification status:");
                    writer.increaseIndent();
                    writer.increaseIndent();
                    try {
                    try {
@@ -4741,18 +4747,14 @@ public class PackageManagerService extends IPackageManager.Stub
                case DumpState.DUMP_DEXOPT:
                case DumpState.DUMP_DEXOPT:
                {
                {
                    final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
                    final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
                    ipw.println();
                    if (dumpState.onTitlePrinted()) {
                        pw.println();
                    }
                    ipw.println("Dexopt state:");
                    ipw.println("Dexopt state:");
                    ipw.increaseIndent();
                    ipw.increaseIndent();
                    Collection<PackageSetting> pkgSettings;
                    Collection<PackageSetting> pkgSettings;
                    if (packageName != null) {
                    if (setting != null) {
                        PackageSetting targetPkgSetting = mSettings.getPackageLPr(packageName);
                        pkgSettings = Collections.singletonList(setting);
                        if (targetPkgSetting != null) {
                            pkgSettings = Collections.singletonList(targetPkgSetting);
                        } else {
                            ipw.println("Unable to find package: " + packageName);
                            return;
                        }
                    } else {
                    } else {
                        pkgSettings = mSettings.getPackagesLocked().values();
                        pkgSettings = mSettings.getPackagesLocked().values();
                    }
                    }
@@ -4762,10 +4764,12 @@ public class PackageManagerService extends IPackageManager.Stub
                        if (pkg == null) {
                        if (pkg == null) {
                            continue;
                            continue;
                        }
                        }
                        ipw.println("[" + pkgSetting.name + "]");
                        final String pkgName = pkg.getPackageName();
                        ipw.println("[" + pkgName + "]");
                        ipw.increaseIndent();
                        ipw.increaseIndent();
                        mPackageDexOptimizer.dumpDexoptState(ipw, pkg, pkgSetting,
                        mPackageDexOptimizer.dumpDexoptState(ipw, pkg, pkgSetting,
                                mDexManager.getPackageUseInfoOrDefault(pkg.getPackageName()));
                                mDexManager.getPackageUseInfoOrDefault(pkgName));
                        ipw.decreaseIndent();
                        ipw.decreaseIndent();
                    }
                    }
                    break;
                    break;
@@ -4774,28 +4778,29 @@ public class PackageManagerService extends IPackageManager.Stub
                case DumpState.DUMP_COMPILER_STATS:
                case DumpState.DUMP_COMPILER_STATS:
                {
                {
                    final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
                    final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
                    ipw.println();
                    if (dumpState.onTitlePrinted()) {
                        pw.println();
                    }
                    ipw.println("Compiler stats:");
                    ipw.println("Compiler stats:");
                    ipw.increaseIndent();
                    ipw.increaseIndent();
                    Collection<AndroidPackage> packages;
                    Collection<PackageSetting> pkgSettings;
                    if (packageName != null) {
                    if (setting != null) {
                        AndroidPackage targetPackage = mPackages.get(packageName);
                        pkgSettings = Collections.singletonList(setting);
                        if (targetPackage != null) {
                            packages = Collections.singletonList(targetPackage);
                        } else {
                            ipw.println("Unable to find package: " + packageName);
                            return;
                        }
                    } else {
                    } else {
                        packages = mPackages.values();
                        pkgSettings = mSettings.getPackagesLocked().values();
                    }
                    }
                    for (AndroidPackage pkg : packages) {
                    for (PackageSetting pkgSetting : pkgSettings) {
                        final AndroidPackage pkg = pkgSetting.getPkg();
                        if (pkg == null) {
                            continue;
                        }
                        final String pkgName = pkg.getPackageName();
                        final String pkgName = pkg.getPackageName();
                        ipw.println("[" + pkgName + "]");
                        ipw.println("[" + pkgName + "]");
                        ipw.increaseIndent();
                        ipw.increaseIndent();
                        CompilerStats.PackageStats stats = mCompilerStats.getPackageStats(pkgName);
                        final CompilerStats.PackageStats stats =
                                mCompilerStats.getPackageStats(pkgName);
                        if (stats == null) {
                        if (stats == null) {
                            ipw.println("(No recorded stats)");
                            ipw.println("(No recorded stats)");
                        } else {
                        } else {
@@ -19329,16 +19334,25 @@ public class PackageManagerService extends IPackageManager.Stub
        final String packageName = dumpState.getTargetPackageName();
        final String packageName = dumpState.getTargetPackageName();
        final boolean checkin = dumpState.isCheckIn();
        final boolean checkin = dumpState.isCheckIn();
        // Return if the package doesn't exist.
        if (packageName != null
                && getPackageSetting(packageName) == null
                && !mApexManager.isApexPackage(packageName)) {
            pw.println("Unable to find package: " + packageName);
            return;
        }
        if (checkin) {
        if (checkin) {
            pw.println("vers,1");
            pw.println("vers,1");
        }
        }
        // reader
        // reader
        if (dumpState.isDumping(DumpState.DUMP_VERSION) && packageName == null) {
        if (!checkin
            if (!checkin) {
                && dumpState.isDumping(DumpState.DUMP_VERSION)
                && packageName == null) {
            dump(DumpState.DUMP_VERSION, fd, pw, dumpState);
            dump(DumpState.DUMP_VERSION, fd, pw, dumpState);
        }
        }
        }
        if (!checkin
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_KNOWN_PACKAGES)
                && dumpState.isDumping(DumpState.DUMP_KNOWN_PACKAGES)
@@ -19368,7 +19382,8 @@ public class PackageManagerService extends IPackageManager.Stub
            ipw.decreaseIndent();
            ipw.decreaseIndent();
        }
        }
        if (dumpState.isDumping(DumpState.DUMP_VERIFIERS) && packageName == null) {
        if (dumpState.isDumping(DumpState.DUMP_VERIFIERS)
                && packageName == null) {
            final String requiredVerifierPackage = mRequiredVerifierPackage;
            final String requiredVerifierPackage = mRequiredVerifierPackage;
            if (!checkin) {
            if (!checkin) {
                if (dumpState.onTitlePrinted()) {
                if (dumpState.onTitlePrinted()) {
@@ -19389,14 +19404,16 @@ public class PackageManagerService extends IPackageManager.Stub
            }
            }
        }
        }
        if (dumpState.isDumping(DumpState.DUMP_DOMAIN_VERIFIER) && packageName == null) {
        if (dumpState.isDumping(DumpState.DUMP_DOMAIN_VERIFIER)
                && packageName == null) {
            final DomainVerificationProxy proxy = mDomainVerificationManager.getProxy();
            final DomainVerificationProxy proxy = mDomainVerificationManager.getProxy();
            final ComponentName verifierComponent = proxy.getComponentName();
            final ComponentName verifierComponent = proxy.getComponentName();
            if (verifierComponent != null) {
            if (verifierComponent != null) {
                String verifierPackageName = verifierComponent.getPackageName();
                String verifierPackageName = verifierComponent.getPackageName();
                if (!checkin) {
                if (!checkin) {
                    if (dumpState.onTitlePrinted())
                    if (dumpState.onTitlePrinted()) {
                        pw.println();
                        pw.println();
                    }
                    pw.println("Domain Verifier:");
                    pw.println("Domain Verifier:");
                    pw.print("  Using: ");
                    pw.print("  Using: ");
                    pw.print(verifierPackageName);
                    pw.print(verifierPackageName);
@@ -19416,11 +19433,13 @@ public class PackageManagerService extends IPackageManager.Stub
            }
            }
        }
        }
        if (dumpState.isDumping(DumpState.DUMP_LIBS) && packageName == null) {
        if (dumpState.isDumping(DumpState.DUMP_LIBS)
                && packageName == null) {
            dump(DumpState.DUMP_LIBS, fd, pw, dumpState);
            dump(DumpState.DUMP_LIBS, fd, pw, dumpState);
        }
        }
        if (dumpState.isDumping(DumpState.DUMP_FEATURES) && packageName == null) {
        if (dumpState.isDumping(DumpState.DUMP_FEATURES)
                && packageName == null) {
            if (dumpState.onTitlePrinted()) {
            if (dumpState.onTitlePrinted()) {
                pw.println();
                pw.println();
            }
            }
@@ -19430,12 +19449,7 @@ public class PackageManagerService extends IPackageManager.Stub
            synchronized (mAvailableFeatures) {
            synchronized (mAvailableFeatures) {
                for (FeatureInfo feat : mAvailableFeatures.values()) {
                for (FeatureInfo feat : mAvailableFeatures.values()) {
                    if (checkin) {
                    if (!checkin) {
                        pw.print("feat,");
                        pw.print(feat.name);
                        pw.print(",");
                        pw.println(feat.version);
                    } else {
                        pw.print("  ");
                        pw.print("  ");
                        pw.print(feat.name);
                        pw.print(feat.name);
                        if (feat.version > 0) {
                        if (feat.version > 0) {
@@ -19443,55 +19457,73 @@ public class PackageManagerService extends IPackageManager.Stub
                            pw.print(feat.version);
                            pw.print(feat.version);
                        }
                        }
                        pw.println();
                        pw.println();
                    } else {
                        pw.print("feat,");
                        pw.print(feat.name);
                        pw.print(",");
                        pw.println(feat.version);
                    }
                    }
                }
                }
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_ACTIVITY_RESOLVERS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_ACTIVITY_RESOLVERS)) {
            synchronized (mLock) {
            synchronized (mLock) {
                mComponentResolver.dumpActivityResolvers(pw, dumpState, packageName);
                mComponentResolver.dumpActivityResolvers(pw, dumpState, packageName);
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_RECEIVER_RESOLVERS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_RECEIVER_RESOLVERS)) {
            synchronized (mLock) {
            synchronized (mLock) {
                mComponentResolver.dumpReceiverResolvers(pw, dumpState, packageName);
                mComponentResolver.dumpReceiverResolvers(pw, dumpState, packageName);
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_SERVICE_RESOLVERS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_SERVICE_RESOLVERS)) {
            synchronized (mLock) {
            synchronized (mLock) {
                mComponentResolver.dumpServiceResolvers(pw, dumpState, packageName);
                mComponentResolver.dumpServiceResolvers(pw, dumpState, packageName);
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_CONTENT_RESOLVERS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_CONTENT_RESOLVERS)) {
            synchronized (mLock) {
            synchronized (mLock) {
                mComponentResolver.dumpProviderResolvers(pw, dumpState, packageName);
                mComponentResolver.dumpProviderResolvers(pw, dumpState, packageName);
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_PREFERRED)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_PREFERRED)) {
            dump(DumpState.DUMP_PREFERRED, fd, pw, dumpState);
            dump(DumpState.DUMP_PREFERRED, fd, pw, dumpState);
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_PREFERRED_XML)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_PREFERRED_XML)
                && packageName == null) {
            dump(DumpState.DUMP_PREFERRED_XML, fd, pw, dumpState);
            dump(DumpState.DUMP_PREFERRED_XML, fd, pw, dumpState);
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_DOMAIN_PREFERRED)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_DOMAIN_PREFERRED)) {
            dump(DumpState.DUMP_DOMAIN_PREFERRED, fd, pw, dumpState);
            dump(DumpState.DUMP_DOMAIN_PREFERRED, fd, pw, dumpState);
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_PERMISSIONS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_PERMISSIONS)) {
            synchronized (mLock) {
                mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState);
                mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState);
            }
            }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_PROVIDERS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_PROVIDERS)) {
            synchronized (mLock) {
            synchronized (mLock) {
                mComponentResolver.dumpContentProviders(pw, dumpState, packageName);
                mComponentResolver.dumpContentProviders(pw, dumpState, packageName);
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_KEYSETS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_KEYSETS)) {
            synchronized (mLock) {
            synchronized (mLock) {
                mSettings.getKeySetManagerService().dumpLPr(pw, packageName, dumpState);
                mSettings.getKeySetManagerService().dumpLPr(pw, packageName, dumpState);
            }
            }
@@ -19506,7 +19538,8 @@ public class PackageManagerService extends IPackageManager.Stub
            }
            }
        }
        }
        if (dumpState.isDumping(DumpState.DUMP_QUERIES)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_QUERIES)) {
            dump(DumpState.DUMP_QUERIES, fd, pw, dumpState);
            dump(DumpState.DUMP_QUERIES, fd, pw, dumpState);
        }
        }
@@ -19518,8 +19551,12 @@ public class PackageManagerService extends IPackageManager.Stub
            }
            }
        }
        }
        if (dumpState.isDumping(DumpState.DUMP_CHANGES)) {
        if (!checkin
            if (dumpState.onTitlePrinted()) pw.println();
                && dumpState.isDumping(DumpState.DUMP_CHANGES)
                && packageName == null) {
            if (dumpState.onTitlePrinted()) {
                pw.println();
            }
            pw.println("Package Changes:");
            pw.println("Package Changes:");
            synchronized (mLock) {
            synchronized (mLock) {
                pw.print("  Sequence number="); pw.println(mChangedPackagesSequenceNumber);
                pw.print("  Sequence number="); pw.println(mChangedPackagesSequenceNumber);
@@ -19545,11 +19582,14 @@ public class PackageManagerService extends IPackageManager.Stub
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_FROZEN) && packageName == null) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_FROZEN)
                && packageName == null) {
            // XXX should handle packageName != null by dumping only install data that
            // XXX should handle packageName != null by dumping only install data that
            // the given package is involved with.
            // the given package is involved with.
            if (dumpState.onTitlePrinted()) pw.println();
            if (dumpState.onTitlePrinted()) {
                pw.println();
            }
            final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ", 120);
            final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ", 120);
            ipw.println();
            ipw.println();
            ipw.println("Frozen packages:");
            ipw.println("Frozen packages:");
@@ -19566,9 +19606,12 @@ public class PackageManagerService extends IPackageManager.Stub
            ipw.decreaseIndent();
            ipw.decreaseIndent();
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_VOLUMES) && packageName == null) {
        if (!checkin
            if (dumpState.onTitlePrinted()) pw.println();
                && dumpState.isDumping(DumpState.DUMP_VOLUMES)
                && packageName == null) {
            if (dumpState.onTitlePrinted()) {
                pw.println();
            }
            final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ", 120);
            final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ", 120);
            ipw.println();
            ipw.println();
            ipw.println("Loaded volumes:");
            ipw.println("Loaded volumes:");
@@ -19585,52 +19628,65 @@ public class PackageManagerService extends IPackageManager.Stub
            ipw.decreaseIndent();
            ipw.decreaseIndent();
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_SERVICE_PERMISSIONS)
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_SERVICE_PERMISSIONS)
                && packageName == null) {
                && packageName == null) {
            synchronized (mLock) {
            synchronized (mLock) {
                mComponentResolver.dumpServicePermissions(pw, dumpState);
                mComponentResolver.dumpServicePermissions(pw, dumpState);
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_DEXOPT)) {
        if (!checkin
            if (dumpState.onTitlePrinted()) pw.println();
                && dumpState.isDumping(DumpState.DUMP_DEXOPT)) {
            dump(DumpState.DUMP_DEXOPT, fd, pw, dumpState);
            dump(DumpState.DUMP_DEXOPT, fd, pw, dumpState);
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_COMPILER_STATS)) {
        if (!checkin
            if (dumpState.onTitlePrinted()) pw.println();
                && dumpState.isDumping(DumpState.DUMP_COMPILER_STATS)) {
            dump(DumpState.DUMP_COMPILER_STATS, fd, pw, dumpState);
            dump(DumpState.DUMP_COMPILER_STATS, fd, pw, dumpState);
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) {
        if (dumpState.isDumping(DumpState.DUMP_MESSAGES)
            if (dumpState.onTitlePrinted()) pw.println();
                && packageName == null) {
            if (!checkin) {
                if (dumpState.onTitlePrinted()) {
                    pw.println();
                }
                synchronized (mLock) {
                synchronized (mLock) {
                    mSettings.dumpReadMessagesLPr(pw, dumpState);
                    mSettings.dumpReadMessagesLPr(pw, dumpState);
                }
                }
                pw.println();
                pw.println();
                pw.println("Package warning messages:");
                pw.println("Package warning messages:");
                dumpCriticalInfo(pw, null);
                dumpCriticalInfo(pw, null);
        }
            } else {
        if (checkin && dumpState.isDumping(DumpState.DUMP_MESSAGES)) {
                dumpCriticalInfo(pw, "msg,");
                dumpCriticalInfo(pw, "msg,");
            }
            }
        }
        // PackageInstaller should be called outside of mPackages lock
        // PackageInstaller should be called outside of mPackages lock
        if (!checkin && dumpState.isDumping(DumpState.DUMP_INSTALLS) && packageName == null) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_INSTALLS)
                && packageName == null) {
            // XXX should handle packageName != null by dumping only install data that
            // XXX should handle packageName != null by dumping only install data that
            // the given package is involved with.
            // the given package is involved with.
            if (dumpState.onTitlePrinted()) pw.println();
            if (dumpState.onTitlePrinted()) {
                pw.println();
            }
            mInstallerService.dump(new IndentingPrintWriter(pw, "  ", 120));
            mInstallerService.dump(new IndentingPrintWriter(pw, "  ", 120));
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_APEX)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_APEX)
                && (packageName == null || mApexManager.isApexPackage(packageName))) {
            mApexManager.dump(pw, packageName);
            mApexManager.dump(pw, packageName);
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_PER_UID_READ_TIMEOUTS)
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_PER_UID_READ_TIMEOUTS)
                && packageName == null) {
                && packageName == null) {
            if (dumpState.onTitlePrinted()) {
                pw.println();
                pw.println();
            }
            pw.println("Per UID read timeouts:");
            pw.println("Per UID read timeouts:");
            pw.println("    Default timeouts flag: " + getDefaultTimeouts());
            pw.println("    Default timeouts flag: " + getDefaultTimeouts());
            pw.println("    Known digesters list flag: " + getKnownDigestersList());
            pw.println("    Known digesters list flag: " + getKnownDigestersList());
@@ -19647,7 +19703,12 @@ public class PackageManagerService extends IPackageManager.Stub
            }
            }
        }
        }
        if (!checkin && dumpState.isDumping(DumpState.DUMP_SNAPSHOT_STATISTICS)) {
        if (!checkin
                && dumpState.isDumping(DumpState.DUMP_SNAPSHOT_STATISTICS)
                && packageName == null) {
            if (dumpState.onTitlePrinted()) {
                pw.println();
            }
            pw.println("Snapshot statistics");
            pw.println("Snapshot statistics");
            if (!mSnapshotEnabled) {
            if (!mSnapshotEnabled) {
                pw.println("  Snapshots disabled");
                pw.println("  Snapshots disabled");