From e0c9ef8c59b6457fc6b3df97757d0ece54b972f7 Mon Sep 17 00:00:00 2001 From: Santiago Seifert Date: Mon, 12 Dec 2022 20:52:30 +0000 Subject: [PATCH] Add RouteListingPreference.Item.Builder Test: atest MediaRouter2HostSideTest Bug: 241888071 Bug: 235352899 Change-Id: Iea5eb9f7856fdf02f39b5c06099a2db236b536e7 --- core/api/current.txt | 8 ++- .../android/media/RouteListingPreference.java | 64 ++++++++++++++----- 2 files changed, 54 insertions(+), 18 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 63754ee82be12..1cdacc97eef1a 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -24015,7 +24015,6 @@ package android.media { } public static final class RouteListingPreference.Item implements android.os.Parcelable { - ctor public RouteListingPreference.Item(@NonNull String, int, int); method public int describeContents(); method public int getDisableReason(); method public int getFlags(); @@ -24030,6 +24029,13 @@ package android.media { field public static final int FLAG_SUGGESTED_ROUTE = 2; // 0x2 } + public static final class RouteListingPreference.Item.Builder { + ctor public RouteListingPreference.Item.Builder(@NonNull String); + method @NonNull public android.media.RouteListingPreference.Item build(); + method @NonNull public android.media.RouteListingPreference.Item.Builder setDisableReason(int); + method @NonNull public android.media.RouteListingPreference.Item.Builder setFlags(int); + } + public final class RoutingSessionInfo implements android.os.Parcelable { method public int describeContents(); method @NonNull public String getClientPackageName(); diff --git a/media/java/android/media/RouteListingPreference.java b/media/java/android/media/RouteListingPreference.java index 84e6d3c87461a..b7043cbaceed2 100644 --- a/media/java/android/media/RouteListingPreference.java +++ b/media/java/android/media/RouteListingPreference.java @@ -35,6 +35,7 @@ import java.util.Objects; * System UI Output Switcher). * * @see MediaRouter2#setRouteListingPreference + * @see Item */ public final class RouteListingPreference implements Parcelable { @@ -70,8 +71,8 @@ public final class RouteListingPreference implements Parcelable { } /** - * Returns an unmodifiable list containing the items that the app wants to be listed for media - * routing. + * Returns an unmodifiable list containing the {@link Item items} that the app wants to be + * listed for media routing. */ @NonNull public List getItems() { @@ -109,9 +110,7 @@ public final class RouteListingPreference implements Parcelable { return Objects.hash(mItems); } - // Internal classes. - - /** Holds preference information for a specific route in a media routing listing. */ + /** Holds preference information for a specific route in a {@link RouteListingPreference}. */ public static final class Item implements Parcelable { /** @hide */ @@ -183,18 +182,10 @@ public final class RouteListingPreference implements Parcelable { @Flags private final int mFlags; @DisableReason private final int mDisableReason; - /** - * Creates an instance with the given value. - * - * @param routeId See {@link #getRouteId()}. Must not be empty. - * @param flags See {@link #getFlags()}. - * @param disableReason See {@link #getDisableReason()}. - */ - public Item(@NonNull String routeId, @Flags int flags, @DisableReason int disableReason) { - Preconditions.checkArgument(!TextUtils.isEmpty(routeId)); - mRouteId = routeId; - mFlags = flags; - mDisableReason = disableReason; + private Item(@NonNull Builder builder) { + mRouteId = builder.mRouteId; + mFlags = builder.mFlags; + mDisableReason = builder.mDisableReason; } private Item(Parcel in) { @@ -270,5 +261,44 @@ public final class RouteListingPreference implements Parcelable { public int hashCode() { return Objects.hash(mRouteId, mFlags, mDisableReason); } + + /** Builder for {@link Item}. */ + public static final class Builder { + + private final String mRouteId; + private int mFlags; + private int mDisableReason; + + /** + * Constructor. + * + * @param routeId See {@link Item#getRouteId()}. + */ + public Builder(@NonNull String routeId) { + Preconditions.checkArgument(!TextUtils.isEmpty(routeId)); + mRouteId = routeId; + mDisableReason = DISABLE_REASON_NONE; + } + + /** See {@link Item#getFlags()}. */ + @NonNull + public Builder setFlags(int flags) { + mFlags = flags; + return this; + } + + /** See {@link Item#getDisableReason()}. */ + @NonNull + public Builder setDisableReason(int disableReason) { + mDisableReason = disableReason; + return this; + } + + /** Creates and returns a new {@link Item} with the given parameters. */ + @NonNull + public Item build() { + return new Item(this); + } + } } }