From aeca7c3793206241e081e868f735c3893668f4d4 Mon Sep 17 00:00:00 2001 From: Nikita Dubrovsky Date: Fri, 4 Feb 2022 13:26:31 -0800 Subject: [PATCH] Update ActivityId to implement Parcelable This API change is safe because all constructors of ActivityId were hidden, so we can mark this class as final and update it to implement the Parcelable interface. Test: atest CtsAssistTestCases:ActivityIdTest Bug: 215589465 Change-Id: I4f233b4cf93e0bdd40ed371fad151e6fe6c104c7 --- core/api/system-current.txt | 5 ++- core/api/test-current.txt | 6 +++- core/java/android/app/assist/ActivityId.java | 35 ++++++++++++++++++-- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index ab3feeb9cd17b..1403272ffa4b5 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -1380,7 +1380,10 @@ package android.app.ambientcontext { package android.app.assist { - public class ActivityId { + public final class ActivityId implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; } public static class AssistStructure.ViewNode { diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 9d6fc0e67f031..3cc6830400859 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -567,9 +567,13 @@ package android.app.admin { package android.app.assist { - public class ActivityId { + public final class ActivityId implements android.os.Parcelable { + ctor public ActivityId(int, @Nullable android.os.IBinder); + method public int describeContents(); method public int getTaskId(); method @Nullable public android.os.IBinder getToken(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; } } diff --git a/core/java/android/app/assist/ActivityId.java b/core/java/android/app/assist/ActivityId.java index fb0d056c2a34e..1cc4b024d42df 100644 --- a/core/java/android/app/assist/ActivityId.java +++ b/core/java/android/app/assist/ActivityId.java @@ -22,6 +22,7 @@ import android.annotation.SystemApi; import android.annotation.TestApi; import android.os.IBinder; import android.os.Parcel; +import android.os.Parcelable; import android.service.contentcapture.ContentCaptureService; import android.view.contentcapture.ContentCaptureContext; import android.view.translation.UiTranslationManager; @@ -38,7 +39,8 @@ import com.android.internal.annotations.Immutable; */ @Immutable @SystemApi -public class ActivityId { +@TestApi +public final class ActivityId implements Parcelable { /** * The identifier of the task this activity is in. @@ -53,6 +55,7 @@ public class ActivityId { /** * @hide */ + @TestApi public ActivityId(int taskId, @Nullable IBinder activityId) { mTaskId = taskId; mActivityId = activityId; @@ -87,13 +90,39 @@ public class ActivityId { } /** - * @hide + * {@inheritDoc} */ - public void writeToParcel(@NonNull Parcel dest, int parcelableFlags) { + @Override + public int describeContents() { + return 0; + } + + /** + * {@inheritDoc} + */ + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mTaskId); dest.writeStrongBinder(mActivityId); } + /** + * Creates {@link ActivityId} instances from parcels. + */ + @NonNull + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public ActivityId createFromParcel(Parcel parcel) { + return new ActivityId(parcel); + } + + @Override + public ActivityId[] newArray(int size) { + return new ActivityId[size]; + } + }; + @Override public String toString() { return "ActivityId { taskId = " + mTaskId + ", activityId = " + mActivityId + " }";