Loading core/java/android/content/pm/PackageManager.java +9 −0 Original line number Diff line number Diff line Loading @@ -1302,6 +1302,7 @@ public abstract class PackageManager { DELETE_ALL_USERS, DELETE_SYSTEM_APP, DELETE_DONT_KILL_APP, DELETE_CHATTY, }) @Retention(RetentionPolicy.SOURCE) public @interface DeleteFlags {} Loading Loading @@ -1342,6 +1343,14 @@ public abstract class PackageManager { */ public static final int DELETE_DONT_KILL_APP = 0x00000008; /** * Flag parameter for {@link #deletePackage} to indicate that package deletion * should be chatty. * * @hide */ public static final int DELETE_CHATTY = 0x80000000; /** * Return code for when package deletion succeeds. This is passed to the * {@link IPackageDeleteObserver} if the system succeeded in deleting the Loading core/java/android/content/pm/PackageParser.java +41 −53 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static android.os.Build.VERSION_CODES.O; import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_UNSPECIFIED; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -107,6 +108,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.reflect.Constructor; import java.security.GeneralSecurityException; import java.security.KeyFactory; Loading Loading @@ -818,22 +821,33 @@ public class PackageParser { } } public static final int PARSE_IS_SYSTEM = 1 << 0; public static final int PARSE_CHATTY = 1 << 1; public static final int PARSE_MUST_BE_APK = 1 << 2; public static final int PARSE_IGNORE_PROCESSES = 1 << 3; public static final int PARSE_FORWARD_LOCK = 1 << 4; public static final int PARSE_EXTERNAL_STORAGE = 1 << 5; public static final int PARSE_IS_SYSTEM_DIR = 1 << 6; public static final int PARSE_IS_PRIVILEGED = 1 << 7; public static final int PARSE_COLLECT_CERTIFICATES = 1 << 8; public static final int PARSE_TRUSTED_OVERLAY = 1 << 9; public static final int PARSE_ENFORCE_CODE = 1 << 10; /** @deprecated remove when fixing b/34761192 */ public static final int PARSE_MUST_BE_APK = 1 << 0; public static final int PARSE_IGNORE_PROCESSES = 1 << 1; public static final int PARSE_FORWARD_LOCK = 1 << 2; public static final int PARSE_EXTERNAL_STORAGE = 1 << 3; public static final int PARSE_IS_SYSTEM_DIR = 1 << 4; public static final int PARSE_COLLECT_CERTIFICATES = 1 << 5; public static final int PARSE_ENFORCE_CODE = 1 << 6; public static final int PARSE_FORCE_SDK = 1 << 7; /** @deprecated remove when fixing b/68860689 */ @Deprecated public static final int PARSE_IS_EPHEMERAL = 1 << 11; public static final int PARSE_FORCE_SDK = 1 << 12; public static final int PARSE_IS_OEM = 1 << 13; public static final int PARSE_IS_EPHEMERAL = 1 << 8; public static final int PARSE_CHATTY = 1 << 31; @IntDef(flag = true, prefix = { "PARSE_" }, value = { PARSE_CHATTY, PARSE_COLLECT_CERTIFICATES, PARSE_ENFORCE_CODE, PARSE_EXTERNAL_STORAGE, PARSE_FORCE_SDK, PARSE_FORWARD_LOCK, PARSE_IGNORE_PROCESSES, PARSE_IS_EPHEMERAL, PARSE_IS_SYSTEM_DIR, PARSE_MUST_BE_APK, }) @Retention(RetentionPolicy.SOURCE) public @interface ParseFlags {} private static final Comparator<String> sSplitNameComparator = new SplitNameComparator(); Loading Loading @@ -1507,7 +1521,7 @@ public class PackageParser { * populating {@link Package#mSignatures}. Also asserts that all APK * contents are signed correctly and consistently. */ public static void collectCertificates(Package pkg, int parseFlags) public static void collectCertificates(Package pkg, @ParseFlags int parseFlags) throws PackageParserException { collectCertificatesInternal(pkg, parseFlags); final int childCount = (pkg.childPackages != null) ? pkg.childPackages.size() : 0; Loading @@ -1519,7 +1533,7 @@ public class PackageParser { } } private static void collectCertificatesInternal(Package pkg, int parseFlags) private static void collectCertificatesInternal(Package pkg, @ParseFlags int parseFlags) throws PackageParserException { pkg.mCertificates = null; pkg.mSignatures = null; Loading @@ -1539,7 +1553,7 @@ public class PackageParser { } } private static void collectCertificates(Package pkg, File apkFile, int parseFlags) private static void collectCertificates(Package pkg, File apkFile, @ParseFlags int parseFlags) throws PackageParserException { final String apkPath = apkFile.getAbsolutePath(); Loading Loading @@ -2454,7 +2468,7 @@ public class PackageParser { sa.recycle(); if (name != null && (flags&PARSE_IS_SYSTEM) != 0) { if (name != null) { if (pkg.protectedBroadcasts == null) { pkg.protectedBroadcasts = new ArrayList<String>(); } Loading Loading @@ -3255,9 +3269,6 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); perm.info.priority = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0); if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) == 0) { perm.info.priority = 0; } sa.recycle(); Loading Loading @@ -3563,19 +3574,16 @@ public class PackageParser { ai.descriptionRes = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestApplication_description, 0); if ((flags&PARSE_IS_SYSTEM) != 0) { if (sa.getBoolean( com.android.internal.R.styleable.AndroidManifestApplication_persistent, false)) { // Check if persistence is based on a feature being present final String requiredFeature = sa.getNonResourceString( com.android.internal.R.styleable. AndroidManifestApplication_persistentWhenFeatureAvailable); final String requiredFeature = sa.getNonResourceString(com.android.internal.R.styleable .AndroidManifestApplication_persistentWhenFeatureAvailable); if (requiredFeature == null || mCallback.hasFeature(requiredFeature)) { ai.flags |= ApplicationInfo.FLAG_PERSISTENT; } } } if (sa.getBoolean( com.android.internal.R.styleable.AndroidManifestApplication_requiredForAllUsers, Loading Loading @@ -4443,13 +4451,6 @@ public class PackageParser { if (sa.getBoolean(R.styleable.AndroidManifestActivity_singleUser, false)) { a.info.flags |= ActivityInfo.FLAG_SINGLE_USER; if (a.info.exported && (flags & PARSE_IS_PRIVILEGED) == 0) { Slog.w(TAG, "Activity exported request ignored due to singleUser: " + a.className + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); a.info.exported = false; setExported = true; } } a.info.encryptionAware = a.info.directBootAware = sa.getBoolean( Loading Loading @@ -5038,12 +5039,6 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestProvider_singleUser, false)) { p.info.flags |= ProviderInfo.FLAG_SINGLE_USER; if (p.info.exported && (flags & PARSE_IS_PRIVILEGED) == 0) { Slog.w(TAG, "Provider exported request ignored due to singleUser: " + p.className + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); p.info.exported = false; } } p.info.encryptionAware = p.info.directBootAware = sa.getBoolean( Loading Loading @@ -5365,13 +5360,6 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestService_singleUser, false)) { s.info.flags |= ServiceInfo.FLAG_SINGLE_USER; if (s.info.exported && (flags & PARSE_IS_PRIVILEGED) == 0) { Slog.w(TAG, "Service exported request ignored due to singleUser: " + s.className + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); s.info.exported = false; setExported = true; } } s.info.encryptionAware = s.info.directBootAware = sa.getBoolean( Loading services/core/java/com/android/server/pm/PackageManagerService.java +290 −195 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
core/java/android/content/pm/PackageManager.java +9 −0 Original line number Diff line number Diff line Loading @@ -1302,6 +1302,7 @@ public abstract class PackageManager { DELETE_ALL_USERS, DELETE_SYSTEM_APP, DELETE_DONT_KILL_APP, DELETE_CHATTY, }) @Retention(RetentionPolicy.SOURCE) public @interface DeleteFlags {} Loading Loading @@ -1342,6 +1343,14 @@ public abstract class PackageManager { */ public static final int DELETE_DONT_KILL_APP = 0x00000008; /** * Flag parameter for {@link #deletePackage} to indicate that package deletion * should be chatty. * * @hide */ public static final int DELETE_CHATTY = 0x80000000; /** * Return code for when package deletion succeeds. This is passed to the * {@link IPackageDeleteObserver} if the system succeeded in deleting the Loading
core/java/android/content/pm/PackageParser.java +41 −53 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static android.os.Build.VERSION_CODES.O; import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_UNSPECIFIED; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -107,6 +108,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.reflect.Constructor; import java.security.GeneralSecurityException; import java.security.KeyFactory; Loading Loading @@ -818,22 +821,33 @@ public class PackageParser { } } public static final int PARSE_IS_SYSTEM = 1 << 0; public static final int PARSE_CHATTY = 1 << 1; public static final int PARSE_MUST_BE_APK = 1 << 2; public static final int PARSE_IGNORE_PROCESSES = 1 << 3; public static final int PARSE_FORWARD_LOCK = 1 << 4; public static final int PARSE_EXTERNAL_STORAGE = 1 << 5; public static final int PARSE_IS_SYSTEM_DIR = 1 << 6; public static final int PARSE_IS_PRIVILEGED = 1 << 7; public static final int PARSE_COLLECT_CERTIFICATES = 1 << 8; public static final int PARSE_TRUSTED_OVERLAY = 1 << 9; public static final int PARSE_ENFORCE_CODE = 1 << 10; /** @deprecated remove when fixing b/34761192 */ public static final int PARSE_MUST_BE_APK = 1 << 0; public static final int PARSE_IGNORE_PROCESSES = 1 << 1; public static final int PARSE_FORWARD_LOCK = 1 << 2; public static final int PARSE_EXTERNAL_STORAGE = 1 << 3; public static final int PARSE_IS_SYSTEM_DIR = 1 << 4; public static final int PARSE_COLLECT_CERTIFICATES = 1 << 5; public static final int PARSE_ENFORCE_CODE = 1 << 6; public static final int PARSE_FORCE_SDK = 1 << 7; /** @deprecated remove when fixing b/68860689 */ @Deprecated public static final int PARSE_IS_EPHEMERAL = 1 << 11; public static final int PARSE_FORCE_SDK = 1 << 12; public static final int PARSE_IS_OEM = 1 << 13; public static final int PARSE_IS_EPHEMERAL = 1 << 8; public static final int PARSE_CHATTY = 1 << 31; @IntDef(flag = true, prefix = { "PARSE_" }, value = { PARSE_CHATTY, PARSE_COLLECT_CERTIFICATES, PARSE_ENFORCE_CODE, PARSE_EXTERNAL_STORAGE, PARSE_FORCE_SDK, PARSE_FORWARD_LOCK, PARSE_IGNORE_PROCESSES, PARSE_IS_EPHEMERAL, PARSE_IS_SYSTEM_DIR, PARSE_MUST_BE_APK, }) @Retention(RetentionPolicy.SOURCE) public @interface ParseFlags {} private static final Comparator<String> sSplitNameComparator = new SplitNameComparator(); Loading Loading @@ -1507,7 +1521,7 @@ public class PackageParser { * populating {@link Package#mSignatures}. Also asserts that all APK * contents are signed correctly and consistently. */ public static void collectCertificates(Package pkg, int parseFlags) public static void collectCertificates(Package pkg, @ParseFlags int parseFlags) throws PackageParserException { collectCertificatesInternal(pkg, parseFlags); final int childCount = (pkg.childPackages != null) ? pkg.childPackages.size() : 0; Loading @@ -1519,7 +1533,7 @@ public class PackageParser { } } private static void collectCertificatesInternal(Package pkg, int parseFlags) private static void collectCertificatesInternal(Package pkg, @ParseFlags int parseFlags) throws PackageParserException { pkg.mCertificates = null; pkg.mSignatures = null; Loading @@ -1539,7 +1553,7 @@ public class PackageParser { } } private static void collectCertificates(Package pkg, File apkFile, int parseFlags) private static void collectCertificates(Package pkg, File apkFile, @ParseFlags int parseFlags) throws PackageParserException { final String apkPath = apkFile.getAbsolutePath(); Loading Loading @@ -2454,7 +2468,7 @@ public class PackageParser { sa.recycle(); if (name != null && (flags&PARSE_IS_SYSTEM) != 0) { if (name != null) { if (pkg.protectedBroadcasts == null) { pkg.protectedBroadcasts = new ArrayList<String>(); } Loading Loading @@ -3255,9 +3269,6 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); perm.info.priority = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0); if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) == 0) { perm.info.priority = 0; } sa.recycle(); Loading Loading @@ -3563,19 +3574,16 @@ public class PackageParser { ai.descriptionRes = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestApplication_description, 0); if ((flags&PARSE_IS_SYSTEM) != 0) { if (sa.getBoolean( com.android.internal.R.styleable.AndroidManifestApplication_persistent, false)) { // Check if persistence is based on a feature being present final String requiredFeature = sa.getNonResourceString( com.android.internal.R.styleable. AndroidManifestApplication_persistentWhenFeatureAvailable); final String requiredFeature = sa.getNonResourceString(com.android.internal.R.styleable .AndroidManifestApplication_persistentWhenFeatureAvailable); if (requiredFeature == null || mCallback.hasFeature(requiredFeature)) { ai.flags |= ApplicationInfo.FLAG_PERSISTENT; } } } if (sa.getBoolean( com.android.internal.R.styleable.AndroidManifestApplication_requiredForAllUsers, Loading Loading @@ -4443,13 +4451,6 @@ public class PackageParser { if (sa.getBoolean(R.styleable.AndroidManifestActivity_singleUser, false)) { a.info.flags |= ActivityInfo.FLAG_SINGLE_USER; if (a.info.exported && (flags & PARSE_IS_PRIVILEGED) == 0) { Slog.w(TAG, "Activity exported request ignored due to singleUser: " + a.className + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); a.info.exported = false; setExported = true; } } a.info.encryptionAware = a.info.directBootAware = sa.getBoolean( Loading Loading @@ -5038,12 +5039,6 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestProvider_singleUser, false)) { p.info.flags |= ProviderInfo.FLAG_SINGLE_USER; if (p.info.exported && (flags & PARSE_IS_PRIVILEGED) == 0) { Slog.w(TAG, "Provider exported request ignored due to singleUser: " + p.className + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); p.info.exported = false; } } p.info.encryptionAware = p.info.directBootAware = sa.getBoolean( Loading Loading @@ -5365,13 +5360,6 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestService_singleUser, false)) { s.info.flags |= ServiceInfo.FLAG_SINGLE_USER; if (s.info.exported && (flags & PARSE_IS_PRIVILEGED) == 0) { Slog.w(TAG, "Service exported request ignored due to singleUser: " + s.className + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); s.info.exported = false; setExported = true; } } s.info.encryptionAware = s.info.directBootAware = sa.getBoolean( Loading
services/core/java/com/android/server/pm/PackageManagerService.java +290 −195 File changed.Preview size limit exceeded, changes collapsed. Show changes