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

Commit 45c350c0 authored by Evgenii Stepanov's avatar Evgenii Stepanov Committed by Android (Google) Code Review
Browse files

Merge changes from topic "allowNativeHeapPointerTagging"

* changes:
  Add android:allowNativeHeapPointerTagging.
  Refactor NativeHeapTagging compat feature.
parents d7ecc623 751fa188
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -289,6 +289,7 @@ package android {
    field public static final int allowBackup = 16843392; // 0x1010280
    field public static final int allowClearUserData = 16842757; // 0x1010005
    field public static final int allowEmbedded = 16843765; // 0x10103f5
    field public static final int allowNativeHeapPointerTagging = 16844311; // 0x1010617
    field public static final int allowParallelSyncs = 16843570; // 0x1010332
    field public static final int allowSingleTap = 16843353; // 0x1010259
    field public static final int allowTaskReparenting = 16843268; // 0x1010204
+17 −0
Original line number Diff line number Diff line
@@ -702,6 +702,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
     */
    public static final int PRIVATE_FLAG_ODM = 1 << 30;

    /**
     * Value for {@link #privateFlags}: If {@code true} this app allows heap tagging.
     * {@link com.android.server.am.ProcessList#NATIVE_HEAP_POINTER_TAGGING}
     * @hide
     */
    public static final int PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING = 1 << 31;

    /** @hide */
    @IntDef(flag = true, prefix = { "PRIVATE_FLAG_" }, value = {
            PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE,
@@ -733,6 +740,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
            PRIVATE_FLAG_ALLOW_AUDIO_PLAYBACK_CAPTURE,
            PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE,
            PRIVATE_FLAG_ODM,
            PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface ApplicationInfoPrivateFlags {}
@@ -1878,6 +1886,15 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
        return (privateFlags & PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE) != 0;
    }

    /**
     * If {@code true} this app allows heap pointer tagging.
     *
     * @hide
     */
    public boolean allowsNativeHeapPointerTagging() {
        return (privateFlags & PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING) != 0;
    }

    private boolean isAllowedToUseHiddenApis() {
        if (isSignedWithPlatformKey()) {
            return true;
+5 −0
Original line number Diff line number Diff line
@@ -3710,6 +3710,11 @@ public class PackageParser {
            ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE;
        }

        if (sa.getBoolean(
                R.styleable.AndroidManifestApplication_allowNativeHeapPointerTagging, true)) {
            ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING;
        }

        ai.maxAspectRatio = sa.getFloat(R.styleable.AndroidManifestApplication_maxAspectRatio, 0);
        ai.minAspectRatio = sa.getFloat(R.styleable.AndroidManifestApplication_minAspectRatio, 0);

+3 −0
Original line number Diff line number Diff line
@@ -2098,6 +2098,9 @@ public class ApkParseUtils {
                    R.styleable.AndroidManifestApplication_requestLegacyExternalStorage,
                    parsingPackage.getTargetSdkVersion() < Build.VERSION_CODES.Q));

            parsingPackage.setAllowNativeHeapPointerTagging(sa.getBoolean(
                    R.styleable.AndroidManifestApplication_allowNativeHeapPointerTagging, true));

            parsingPackage
                    .setMaxAspectRatio(
                            sa.getFloat(R.styleable.AndroidManifestApplication_maxAspectRatio, 0))
+10 −0
Original line number Diff line number Diff line
@@ -1508,6 +1508,16 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
        return this;
    }

    @Override
    public PackageImpl setAllowNativeHeapPointerTagging(boolean allowNativeHeapPointerTagging) {
        this.privateFlags = allowNativeHeapPointerTagging
                ? this.privateFlags | ApplicationInfo
                        .PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING
                : this.privateFlags & ~ApplicationInfo
                        .PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING;
        return this;
    }

    @Override
    public PackageImpl setUsesNonSdkApi(boolean usesNonSdkApi) {
        this.privateFlags = usesNonSdkApi
Loading