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

Commit 7622add8 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Add null-checks: RuntimePermissionPresentationInfo

Also make sure that nullability
- is enforced during creating
- is enforced during un-parceling

Test: Looked at Settings screens that read this data
Fixes: 126702133
Change-Id: I8cdd3a5583f01276702307b40f65fa8d7ac49bf2
parent 7b040522
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5692,7 +5692,7 @@ package android.permission {
  }
  public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
    ctor public RuntimePermissionPresentationInfo(CharSequence, boolean, boolean);
    ctor public RuntimePermissionPresentationInfo(@NonNull CharSequence, boolean, boolean);
    method public int describeContents();
    method @NonNull public CharSequence getLabel();
    method public boolean isGranted();
+12 −9
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;

import com.android.internal.util.Preconditions;

/**
 * This class contains information about how a runtime permission
 * is to be presented in the UI. A single runtime permission
@@ -35,7 +37,7 @@ public final class RuntimePermissionPresentationInfo implements Parcelable {
    private static final int FLAG_GRANTED = 1 << 0;
    private static final int FLAG_STANDARD = 1 << 1;

    private final CharSequence mLabel;
    private final @NonNull CharSequence mLabel;
    private final int mFlags;

    /**
@@ -45,8 +47,10 @@ public final class RuntimePermissionPresentationInfo implements Parcelable {
     * @param granted Whether the permission is granted.
     * @param standard Whether this is a platform-defined permission.
     */
    public RuntimePermissionPresentationInfo(CharSequence label,
    public RuntimePermissionPresentationInfo(@NonNull CharSequence label,
            boolean granted, boolean standard) {
        Preconditions.checkNotNull(label);

        mLabel = label;
        int flags = 0;
        if (granted) {
@@ -58,11 +62,6 @@ public final class RuntimePermissionPresentationInfo implements Parcelable {
        mFlags = flags;
    }

    private RuntimePermissionPresentationInfo(Parcel parcel) {
        mLabel = parcel.readCharSequence();
        mFlags = parcel.readInt();
    }

    /**
     * @return Whether the permission is granted.
     */
@@ -97,10 +96,14 @@ public final class RuntimePermissionPresentationInfo implements Parcelable {
        parcel.writeInt(mFlags);
    }

    public static final @android.annotation.NonNull Creator<RuntimePermissionPresentationInfo> CREATOR =
    public static final @NonNull Creator<RuntimePermissionPresentationInfo> CREATOR =
            new Creator<RuntimePermissionPresentationInfo>() {
        public RuntimePermissionPresentationInfo createFromParcel(Parcel source) {
            return new RuntimePermissionPresentationInfo(source);
            CharSequence label = source.readCharSequence();
            int flags = source.readInt();

            return new RuntimePermissionPresentationInfo(label, (flags & FLAG_GRANTED) != 0,
                    (flags & FLAG_STANDARD) != 0);
        }

        public RuntimePermissionPresentationInfo[] newArray(int size) {