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
This commit is contained in:
Santiago Seifert
2022-12-21 16:19:30 +00:00
parent ebf7677993
commit 834202eea9
2 changed files with 36 additions and 5 deletions

View File

@@ -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<android.media.RouteListingPreference.Item> 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 {

View File

@@ -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.
*
* <p>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() {