Loading services/core/java/android/content/pm/PackageManagerInternal.java +2 −96 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import android.util.ArraySet; import android.util.SparseArray; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.pm.KnownPackages; import com.android.server.pm.PackageList; import com.android.server.pm.PackageSetting; import com.android.server.pm.dex.DynamicCodeLogger; Loading @@ -68,51 +69,6 @@ import java.util.function.Consumer; * @hide Only for use within the system server. */ public abstract class PackageManagerInternal { @IntDef(prefix = "PACKAGE_", value = { PACKAGE_SYSTEM, PACKAGE_SETUP_WIZARD, PACKAGE_INSTALLER, PACKAGE_UNINSTALLER, PACKAGE_VERIFIER, PACKAGE_BROWSER, PACKAGE_SYSTEM_TEXT_CLASSIFIER, PACKAGE_PERMISSION_CONTROLLER, PACKAGE_CONFIGURATOR, PACKAGE_INCIDENT_REPORT_APPROVER, PACKAGE_APP_PREDICTOR, PACKAGE_OVERLAY_CONFIG_SIGNATURE, PACKAGE_WIFI, PACKAGE_COMPANION, PACKAGE_RETAIL_DEMO, PACKAGE_RECENTS, }) @Retention(RetentionPolicy.SOURCE) public @interface KnownPackage {} public static final int PACKAGE_SYSTEM = 0; public static final int PACKAGE_SETUP_WIZARD = 1; public static final int PACKAGE_INSTALLER = 2; public static final int PACKAGE_UNINSTALLER = 3; public static final int PACKAGE_VERIFIER = 4; public static final int PACKAGE_BROWSER = 5; public static final int PACKAGE_SYSTEM_TEXT_CLASSIFIER = 6; public static final int PACKAGE_PERMISSION_CONTROLLER = 7; public static final int PACKAGE_WELLBEING = 8; public static final int PACKAGE_DOCUMENTER = 9; public static final int PACKAGE_CONFIGURATOR = 10; public static final int PACKAGE_INCIDENT_REPORT_APPROVER = 11; public static final int PACKAGE_APP_PREDICTOR = 12; public static final int PACKAGE_OVERLAY_CONFIG_SIGNATURE = 13; public static final int PACKAGE_WIFI = 14; public static final int PACKAGE_COMPANION = 15; public static final int PACKAGE_RETAIL_DEMO = 16; public static final int PACKAGE_RECENTS = 17; public static final int PACKAGE_AMBIENT_CONTEXT_DETECTION = 18; // Integer value of the last known package ID. Increases as new ID is added to KnownPackage. // Please note the numbers should be continuous. public static final int LAST_KNOWN_PACKAGE = PACKAGE_AMBIENT_CONTEXT_DETECTION; @LongDef(flag = true, prefix = "RESOLVE_", value = { RESOLVE_NON_BROWSER_ONLY, RESOLVE_NON_RESOLVER_ONLY Loading Loading @@ -754,12 +710,11 @@ public abstract class PackageManagerInternal { */ public abstract boolean isResolveActivityComponent(@NonNull ComponentInfo component); /** * Returns a list of package names for a known package */ public abstract @NonNull String[] getKnownPackageNames( @KnownPackage int knownPackage, int userId); @KnownPackages.KnownPackage int knownPackage, int userId); /** * Returns whether the package is an instant app. Loading Loading @@ -1142,55 +1097,6 @@ public abstract class PackageManagerInternal { public abstract boolean registerInstalledLoadingProgressCallback(@NonNull String packageName, @NonNull InstalledLoadingProgressCallback callback, int userId); /** * Returns the string representation of a known package. For example, * {@link #PACKAGE_SETUP_WIZARD} is represented by the string Setup Wizard. * * @param knownPackage The known package. * @return The string representation. */ public static @NonNull String knownPackageToString(@KnownPackage int knownPackage) { switch (knownPackage) { case PACKAGE_SYSTEM: return "System"; case PACKAGE_SETUP_WIZARD: return "Setup Wizard"; case PACKAGE_INSTALLER: return "Installer"; case PACKAGE_UNINSTALLER: return "Uninstaller"; case PACKAGE_VERIFIER: return "Verifier"; case PACKAGE_BROWSER: return "Browser"; case PACKAGE_SYSTEM_TEXT_CLASSIFIER: return "System Text Classifier"; case PACKAGE_PERMISSION_CONTROLLER: return "Permission Controller"; case PACKAGE_WELLBEING: return "Wellbeing"; case PACKAGE_DOCUMENTER: return "Documenter"; case PACKAGE_CONFIGURATOR: return "Configurator"; case PACKAGE_INCIDENT_REPORT_APPROVER: return "Incident Report Approver"; case PACKAGE_APP_PREDICTOR: return "App Predictor"; case PACKAGE_WIFI: return "Wi-Fi"; case PACKAGE_COMPANION: return "Companion"; case PACKAGE_RETAIL_DEMO: return "Retail Demo"; case PACKAGE_OVERLAY_CONFIG_SIGNATURE: return "Overlay Config Signature"; case PACKAGE_RECENTS: return "Recents"; } return "Unknown"; } /** * Callback to listen for loading progress of a package installed on Incremental File System. */ Loading services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.infra.AbstractMasterSystemService; import com.android.server.infra.FrameworkResourcesServiceNameResolver; import com.android.server.pm.KnownPackages; import java.io.FileDescriptor; import java.io.PrintWriter; Loading Loading @@ -117,7 +118,7 @@ public class AmbientContextManagerService extends public static boolean isDetectionServiceConfigured() { final PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class); final String[] packageNames = pmi.getKnownPackageNames( PackageManagerInternal.PACKAGE_AMBIENT_CONTEXT_DETECTION, UserHandle.USER_SYSTEM); KnownPackages.PACKAGE_AMBIENT_CONTEXT_DETECTION, UserHandle.USER_SYSTEM); boolean isServiceConfigured = (packageNames.length != 0); Slog.i(TAG, "Detection service configured: " + isServiceConfigured); return isServiceConfigured; Loading services/core/java/com/android/server/om/OverlayManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.SystemConfig; import com.android.server.SystemService; import com.android.server.pm.KnownPackages; import com.android.server.pm.UserManagerService; import com.android.server.pm.parsing.pkg.AndroidPackage; Loading Loading @@ -1264,7 +1265,7 @@ public final class OverlayManagerService extends SystemService { @Override public String getConfigSignaturePackage() { final String[] pkgs = mPackageManagerInternal.getKnownPackageNames( PackageManagerInternal.PACKAGE_OVERLAY_CONFIG_SIGNATURE, KnownPackages.PACKAGE_OVERLAY_CONFIG_SIGNATURE, UserHandle.USER_SYSTEM); return (pkgs.length == 0) ? null : pkgs[0]; } Loading services/core/java/com/android/server/pm/Computer.java +26 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.Pair; import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.AndroidPackage; Loading Loading @@ -571,6 +572,31 @@ public interface Computer extends PackageDataSnapshot { @NonNull WatchedArrayMap<String, Integer> getFrozenPackages(); /** * Verify that given package is currently frozen. */ void checkPackageFrozen(@NonNull String packageName); @Nullable ComponentName getInstantAppInstallerComponent(); void dumpPermissions(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState); void dumpPackages(PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin); void dumpKeySet(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull DumpState dumpState); void dumpSharedUsers(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin); void dumpSharedUsersProto(@NonNull ProtoOutputStream proto); void dumpPackagesProto(@NonNull ProtoOutputStream proto); void dumpSharedLibrariesProto(@NonNull ProtoOutputStream protoOutputStream); } services/core/java/com/android/server/pm/ComputerEngine.java +108 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.TypedXmlSerializer; import android.util.Xml; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; Loading Loading @@ -322,6 +323,37 @@ public class ComputerEngine implements Computer { } return res; } public void dumpPackagesProto(ProtoOutputStream proto) { mSettings.dumpPackagesProto(proto); } public void dumpPermissions(PrintWriter pw, String packageName, ArraySet<String> permissionNames, DumpState dumpState) { mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState); } public void dumpPackages(PrintWriter pw, String packageName, ArraySet<String> permissionNames, DumpState dumpState, boolean checkin) { mSettings.dumpPackagesLPr(pw, packageName, permissionNames, dumpState, checkin); } public void dumpKeySet(PrintWriter pw, String packageName, DumpState dumpState) { mSettings.getKeySetManagerService().dumpLPr(pw, packageName, dumpState); } public void dumpSharedUsers(PrintWriter pw, String packageName, ArraySet<String> permissionNames, DumpState dumpState, boolean checkin) { mSettings.dumpSharedUsersLPr(pw, packageName, permissionNames, dumpState, checkin); } public void dumpReadMessages(PrintWriter pw, DumpState dumpState) { mSettings.dumpReadMessages(pw, dumpState); } public void dumpSharedUsersProto(ProtoOutputStream proto) { mSettings.dumpSharedUsersProto(proto); } } private static final Comparator<ProviderInfo> sProviderInitOrderSorter = (p1, p2) -> { Loading Loading @@ -3211,6 +3243,34 @@ public class ComputerEngine implements Computer { } break; } case DumpState.DUMP_MESSAGES: { mSettings.dumpReadMessages(pw, dumpState); break; } case DumpState.DUMP_FROZEN: { // XXX should handle packageName != null by dumping only install data that // the given package is involved with. if (dumpState.onTitlePrinted()) { pw.println(); } final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ", 120); ipw.println(); ipw.println("Frozen packages:"); ipw.increaseIndent(); if (mFrozenPackages.size() == 0) { ipw.println("(none)"); } else { for (int i = 0; i < mFrozenPackages.size(); i++) { ipw.print("package="); ipw.print(mFrozenPackages.keyAt(i)); ipw.print(", refCounts="); ipw.println(mFrozenPackages.valueAt(i)); } } ipw.decreaseIndent(); } } // switch } Loading Loading @@ -5698,10 +5758,58 @@ public class ComputerEngine implements Computer { return mFrozenPackages; } @Override public void checkPackageFrozen(@NonNull String packageName) { if (!mFrozenPackages.containsKey(packageName)) { Slog.wtf(TAG, "Expected " + packageName + " to be frozen!", new Throwable()); } } @Nullable @Override public ComponentName getInstantAppInstallerComponent() { return mLocalInstantAppInstallerActivity == null ? null : mLocalInstantAppInstallerActivity.getComponentName(); } @Override public void dumpPermissions(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState) { mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState); } @Override public void dumpPackages(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin) { mSettings.dumpPackages(pw, packageName, permissionNames, dumpState, checkin); } @Override public void dumpKeySet(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull DumpState dumpState) { mSettings.dumpKeySet(pw, packageName, dumpState); } @Override public void dumpSharedUsers(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin) { mSettings.dumpSharedUsers(pw, packageName, permissionNames, dumpState, checkin); } @Override public void dumpSharedUsersProto(@NonNull ProtoOutputStream proto) { mSettings.dumpSharedUsersProto(proto); } @Override public void dumpPackagesProto(@NonNull ProtoOutputStream proto) { mSettings.dumpPackagesProto(proto); } @Override public void dumpSharedLibrariesProto(@NonNull ProtoOutputStream proto) { mSharedLibraries.dumpProto(proto); } } Loading
services/core/java/android/content/pm/PackageManagerInternal.java +2 −96 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import android.util.ArraySet; import android.util.SparseArray; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.pm.KnownPackages; import com.android.server.pm.PackageList; import com.android.server.pm.PackageSetting; import com.android.server.pm.dex.DynamicCodeLogger; Loading @@ -68,51 +69,6 @@ import java.util.function.Consumer; * @hide Only for use within the system server. */ public abstract class PackageManagerInternal { @IntDef(prefix = "PACKAGE_", value = { PACKAGE_SYSTEM, PACKAGE_SETUP_WIZARD, PACKAGE_INSTALLER, PACKAGE_UNINSTALLER, PACKAGE_VERIFIER, PACKAGE_BROWSER, PACKAGE_SYSTEM_TEXT_CLASSIFIER, PACKAGE_PERMISSION_CONTROLLER, PACKAGE_CONFIGURATOR, PACKAGE_INCIDENT_REPORT_APPROVER, PACKAGE_APP_PREDICTOR, PACKAGE_OVERLAY_CONFIG_SIGNATURE, PACKAGE_WIFI, PACKAGE_COMPANION, PACKAGE_RETAIL_DEMO, PACKAGE_RECENTS, }) @Retention(RetentionPolicy.SOURCE) public @interface KnownPackage {} public static final int PACKAGE_SYSTEM = 0; public static final int PACKAGE_SETUP_WIZARD = 1; public static final int PACKAGE_INSTALLER = 2; public static final int PACKAGE_UNINSTALLER = 3; public static final int PACKAGE_VERIFIER = 4; public static final int PACKAGE_BROWSER = 5; public static final int PACKAGE_SYSTEM_TEXT_CLASSIFIER = 6; public static final int PACKAGE_PERMISSION_CONTROLLER = 7; public static final int PACKAGE_WELLBEING = 8; public static final int PACKAGE_DOCUMENTER = 9; public static final int PACKAGE_CONFIGURATOR = 10; public static final int PACKAGE_INCIDENT_REPORT_APPROVER = 11; public static final int PACKAGE_APP_PREDICTOR = 12; public static final int PACKAGE_OVERLAY_CONFIG_SIGNATURE = 13; public static final int PACKAGE_WIFI = 14; public static final int PACKAGE_COMPANION = 15; public static final int PACKAGE_RETAIL_DEMO = 16; public static final int PACKAGE_RECENTS = 17; public static final int PACKAGE_AMBIENT_CONTEXT_DETECTION = 18; // Integer value of the last known package ID. Increases as new ID is added to KnownPackage. // Please note the numbers should be continuous. public static final int LAST_KNOWN_PACKAGE = PACKAGE_AMBIENT_CONTEXT_DETECTION; @LongDef(flag = true, prefix = "RESOLVE_", value = { RESOLVE_NON_BROWSER_ONLY, RESOLVE_NON_RESOLVER_ONLY Loading Loading @@ -754,12 +710,11 @@ public abstract class PackageManagerInternal { */ public abstract boolean isResolveActivityComponent(@NonNull ComponentInfo component); /** * Returns a list of package names for a known package */ public abstract @NonNull String[] getKnownPackageNames( @KnownPackage int knownPackage, int userId); @KnownPackages.KnownPackage int knownPackage, int userId); /** * Returns whether the package is an instant app. Loading Loading @@ -1142,55 +1097,6 @@ public abstract class PackageManagerInternal { public abstract boolean registerInstalledLoadingProgressCallback(@NonNull String packageName, @NonNull InstalledLoadingProgressCallback callback, int userId); /** * Returns the string representation of a known package. For example, * {@link #PACKAGE_SETUP_WIZARD} is represented by the string Setup Wizard. * * @param knownPackage The known package. * @return The string representation. */ public static @NonNull String knownPackageToString(@KnownPackage int knownPackage) { switch (knownPackage) { case PACKAGE_SYSTEM: return "System"; case PACKAGE_SETUP_WIZARD: return "Setup Wizard"; case PACKAGE_INSTALLER: return "Installer"; case PACKAGE_UNINSTALLER: return "Uninstaller"; case PACKAGE_VERIFIER: return "Verifier"; case PACKAGE_BROWSER: return "Browser"; case PACKAGE_SYSTEM_TEXT_CLASSIFIER: return "System Text Classifier"; case PACKAGE_PERMISSION_CONTROLLER: return "Permission Controller"; case PACKAGE_WELLBEING: return "Wellbeing"; case PACKAGE_DOCUMENTER: return "Documenter"; case PACKAGE_CONFIGURATOR: return "Configurator"; case PACKAGE_INCIDENT_REPORT_APPROVER: return "Incident Report Approver"; case PACKAGE_APP_PREDICTOR: return "App Predictor"; case PACKAGE_WIFI: return "Wi-Fi"; case PACKAGE_COMPANION: return "Companion"; case PACKAGE_RETAIL_DEMO: return "Retail Demo"; case PACKAGE_OVERLAY_CONFIG_SIGNATURE: return "Overlay Config Signature"; case PACKAGE_RECENTS: return "Recents"; } return "Unknown"; } /** * Callback to listen for loading progress of a package installed on Incremental File System. */ Loading
services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.infra.AbstractMasterSystemService; import com.android.server.infra.FrameworkResourcesServiceNameResolver; import com.android.server.pm.KnownPackages; import java.io.FileDescriptor; import java.io.PrintWriter; Loading Loading @@ -117,7 +118,7 @@ public class AmbientContextManagerService extends public static boolean isDetectionServiceConfigured() { final PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class); final String[] packageNames = pmi.getKnownPackageNames( PackageManagerInternal.PACKAGE_AMBIENT_CONTEXT_DETECTION, UserHandle.USER_SYSTEM); KnownPackages.PACKAGE_AMBIENT_CONTEXT_DETECTION, UserHandle.USER_SYSTEM); boolean isServiceConfigured = (packageNames.length != 0); Slog.i(TAG, "Detection service configured: " + isServiceConfigured); return isServiceConfigured; Loading
services/core/java/com/android/server/om/OverlayManagerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.SystemConfig; import com.android.server.SystemService; import com.android.server.pm.KnownPackages; import com.android.server.pm.UserManagerService; import com.android.server.pm.parsing.pkg.AndroidPackage; Loading Loading @@ -1264,7 +1265,7 @@ public final class OverlayManagerService extends SystemService { @Override public String getConfigSignaturePackage() { final String[] pkgs = mPackageManagerInternal.getKnownPackageNames( PackageManagerInternal.PACKAGE_OVERLAY_CONFIG_SIGNATURE, KnownPackages.PACKAGE_OVERLAY_CONFIG_SIGNATURE, UserHandle.USER_SYSTEM); return (pkgs.length == 0) ? null : pkgs[0]; } Loading
services/core/java/com/android/server/pm/Computer.java +26 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.Pair; import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.AndroidPackage; Loading Loading @@ -571,6 +572,31 @@ public interface Computer extends PackageDataSnapshot { @NonNull WatchedArrayMap<String, Integer> getFrozenPackages(); /** * Verify that given package is currently frozen. */ void checkPackageFrozen(@NonNull String packageName); @Nullable ComponentName getInstantAppInstallerComponent(); void dumpPermissions(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState); void dumpPackages(PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin); void dumpKeySet(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull DumpState dumpState); void dumpSharedUsers(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin); void dumpSharedUsersProto(@NonNull ProtoOutputStream proto); void dumpPackagesProto(@NonNull ProtoOutputStream proto); void dumpSharedLibrariesProto(@NonNull ProtoOutputStream protoOutputStream); }
services/core/java/com/android/server/pm/ComputerEngine.java +108 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.TypedXmlSerializer; import android.util.Xml; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; Loading Loading @@ -322,6 +323,37 @@ public class ComputerEngine implements Computer { } return res; } public void dumpPackagesProto(ProtoOutputStream proto) { mSettings.dumpPackagesProto(proto); } public void dumpPermissions(PrintWriter pw, String packageName, ArraySet<String> permissionNames, DumpState dumpState) { mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState); } public void dumpPackages(PrintWriter pw, String packageName, ArraySet<String> permissionNames, DumpState dumpState, boolean checkin) { mSettings.dumpPackagesLPr(pw, packageName, permissionNames, dumpState, checkin); } public void dumpKeySet(PrintWriter pw, String packageName, DumpState dumpState) { mSettings.getKeySetManagerService().dumpLPr(pw, packageName, dumpState); } public void dumpSharedUsers(PrintWriter pw, String packageName, ArraySet<String> permissionNames, DumpState dumpState, boolean checkin) { mSettings.dumpSharedUsersLPr(pw, packageName, permissionNames, dumpState, checkin); } public void dumpReadMessages(PrintWriter pw, DumpState dumpState) { mSettings.dumpReadMessages(pw, dumpState); } public void dumpSharedUsersProto(ProtoOutputStream proto) { mSettings.dumpSharedUsersProto(proto); } } private static final Comparator<ProviderInfo> sProviderInitOrderSorter = (p1, p2) -> { Loading Loading @@ -3211,6 +3243,34 @@ public class ComputerEngine implements Computer { } break; } case DumpState.DUMP_MESSAGES: { mSettings.dumpReadMessages(pw, dumpState); break; } case DumpState.DUMP_FROZEN: { // XXX should handle packageName != null by dumping only install data that // the given package is involved with. if (dumpState.onTitlePrinted()) { pw.println(); } final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ", 120); ipw.println(); ipw.println("Frozen packages:"); ipw.increaseIndent(); if (mFrozenPackages.size() == 0) { ipw.println("(none)"); } else { for (int i = 0; i < mFrozenPackages.size(); i++) { ipw.print("package="); ipw.print(mFrozenPackages.keyAt(i)); ipw.print(", refCounts="); ipw.println(mFrozenPackages.valueAt(i)); } } ipw.decreaseIndent(); } } // switch } Loading Loading @@ -5698,10 +5758,58 @@ public class ComputerEngine implements Computer { return mFrozenPackages; } @Override public void checkPackageFrozen(@NonNull String packageName) { if (!mFrozenPackages.containsKey(packageName)) { Slog.wtf(TAG, "Expected " + packageName + " to be frozen!", new Throwable()); } } @Nullable @Override public ComponentName getInstantAppInstallerComponent() { return mLocalInstantAppInstallerActivity == null ? null : mLocalInstantAppInstallerActivity.getComponentName(); } @Override public void dumpPermissions(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState) { mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState); } @Override public void dumpPackages(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin) { mSettings.dumpPackages(pw, packageName, permissionNames, dumpState, checkin); } @Override public void dumpKeySet(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull DumpState dumpState) { mSettings.dumpKeySet(pw, packageName, dumpState); } @Override public void dumpSharedUsers(@NonNull PrintWriter pw, @NonNull String packageName, @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState, boolean checkin) { mSettings.dumpSharedUsers(pw, packageName, permissionNames, dumpState, checkin); } @Override public void dumpSharedUsersProto(@NonNull ProtoOutputStream proto) { mSettings.dumpSharedUsersProto(proto); } @Override public void dumpPackagesProto(@NonNull ProtoOutputStream proto) { mSettings.dumpPackagesProto(proto); } @Override public void dumpSharedLibrariesProto(@NonNull ProtoOutputStream proto) { mSharedLibraries.dumpProto(proto); } }