Merge "Update ContentInfo to implement Parcelable" into sc-dev

This commit is contained in:
Nikita Dubrovsky
2021-05-01 00:25:24 +00:00
committed by Android (Google) Code Review
3 changed files with 79 additions and 3 deletions

View File

@@ -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<android.view.ContentInfo> 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

View File

@@ -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<android.view.ContentInfo,android.view.ContentInfo> partition(@NonNull java.util.function.Predicate<android.content.ClipData.Item>);
method public void releasePermissions();
}

View File

@@ -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<ContentInfo> CREATOR =
new Parcelable.Creator<ContentInfo>() {
@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];
}
};
}