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

Commit a89fede0 authored by Bernardo Rufino's avatar Bernardo Rufino
Browse files

Add safer Intent extra APIs and deprecate old ones

Complementing new safer Bundle APIs introduced in aosp/1988908.

Test: Working on CTS
CTS-Coverage-Bug: 224457848
Bug: 224457848
Change-Id: I1d2b15d1214f2bd2eccade45693365098200ae01
parent 31f779f9
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -9748,12 +9748,16 @@ package android.content {
    method @Nullable public long[] getLongArrayExtra(String);
    method public long getLongExtra(String, long);
    method @Nullable public String getPackage();
    method @Nullable public android.os.Parcelable[] getParcelableArrayExtra(String);
    method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayListExtra(String);
    method @Nullable public <T extends android.os.Parcelable> T getParcelableExtra(String);
    method @Deprecated @Nullable public android.os.Parcelable[] getParcelableArrayExtra(String);
    method @Nullable public <T> T[] getParcelableArrayExtra(@Nullable String, @NonNull Class<T>);
    method @Deprecated @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayListExtra(String);
    method @Nullable public <T> java.util.ArrayList<T> getParcelableArrayListExtra(@Nullable String, @NonNull Class<? extends T>);
    method @Deprecated @Nullable public <T extends android.os.Parcelable> T getParcelableExtra(String);
    method @Nullable public <T> T getParcelableExtra(@Nullable String, @NonNull Class<T>);
    method @Nullable public String getScheme();
    method @Nullable public android.content.Intent getSelector();
    method @Nullable public java.io.Serializable getSerializableExtra(String);
    method @Deprecated @Nullable public java.io.Serializable getSerializableExtra(String);
    method @Nullable public <T extends java.io.Serializable> T getSerializableExtra(@Nullable String, @NonNull Class<T>);
    method @Nullable public short[] getShortArrayExtra(String);
    method public short getShortExtra(String, short);
    method @Nullable public android.graphics.Rect getSourceBounds();
+82 −0
Original line number Diff line number Diff line
@@ -8581,12 +8581,31 @@ public class Intent implements Parcelable, Cloneable {
     * @return the value of an item previously added with putExtra(),
     * or null if no Parcelable value was found.
     *
     * @deprecated Use the type-safer {@link #getParcelableExtra(String, Class)} starting from
     *      Android {@link Build.VERSION_CODES#TIRAMISU}.
     *
     * @see #putExtra(String, Parcelable)
     */
    @Deprecated
    public @Nullable <T extends Parcelable> T getParcelableExtra(String name) {
        return mExtras == null ? null : mExtras.<T>getParcelable(name);
    }

    /**
     * Retrieve extended data from the intent.
     *
     * @param name The name of the desired item.
     * @param clazz The type of the object expected.
     *
     * @return the value of an item previously added with putExtra(),
     * or null if no Parcelable value was found.
     *
     * @see #putExtra(String, Parcelable)
     */
    public @Nullable <T> T getParcelableExtra(@Nullable String name, @NonNull Class<T> clazz) {
        return mExtras == null ? null : mExtras.getParcelable(name, clazz);
    }

    /**
     * Retrieve extended data from the intent.
     *
@@ -8595,12 +8614,33 @@ public class Intent implements Parcelable, Cloneable {
     * @return the value of an item previously added with putExtra(),
     * or null if no Parcelable[] value was found.
     *
     * @deprecated Use the type-safer {@link #getParcelableArrayExtra(String, Class)} starting from
     *      Android {@link Build.VERSION_CODES#TIRAMISU}.
     *
     * @see #putExtra(String, Parcelable[])
     */
    @Deprecated
    public @Nullable Parcelable[] getParcelableArrayExtra(String name) {
        return mExtras == null ? null : mExtras.getParcelableArray(name);
    }

    /**
     * Retrieve extended data from the intent.
     *
     * @param name The name of the desired item.
     * @param clazz The type of the items inside the array. This is only verified when unparceling.
     *
     * @return the value of an item previously added with putExtra(),
     * or null if no Parcelable[] value was found.
     *
     * @see #putExtra(String, Parcelable[])
     */
    @SuppressLint({"ArrayReturn", "NullableCollection"})
    public @Nullable <T> T[] getParcelableArrayExtra(@Nullable String name,
            @NonNull Class<T> clazz) {
        return mExtras == null ? null : mExtras.getParcelableArray(name, clazz);
    }

    /**
     * Retrieve extended data from the intent.
     *
@@ -8610,12 +8650,35 @@ public class Intent implements Parcelable, Cloneable {
     * putParcelableArrayListExtra(), or null if no
     * ArrayList<Parcelable> value was found.
     *
     * @deprecated Use the type-safer {@link #getParcelableArrayListExtra(String, Class)} starting
     *      from Android {@link Build.VERSION_CODES#TIRAMISU}.
     *
     * @see #putParcelableArrayListExtra(String, ArrayList)
     */
    @Deprecated
    public @Nullable <T extends Parcelable> ArrayList<T> getParcelableArrayListExtra(String name) {
        return mExtras == null ? null : mExtras.<T>getParcelableArrayList(name);
    }

    /**
     * Retrieve extended data from the intent.
     *
     * @param name The name of the desired item.
     * @param clazz The type of the items inside the array list. This is only verified when
     *     unparceling.
     *
     * @return the value of an item previously added with
     * putParcelableArrayListExtra(), or null if no
     * ArrayList<Parcelable> value was found.
     *
     * @see #putParcelableArrayListExtra(String, ArrayList)
     */
    @SuppressLint({"ConcreteCollection", "NullableCollection"})
    public @Nullable <T> ArrayList<T> getParcelableArrayListExtra(@Nullable String name,
            @NonNull Class<? extends T> clazz) {
        return mExtras == null ? null : mExtras.<T>getParcelableArrayList(name, clazz);
    }

    /**
     * Retrieve extended data from the intent.
     *
@@ -8624,12 +8687,31 @@ public class Intent implements Parcelable, Cloneable {
     * @return the value of an item previously added with putExtra(),
     * or null if no Serializable value was found.
     *
     * @deprecated Use the type-safer {@link #getSerializableExtra(String, Class)} starting from
     *      Android {@link Build.VERSION_CODES#TIRAMISU}.
     *
     * @see #putExtra(String, Serializable)
     */
    public @Nullable Serializable getSerializableExtra(String name) {
        return mExtras == null ? null : mExtras.getSerializable(name);
    }

    /**
     * Retrieve extended data from the intent.
     *
     * @param name The name of the desired item.
     * @param clazz The type of the object expected.
     *
     * @return the value of an item previously added with putExtra(),
     * or null if no Serializable value was found.
     *
     * @see #putExtra(String, Serializable)
     */
    public @Nullable <T extends Serializable> T getSerializableExtra(@Nullable String name,
            @NonNull Class<T> clazz) {
        return mExtras == null ? null : mExtras.getSerializable(name, clazz);
    }

    /**
     * Retrieve extended data from the intent.
     *