From 4e11dd0048e9dc293bd83ce3bce3850dacb5751d Mon Sep 17 00:00:00 2001 From: Santiago Seifert Date: Thu, 22 Dec 2022 15:32:28 +0000 Subject: [PATCH] Add RouteListingPreference.Builder Test: atest MediaRouter2HostSideTest Bug: 241888071 Bug: 235352899 Change-Id: Ia21f7d67a16b5507806461b992dfd46b5cb86863 --- core/api/current.txt | 8 ++- .../android/media/RouteListingPreference.java | 58 ++++++++++++++++--- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index b63b0aa9784a7..1dff21d27fbbf 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -24211,7 +24211,6 @@ package android.media { } public final class RouteListingPreference implements android.os.Parcelable { - ctor public RouteListingPreference(@NonNull java.util.List, boolean); method public int describeContents(); method @NonNull public java.util.List getItems(); method public boolean getUseSystemOrdering(); @@ -24219,6 +24218,13 @@ package android.media { field @NonNull public static final android.os.Parcelable.Creator CREATOR; } + public static final class RouteListingPreference.Builder { + ctor public RouteListingPreference.Builder(); + method @NonNull public android.media.RouteListingPreference build(); + method @NonNull public android.media.RouteListingPreference.Builder setItems(@NonNull java.util.List); + method @NonNull public android.media.RouteListingPreference.Builder setUseSystemOrdering(boolean); + } + public static final class RouteListingPreference.Item implements android.os.Parcelable { method public int describeContents(); method public int getDisableReason(); diff --git a/media/java/android/media/RouteListingPreference.java b/media/java/android/media/RouteListingPreference.java index 6a5b29055cfe8..b1d74d4304aa8 100644 --- a/media/java/android/media/RouteListingPreference.java +++ b/media/java/android/media/RouteListingPreference.java @@ -57,15 +57,9 @@ public final class RouteListingPreference implements Parcelable { @NonNull private final List mItems; private final boolean mUseSystemOrdering; - /** - * Creates an instance with the given values. - * - * @param items See {@link #getItems()}. - * @param useSystemOrdering See {@link #getUseSystemOrdering()} - */ - public RouteListingPreference(@NonNull List items, boolean useSystemOrdering) { - mItems = List.copyOf(Objects.requireNonNull(items)); - mUseSystemOrdering = useSystemOrdering; + private RouteListingPreference(Builder builder) { + mItems = builder.mItems; + mUseSystemOrdering = builder.mUseSystemOrdering; } private RouteListingPreference(Parcel in) { @@ -128,6 +122,52 @@ public final class RouteListingPreference implements Parcelable { return Objects.hash(mItems, mUseSystemOrdering); } + /** Builder for {@link RouteListingPreference}. */ + public static final class Builder { + + private List mItems; + private boolean mUseSystemOrdering; + + /** Creates a new instance with default values (documented in the setters). */ + public Builder() { + mItems = List.of(); + } + + /** + * See {@link #getItems()} + * + *

The default value is an empty list. + */ + @NonNull + public Builder setItems(@NonNull List items) { + mItems = List.copyOf(Objects.requireNonNull(items)); + mUseSystemOrdering = true; + return this; + } + + /** + * See {@link #getUseSystemOrdering()} + * + *

The default value is {@code true}. + */ + // Lint requires "isUseSystemOrdering", but "getUseSystemOrdering" is a better name. + @SuppressWarnings("MissingGetterMatchingBuilder") + @NonNull + public Builder setUseSystemOrdering(boolean useSystemOrdering) { + mUseSystemOrdering = useSystemOrdering; + return this; + } + + /** + * Creates and returns a new {@link RouteListingPreference} instance with the given + * parameters. + */ + @NonNull + public RouteListingPreference build() { + return new RouteListingPreference(this); + } + } + /** Holds preference information for a specific route in a {@link RouteListingPreference}. */ public static final class Item implements Parcelable {