diff --git a/core/api/current.txt b/core/api/current.txt index 4c49f1d301db8..f23d24a107027 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -46817,12 +46817,15 @@ package android.view { method public void onActionViewExpanded(); } - public final class ContentInfo { + public final class ContentInfo implements android.os.Parcelable { + method public int describeContents(); method @NonNull public android.content.ClipData getClip(); method @Nullable public android.os.Bundle getExtras(); method public int getFlags(); method @Nullable public android.net.Uri getLinkUri(); method public int getSource(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; field public static final int FLAG_CONVERT_TO_PLAIN_TEXT = 1; // 0x1 field public static final int SOURCE_APP = 0; // 0x0 field public static final int SOURCE_AUTOFILL = 4; // 0x4 diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 875a9e7cd2e0a..35767b3acb8c0 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -2672,7 +2672,7 @@ package android.view { field public static final int CALLBACK_ANIMATION = 1; // 0x1 } - public final class ContentInfo { + public final class ContentInfo implements android.os.Parcelable { method @NonNull public android.util.Pair partition(@NonNull java.util.function.Predicate); method public void releasePermissions(); } diff --git a/core/java/android/view/ContentInfo.java b/core/java/android/view/ContentInfo.java index 7966712dc119c..b1b0e6bd088ee 100644 --- a/core/java/android/view/ContentInfo.java +++ b/core/java/android/view/ContentInfo.java @@ -25,6 +25,8 @@ import android.content.ClipData; import android.content.ClipDescription; import android.net.Uri; import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; import android.util.Pair; import android.view.inputmethod.InputContentInfo; @@ -39,7 +41,7 @@ import java.util.function.Predicate; /** * Holds all the relevant data for a request to {@link View#performReceiveContent}. */ -public final class ContentInfo { +public final class ContentInfo implements Parcelable { /** * Specifies the UI through which content is being inserted. Future versions of Android may @@ -420,4 +422,75 @@ public final class ContentInfo { return new ContentInfo(this); } } + + /** + * {@inheritDoc} + */ + @Override + public int describeContents() { + return 0; + } + + /** + * Writes this object into the given parcel. + * + * @param dest The parcel to write into. + * @param flags The flags to use for parceling. + */ + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + mClip.writeToParcel(dest, flags); + dest.writeInt(mSource); + dest.writeInt(mFlags); + Uri.writeToParcel(dest, mLinkUri); + dest.writeBundle(mExtras); + if (mInputContentInfo == null) { + dest.writeInt(0); + } else { + dest.writeInt(1); + mInputContentInfo.writeToParcel(dest, flags); + } + if (mDragAndDropPermissions == null) { + dest.writeInt(0); + } else { + dest.writeInt(1); + mDragAndDropPermissions.writeToParcel(dest, flags); + } + } + + /** + * Creates {@link ContentInfo} instances from parcels. + */ + @NonNull + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public ContentInfo createFromParcel(Parcel parcel) { + ClipData clip = ClipData.CREATOR.createFromParcel(parcel); + int source = parcel.readInt(); + int flags = parcel.readInt(); + Uri linkUri = Uri.CREATOR.createFromParcel(parcel); + Bundle extras = parcel.readBundle(); + InputContentInfo inputContentInfo = null; + if (parcel.readInt() != 0) { + inputContentInfo = InputContentInfo.CREATOR.createFromParcel(parcel); + } + DragAndDropPermissions dragAndDropPermissions = null; + if (parcel.readInt() != 0) { + dragAndDropPermissions = DragAndDropPermissions.CREATOR.createFromParcel(parcel); + } + return new ContentInfo.Builder(clip, source) + .setFlags(flags) + .setLinkUri(linkUri) + .setExtras(extras) + .setInputContentInfo(inputContentInfo) + .setDragAndDropPermissions(dragAndDropPermissions) + .build(); + } + + @Override + public ContentInfo[] newArray(int size) { + return new ContentInfo[size]; + } + }; }