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

Commit 90545428 authored by Evgenii Stepanov's avatar Evgenii Stepanov Committed by Automerger Merge Worker
Browse files

Merge "Cleanup nativeHeapZeroInit and memtagMode implementation." into sc-dev am: 9c1d0087

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13830729

Change-Id: I519a2f1c7195472ec195d33ce252e3ac5413939b
parents 6c612fea 9c1d0087
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1009,7 +1009,7 @@ package android {
    field public static final int multiArch = 16843918; // 0x101048e
    field public static final int multiprocess = 16842771; // 0x1010013
    field public static final int name = 16842755; // 0x1010003
    field public static final int nativeHeapZeroInit = 16844325; // 0x1010625
    field public static final int nativeHeapZeroInitialized = 16844325; // 0x1010625
    field public static final int navigationBarColor = 16843858; // 0x1010452
    field public static final int navigationBarDividerColor = 16844141; // 0x101056d
    field public static final int navigationContentDescription = 16843969; // 0x10104c1
@@ -11864,7 +11864,7 @@ package android.content.pm {
    method public static CharSequence getCategoryTitle(android.content.Context, int);
    method public int getGwpAsanMode();
    method public int getMemtagMode();
    method @Nullable public Boolean isNativeHeapZeroInit();
    method public int getNativeHeapZeroInitialized();
    method public boolean isProfileableByShell();
    method public boolean isResourceOverlay();
    method public boolean isVirtualPreload();
@@ -11919,6 +11919,9 @@ package android.content.pm {
    field public static final int MEMTAG_DEFAULT = -1; // 0xffffffff
    field public static final int MEMTAG_OFF = 0; // 0x0
    field public static final int MEMTAG_SYNC = 2; // 0x2
    field public static final int ZEROINIT_DEFAULT = -1; // 0xffffffff
    field public static final int ZEROINIT_DISABLED = 0; // 0x0
    field public static final int ZEROINIT_ENABLED = 1; // 0x1
    field public String appComponentFactory;
    field public String backupAgentName;
    field public int category;
+57 −15
Original line number Diff line number Diff line
@@ -1363,7 +1363,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
     * Indicates if the application has requested GWP-ASan to be enabled, disabled, or left
     * unspecified. Processes can override this setting.
     */
    private @GwpAsanMode int gwpAsanMode;
    private @GwpAsanMode int gwpAsanMode = GWP_ASAN_DEFAULT;

    /**
     * Default (unspecified) setting of Memtag.
@@ -1402,13 +1402,38 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
     * Indicates if the application has requested Memtag to be enabled, disabled, or left
     * unspecified. Processes can override this setting.
     */
    private @MemtagMode int memtagMode;
    private @MemtagMode int memtagMode = MEMTAG_DEFAULT;

    /**
     * Default (unspecified) setting of nativeHeapZeroInitialized.
     */
    public static final int ZEROINIT_DEFAULT = -1;

    /**
     * Disable zero-initialization of the native heap in this application or process.
     */
    public static final int ZEROINIT_DISABLED = 0;

    /**
     * Enable zero-initialization of the native heap in this application or process.
     */
    public static final int ZEROINIT_ENABLED = 1;

    /**
     * @hide
     */
    @IntDef(prefix = {"ZEROINIT_"}, value = {
            ZEROINIT_DEFAULT,
            ZEROINIT_DISABLED,
            ZEROINIT_ENABLED,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface NativeHeapZeroInitialized {}

    /**
     * Enable automatic zero-initialization of native heap memory allocations.
     */
    @Nullable
    private Boolean nativeHeapZeroInit;
    private @NativeHeapZeroInitialized int nativeHeapZeroInitialized = ZEROINIT_DEFAULT;

    /**
     * If {@code true} this app requests optimized external storage access.
@@ -1570,8 +1595,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
            if (memtagMode != MEMTAG_DEFAULT) {
                pw.println(prefix + "memtagMode=" + memtagMode);
            }
            if (nativeHeapZeroInit != null) {
                pw.println(prefix + "nativeHeapZeroInit=" + nativeHeapZeroInit);
            if (nativeHeapZeroInitialized != ZEROINIT_DEFAULT) {
                pw.println(prefix + "nativeHeapZeroInitialized=" + nativeHeapZeroInitialized);
            }
            if (requestOptimizedExternalStorageAccess != null) {
                pw.println(prefix + "requestOptimizedExternalStorageAccess="
@@ -1686,8 +1711,9 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
            if (memtagMode != MEMTAG_DEFAULT) {
                proto.write(ApplicationInfoProto.Detail.ENABLE_MEMTAG, memtagMode);
            }
            if (nativeHeapZeroInit != null) {
                proto.write(ApplicationInfoProto.Detail.NATIVE_HEAP_ZERO_INIT, nativeHeapZeroInit);
            if (nativeHeapZeroInitialized != ZEROINIT_DEFAULT) {
                proto.write(ApplicationInfoProto.Detail.NATIVE_HEAP_ZERO_INIT,
                        nativeHeapZeroInitialized);
            }
            proto.end(detailToken);
        }
@@ -1802,7 +1828,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
        zygotePreloadName = orig.zygotePreloadName;
        gwpAsanMode = orig.gwpAsanMode;
        memtagMode = orig.memtagMode;
        nativeHeapZeroInit = orig.nativeHeapZeroInit;
        nativeHeapZeroInitialized = orig.nativeHeapZeroInitialized;
        requestOptimizedExternalStorageAccess = orig.requestOptimizedExternalStorageAccess;
    }

@@ -1891,7 +1917,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
        dest.writeString8(zygotePreloadName);
        dest.writeInt(gwpAsanMode);
        dest.writeInt(memtagMode);
        sForBoolean.parcel(nativeHeapZeroInit, dest, parcelableFlags);
        dest.writeInt(nativeHeapZeroInitialized);
        sForBoolean.parcel(requestOptimizedExternalStorageAccess, dest, parcelableFlags);
    }

@@ -1977,7 +2003,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
        zygotePreloadName = source.readString8();
        gwpAsanMode = source.readInt();
        memtagMode = source.readInt();
        nativeHeapZeroInit = sForBoolean.unparcel(source);
        nativeHeapZeroInitialized = source.readInt();
        requestOptimizedExternalStorageAccess = sForBoolean.unparcel(source);
    }

@@ -2382,7 +2408,9 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
    /** {@hide} */ public void setSplitResourcePaths(String[] splitResourcePaths) { splitPublicSourceDirs = splitResourcePaths; }
    /** {@hide} */ public void setGwpAsanMode(@GwpAsanMode int value) { gwpAsanMode = value; }
    /** {@hide} */ public void setMemtagMode(@MemtagMode int value) { memtagMode = value; }
    /** {@hide} */ public void setNativeHeapZeroInit(@Nullable Boolean value) { nativeHeapZeroInit = value; }
    /** {@hide} */ public void setNativeHeapZeroInitialized(@NativeHeapZeroInitialized int value) {
        nativeHeapZeroInitialized = value;
    }
    /** {@hide} */
    public void setRequestOptimizedExternalStorageAccess(@Nullable Boolean value) {
        requestOptimizedExternalStorageAccess = value;
@@ -2400,8 +2428,22 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
    /** {@hide} */ public String[] getSplitResourcePaths() { return splitPublicSourceDirs; }
    @GwpAsanMode
    public int getGwpAsanMode() { return gwpAsanMode; }

    /**
     * Returns whether the application has requested Memtag to be enabled, disabled, or left
     * unspecified. Processes can override this setting.
     */
    @MemtagMode
    public int getMemtagMode() { return memtagMode; }
    @Nullable
    public Boolean isNativeHeapZeroInit() { return nativeHeapZeroInit; }
    public int getMemtagMode() {
        return memtagMode;
    }

    /**
     * Returns whether the application has requested automatic zero-initialization of native heap
     * memory allocations to be enabled or disabled.
     */
    @NativeHeapZeroInitialized
    public int getNativeHeapZeroInitialized() {
        return nativeHeapZeroInitialized;
    }
}
+14 −12
Original line number Diff line number Diff line
@@ -62,8 +62,7 @@ public class ProcessInfo implements Parcelable {
    /**
     * Enable automatic zero-initialization of native heap memory allocations.
     */
    @Nullable
    public Boolean nativeHeapZeroInit;
    public @ApplicationInfo.NativeHeapZeroInitialized int nativeHeapZeroInitialized;

    @Deprecated
    public ProcessInfo(@NonNull ProcessInfo orig) {
@@ -71,7 +70,7 @@ public class ProcessInfo implements Parcelable {
        this.deniedPermissions = orig.deniedPermissions;
        this.gwpAsanMode = orig.gwpAsanMode;
        this.memtagMode = orig.memtagMode;
        this.nativeHeapZeroInit = orig.nativeHeapZeroInit;
        this.nativeHeapZeroInitialized = orig.nativeHeapZeroInitialized;
    }


@@ -101,7 +100,7 @@ public class ProcessInfo implements Parcelable {
     * @param memtagMode
     *   Indicates if the process has requested Memtag to be enabled (in sync or async mode),
     *   disabled, or left unspecified.
     * @param nativeHeapZeroInit
     * @param nativeHeapZeroInitialized
     *   Enable automatic zero-initialization of native heap memory allocations.
     */
    @DataClass.Generated.Member
@@ -110,7 +109,7 @@ public class ProcessInfo implements Parcelable {
            @Nullable ArraySet<String> deniedPermissions,
            @ApplicationInfo.GwpAsanMode int gwpAsanMode,
            @ApplicationInfo.MemtagMode int memtagMode,
            @Nullable Boolean nativeHeapZeroInit) {
            @ApplicationInfo.NativeHeapZeroInitialized int nativeHeapZeroInitialized) {
        this.name = name;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, name);
@@ -121,7 +120,9 @@ public class ProcessInfo implements Parcelable {
        this.memtagMode = memtagMode;
        com.android.internal.util.AnnotationValidations.validate(
                ApplicationInfo.MemtagMode.class, null, memtagMode);
        this.nativeHeapZeroInit = nativeHeapZeroInit;
        this.nativeHeapZeroInitialized = nativeHeapZeroInitialized;
        com.android.internal.util.AnnotationValidations.validate(
                ApplicationInfo.NativeHeapZeroInitialized.class, null, nativeHeapZeroInitialized);

        // onConstructed(); // You can define this method to get a callback
    }
@@ -145,13 +146,12 @@ public class ProcessInfo implements Parcelable {

        byte flg = 0;
        if (deniedPermissions != null) flg |= 0x2;
        if (nativeHeapZeroInit != null) flg |= 0x10;
        dest.writeByte(flg);
        dest.writeString(name);
        sParcellingForDeniedPermissions.parcel(deniedPermissions, dest, flags);
        dest.writeInt(gwpAsanMode);
        dest.writeInt(memtagMode);
        if (nativeHeapZeroInit != null) dest.writeBoolean(nativeHeapZeroInit);
        dest.writeInt(nativeHeapZeroInitialized);
    }

    @Override
@@ -170,7 +170,7 @@ public class ProcessInfo implements Parcelable {
        ArraySet<String> _deniedPermissions = sParcellingForDeniedPermissions.unparcel(in);
        int _gwpAsanMode = in.readInt();
        int _memtagMode = in.readInt();
        Boolean _nativeHeapZeroInit = (flg & 0x10) == 0 ? null : (Boolean) in.readBoolean();
        int _nativeHeapZeroInitialized = in.readInt();

        this.name = _name;
        com.android.internal.util.AnnotationValidations.validate(
@@ -182,7 +182,9 @@ public class ProcessInfo implements Parcelable {
        this.memtagMode = _memtagMode;
        com.android.internal.util.AnnotationValidations.validate(
                ApplicationInfo.MemtagMode.class, null, memtagMode);
        this.nativeHeapZeroInit = _nativeHeapZeroInit;
        this.nativeHeapZeroInitialized = _nativeHeapZeroInitialized;
        com.android.internal.util.AnnotationValidations.validate(
                ApplicationInfo.NativeHeapZeroInitialized.class, null, nativeHeapZeroInitialized);

        // onConstructed(); // You can define this method to get a callback
    }
@@ -202,10 +204,10 @@ public class ProcessInfo implements Parcelable {
    };

    @DataClass.Generated(
            time = 1611614699049L,
            time = 1615850184524L,
            codegenVersion = "1.0.22",
            sourceFile = "frameworks/base/core/java/android/content/pm/ProcessInfo.java",
            inputSignatures = "public @android.annotation.NonNull java.lang.String name\npublic @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedStringArraySet.class) android.util.ArraySet<java.lang.String> deniedPermissions\npublic @android.content.pm.ApplicationInfo.GwpAsanMode int gwpAsanMode\npublic @android.content.pm.ApplicationInfo.MemtagMode int memtagMode\npublic @android.annotation.Nullable java.lang.Boolean nativeHeapZeroInit\nclass ProcessInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genGetters=true, genSetters=false, genParcelable=true, genAidl=false, genBuilder=false)")
            inputSignatures = "public @android.annotation.NonNull java.lang.String name\npublic @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedStringArraySet.class) android.util.ArraySet<java.lang.String> deniedPermissions\npublic @android.content.pm.ApplicationInfo.GwpAsanMode int gwpAsanMode\npublic @android.content.pm.ApplicationInfo.MemtagMode int memtagMode\npublic @android.content.pm.ApplicationInfo.NativeHeapZeroInitialized int nativeHeapZeroInitialized\nclass ProcessInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genGetters=true, genSetters=false, genParcelable=true, genAidl=false, genBuilder=false)")
    @Deprecated
    private void __metadata() {}

+5 −3
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.CallSuper;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.ConfigurationInfo;
import android.content.pm.FeatureGroupInfo;
import android.content.pm.FeatureInfo;
@@ -251,11 +252,12 @@ public interface ParsingPackage extends ParsingPackageRead {

    ParsingPackage setEnabled(boolean enabled);

    ParsingPackage setGwpAsanMode(int gwpAsanMode);
    ParsingPackage setGwpAsanMode(@ApplicationInfo.GwpAsanMode int gwpAsanMode);

    ParsingPackage setMemtagMode(int memtagMode);
    ParsingPackage setMemtagMode(@ApplicationInfo.MemtagMode int memtagMode);

    ParsingPackage setNativeHeapZeroInit(@Nullable Boolean nativeHeapZeroInit);
    ParsingPackage setNativeHeapZeroInitialized(
            @ApplicationInfo.NativeHeapZeroInitialized int nativeHeapZeroInitialized);

    ParsingPackage setRequestOptimizedExternalStorageAccess(
            @Nullable Boolean requestOptimizedExternalStorageAccess);
+20 −15
Original line number Diff line number Diff line
@@ -382,12 +382,14 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {

    private int autoRevokePermissions;

    protected int gwpAsanMode;
    protected int memtagMode;
    @ApplicationInfo.GwpAsanMode
    private int gwpAsanMode;

    @Nullable
    @DataClass.ParcelWith(ForBoolean.class)
    private Boolean nativeHeapZeroInit;
    @ApplicationInfo.MemtagMode
    private int memtagMode;

    @ApplicationInfo.NativeHeapZeroInitialized
    private int nativeHeapZeroInitialized;

    @Nullable
    @DataClass.ParcelWith(ForBoolean.class)
@@ -1071,7 +1073,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
        appInfo.zygotePreloadName = zygotePreloadName;
        appInfo.setGwpAsanMode(gwpAsanMode);
        appInfo.setMemtagMode(memtagMode);
        appInfo.setNativeHeapZeroInit(nativeHeapZeroInit);
        appInfo.setNativeHeapZeroInitialized(nativeHeapZeroInitialized);
        appInfo.setRequestOptimizedExternalStorageAccess(requestOptimizedExternalStorageAccess);
        appInfo.setBaseCodePath(mBaseApkPath);
        appInfo.setBaseResourcePath(mBaseApkPath);
@@ -1207,7 +1209,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
        dest.writeLong(this.mBooleans);
        dest.writeMap(this.mProperties);
        dest.writeInt(this.memtagMode);
        sForBoolean.parcel(this.nativeHeapZeroInit, dest, flags);
        dest.writeInt(this.nativeHeapZeroInitialized);
        sForBoolean.parcel(this.requestOptimizedExternalStorageAccess, dest, flags);
    }

@@ -1331,7 +1333,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
        this.mBooleans = in.readLong();
        this.mProperties = in.createTypedArrayMap(Property.CREATOR);
        this.memtagMode = in.readInt();
        this.nativeHeapZeroInit = sForBoolean.unparcel(in);
        this.nativeHeapZeroInitialized = in.readInt();
        this.requestOptimizedExternalStorageAccess = sForBoolean.unparcel(in);
        assignDerivedFields();
    }
@@ -2096,20 +2098,22 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
        return getBoolean(Booleans.DIRECT_BOOT_AWARE);
    }

    @ApplicationInfo.GwpAsanMode
    @Override
    public int getGwpAsanMode() {
        return gwpAsanMode;
    }

    @ApplicationInfo.MemtagMode
    @Override
    public int getMemtagMode() {
        return memtagMode;
    }

    @Nullable
    @ApplicationInfo.NativeHeapZeroInitialized
    @Override
    public Boolean isNativeHeapZeroInit() {
        return nativeHeapZeroInit;
    public int getNativeHeapZeroInitialized() {
        return nativeHeapZeroInitialized;
    }

    @Nullable
@@ -2550,20 +2554,21 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
    }

    @Override
    public ParsingPackageImpl setGwpAsanMode(int value) {
    public ParsingPackageImpl setGwpAsanMode(@ApplicationInfo.GwpAsanMode int value) {
        gwpAsanMode = value;
        return this;
    }

    @Override
    public ParsingPackageImpl setMemtagMode(int value) {
    public ParsingPackageImpl setMemtagMode(@ApplicationInfo.MemtagMode int value) {
        memtagMode = value;
        return this;
    }

    @Override
    public ParsingPackageImpl setNativeHeapZeroInit(@Nullable Boolean value) {
        nativeHeapZeroInit = value;
    public ParsingPackageImpl setNativeHeapZeroInitialized(
            @ApplicationInfo.NativeHeapZeroInitialized int value) {
        nativeHeapZeroInitialized = value;
        return this;
    }

Loading