From 834202eea9264623dbfd5df669c5393ad8c2e36d Mon Sep 17 00:00:00 2001 From: Santiago Seifert Date: Wed, 21 Dec 2022 16:19:30 +0000 Subject: [PATCH] Add session participant count Allows apps to set a number of participants in the corresponding route. Test: atest MediaRouter2HostSideTest Bug: 241888071 Bug: 235352899 Change-Id: If1e7995e0e5e9903863103dc72b399d270156675 --- core/api/current.txt | 2 + .../android/media/RouteListingPreference.java | 39 ++++++++++++++++--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index d22c40210ff4f..b6db2ef795729 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -24109,6 +24109,7 @@ package android.media { method public int getDisableReason(); method public int getFlags(); method @NonNull public String getRouteId(); + method public int getSessionParticipantCount(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; field public static final int DISABLE_REASON_AD = 3; // 0x3 @@ -24124,6 +24125,7 @@ package android.media { 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); + method @NonNull public android.media.RouteListingPreference.Item.Builder setSessionParticipantCount(@IntRange(from=0) int); } public final class RoutingSessionInfo implements android.os.Parcelable { diff --git a/media/java/android/media/RouteListingPreference.java b/media/java/android/media/RouteListingPreference.java index 6557277041c29..6b4205805bc61 100644 --- a/media/java/android/media/RouteListingPreference.java +++ b/media/java/android/media/RouteListingPreference.java @@ -17,6 +17,7 @@ package android.media; import android.annotation.IntDef; +import android.annotation.IntRange; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; @@ -195,19 +196,22 @@ public final class RouteListingPreference implements Parcelable { @NonNull private final String mRouteId; @Flags private final int mFlags; @DisableReason private final int mDisableReason; + private final int mSessionParticipantCount; private Item(@NonNull Builder builder) { mRouteId = builder.mRouteId; mFlags = builder.mFlags; mDisableReason = builder.mDisableReason; + mSessionParticipantCount = builder.mSessionParticipantCount; } private Item(Parcel in) { - String routeId = in.readString(); - Preconditions.checkArgument(!TextUtils.isEmpty(routeId)); - mRouteId = routeId; + mRouteId = in.readString(); + Preconditions.checkArgument(!TextUtils.isEmpty(mRouteId)); mFlags = in.readInt(); mDisableReason = in.readInt(); + mSessionParticipantCount = in.readInt(); + Preconditions.checkArgument(mSessionParticipantCount >= 0); } /** Returns the id of the route that corresponds to this route listing preference item. */ @@ -241,6 +245,17 @@ public final class RouteListingPreference implements Parcelable { return mDisableReason; } + /** + * Returns a non-negative number of participants in the ongoing session (if any) on the + * corresponding route. + * + *

The system ignores this value if zero, or if {@link #getFlags()} does not include + * {@link #FLAG_ONGOING_SESSION}. + */ + public int getSessionParticipantCount() { + return mSessionParticipantCount; + } + // Item Parcelable implementation. @Override @@ -253,6 +268,7 @@ public final class RouteListingPreference implements Parcelable { dest.writeString(mRouteId); dest.writeInt(mFlags); dest.writeInt(mDisableReason); + dest.writeInt(mSessionParticipantCount); } // Equals and hashCode. @@ -268,12 +284,13 @@ public final class RouteListingPreference implements Parcelable { Item item = (Item) other; return mRouteId.equals(item.mRouteId) && mFlags == item.mFlags - && mDisableReason == item.mDisableReason; + && mDisableReason == item.mDisableReason + && mSessionParticipantCount == item.mSessionParticipantCount; } @Override public int hashCode() { - return Objects.hash(mRouteId, mFlags, mDisableReason); + return Objects.hash(mRouteId, mFlags, mDisableReason, mSessionParticipantCount); } /** Builder for {@link Item}. */ @@ -282,6 +299,7 @@ public final class RouteListingPreference implements Parcelable { private final String mRouteId; private int mFlags; private int mDisableReason; + private int mSessionParticipantCount; /** * Constructor. @@ -308,6 +326,17 @@ public final class RouteListingPreference implements Parcelable { return this; } + /** See {@link Item#getSessionParticipantCount()}. */ + @NonNull + public Builder setSessionParticipantCount( + @IntRange(from = 0) int sessionParticipantCount) { + Preconditions.checkArgument( + sessionParticipantCount >= 0, + "sessionParticipantCount must be non-negative."); + mSessionParticipantCount = sessionParticipantCount; + return this; + } + /** Creates and returns a new {@link Item} with the given parameters. */ @NonNull public Item build() {