Loading core/api/current.txt +0 −2 Original line number Diff line number Diff line Loading @@ -23351,7 +23351,6 @@ package android.media { method @NonNull public java.util.List<java.lang.String> getAllowedPackages(); method @NonNull public java.util.List<java.lang.String> getDeduplicationPackageOrder(); method @NonNull public java.util.List<java.lang.String> getPreferredFeatures(); method @NonNull public java.util.List<java.lang.String> getRequiredFeatures(); method public boolean shouldPerformActiveScan(); method public boolean shouldRemoveDuplicates(); method public void writeToParcel(@NonNull android.os.Parcel, int); Loading @@ -23365,7 +23364,6 @@ package android.media { method @NonNull public android.media.RouteDiscoveryPreference.Builder setAllowedPackages(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setDeduplicationPackageOrder(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setPreferredFeatures(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setRequiredFeatures(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setShouldPerformActiveScan(boolean); } media/java/android/media/MediaRoute2ProviderInfo.java +3 −2 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public final class MediaRoute2ProviderInfo implements Parcelable { } /** * Sets the unique id of the provider info. * Sets the package name and unique id of the provider info. * <p> * The unique id is automatically set by * {@link com.android.server.media.MediaRouterService} and used to identify providers. Loading @@ -160,7 +160,7 @@ public final class MediaRoute2ProviderInfo implements Parcelable { * @hide */ @NonNull public Builder setUniqueId(@Nullable String uniqueId) { public Builder setUniqueId(@Nullable String packageName, @Nullable String uniqueId) { if (TextUtils.equals(mUniqueId, uniqueId)) { return this; } Loading @@ -169,6 +169,7 @@ public final class MediaRoute2ProviderInfo implements Parcelable { final ArrayMap<String, MediaRoute2Info> newRoutes = new ArrayMap<>(); for (Map.Entry<String, MediaRoute2Info> entry : mRoutes.entrySet()) { MediaRoute2Info routeWithProviderId = new MediaRoute2Info.Builder(entry.getValue()) .setPackageName(packageName) .setProviderId(mUniqueId) .build(); newRoutes.put(routeWithProviderId.getOriginalId(), routeWithProviderId); Loading media/java/android/media/MediaRouter2.java +11 −17 Original line number Diff line number Diff line Loading @@ -478,13 +478,8 @@ public final class MediaRouter2 { if (mShouldUpdateRoutes) { mShouldUpdateRoutes = false; List<MediaRoute2Info> filteredRoutes = new ArrayList<>(); for (MediaRoute2Info route : mRoutes.values()) { if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) { filteredRoutes.add(route); } } mFilteredRoutes = Collections.unmodifiableList(filteredRoutes); mFilteredRoutes = Collections.unmodifiableList( filterRoutes(List.copyOf(mRoutes.values()), mDiscoveryPreference)); } } return mFilteredRoutes; Loading Loading @@ -1087,16 +1082,17 @@ public final class MediaRouter2 { List<MediaRoute2Info> filteredRoutes = new ArrayList<>(); for (MediaRoute2Info route : getSortedRoutes(routes, discoveryPreference)) { if (!route.hasAllFeatures(discoveryPreference.getRequiredFeatures()) || !route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { if (!route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { continue; } if (!discoveryPreference.getAllowedPackages().isEmpty() && !discoveryPreference.getAllowedPackages().contains(route.getPackageName())) { && (route.getPackageName() == null || !discoveryPreference.getAllowedPackages() .contains(route.getPackageName()))) { continue; } if (discoveryPreference.shouldRemoveDuplicates()) { if (Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { if (!Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { continue; } deduplicationIdSet.addAll(route.getDeduplicationIds()); Loading Loading @@ -2087,19 +2083,17 @@ public final class MediaRouter2 { } @Override public void onPreferredFeaturesChanged(@NonNull String packageName, @NonNull List<String> preferredFeatures) { public void onDiscoveryPreferenceChanged(@NonNull String packageName, @NonNull RouteDiscoveryPreference preference) { if (!TextUtils.equals(mClientPackageName, packageName)) { return; } synchronized (mLock) { mDiscoveryPreference = new RouteDiscoveryPreference.Builder( preferredFeatures, true).build(); mDiscoveryPreference = preference; } updateAllRoutesFromManager(); notifyPreferredFeaturesChanged(preferredFeatures); notifyPreferredFeaturesChanged(preference.getPreferredFeatures()); } @Override Loading media/java/android/media/MediaRouter2Manager.java +6 −6 Original line number Diff line number Diff line Loading @@ -254,7 +254,7 @@ public final class MediaRouter2Manager { @NonNull public List<MediaRoute2Info> getAvailableRoutes(@NonNull RoutingSessionInfo sessionInfo) { return getFilteredRoutes(sessionInfo, /*includeSelectedRoutes=*/true, null); /*additionalFilter=*/null); } /** Loading Loading @@ -315,20 +315,20 @@ public final class MediaRouter2Manager { routes.add(route); continue; } if (!route.hasAllFeatures(discoveryPreference.getRequiredFeatures()) || !route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { if (!route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { continue; } if (!discoveryPreference.getAllowedPackages().isEmpty() && !discoveryPreference.getAllowedPackages() .contains(route.getPackageName())) { && (route.getPackageName() == null || !discoveryPreference.getAllowedPackages() .contains(route.getPackageName()))) { continue; } if (additionalFilter != null && !additionalFilter.test(route)) { continue; } if (discoveryPreference.shouldRemoveDuplicates()) { if (Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { if (!Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { continue; } deduplicationIdSet.addAll(route.getDeduplicationIds()); Loading media/java/android/media/RouteDiscoveryPreference.java +13 −51 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; Loading Loading @@ -65,8 +64,6 @@ public final class RouteDiscoveryPreference implements Parcelable { @NonNull private final List<String> mPreferredFeatures; @NonNull private final List<String> mRequiredFeatures; @NonNull private final List<String> mPackageOrder; @NonNull private final List<String> mAllowedPackages; Loading @@ -85,7 +82,6 @@ public final class RouteDiscoveryPreference implements Parcelable { RouteDiscoveryPreference(@NonNull Builder builder) { mPreferredFeatures = builder.mPreferredFeatures; mRequiredFeatures = builder.mRequiredFeatures; mPackageOrder = builder.mPackageOrder; mAllowedPackages = builder.mAllowedPackages; mShouldPerformActiveScan = builder.mActiveScan; Loading @@ -94,7 +90,6 @@ public final class RouteDiscoveryPreference implements Parcelable { RouteDiscoveryPreference(@NonNull Parcel in) { mPreferredFeatures = in.createStringArrayList(); mRequiredFeatures = in.createStringArrayList(); mPackageOrder = in.createStringArrayList(); mAllowedPackages = in.createStringArrayList(); mShouldPerformActiveScan = in.readBoolean(); Loading @@ -109,29 +104,12 @@ public final class RouteDiscoveryPreference implements Parcelable { * {@link MediaRoute2Info#FEATURE_LIVE_AUDIO}, {@link MediaRoute2Info#FEATURE_LIVE_VIDEO}, * or {@link MediaRoute2Info#FEATURE_REMOTE_PLAYBACK} or custom features defined by a provider. * </p> * * @see #getRequiredFeatures() */ @NonNull public List<String> getPreferredFeatures() { return mPreferredFeatures; } /** * Gets the required features of routes that media router would like to discover. * <p> * Routes that have all the required features will be discovered. * They may include predefined features such as * {@link MediaRoute2Info#FEATURE_LIVE_AUDIO}, {@link MediaRoute2Info#FEATURE_LIVE_VIDEO}, * or {@link MediaRoute2Info#FEATURE_REMOTE_PLAYBACK} or custom features defined by a provider. * * @see #getPreferredFeatures() */ @NonNull public List<String> getRequiredFeatures() { return mRequiredFeatures; } /** * Gets the ordered list of package names used to remove duplicate routes. * <p> Loading Loading @@ -193,7 +171,6 @@ public final class RouteDiscoveryPreference implements Parcelable { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeStringList(mPreferredFeatures); dest.writeStringList(mRequiredFeatures); dest.writeStringList(mPackageOrder); dest.writeStringList(mAllowedPackages); dest.writeBoolean(mShouldPerformActiveScan); Loading Loading @@ -224,7 +201,6 @@ public final class RouteDiscoveryPreference implements Parcelable { } RouteDiscoveryPreference other = (RouteDiscoveryPreference) o; return Objects.equals(mPreferredFeatures, other.mPreferredFeatures) && Objects.equals(mRequiredFeatures, other.mRequiredFeatures) && Objects.equals(mPackageOrder, other.mPackageOrder) && Objects.equals(mAllowedPackages, other.mAllowedPackages) && mShouldPerformActiveScan == other.mShouldPerformActiveScan; Loading @@ -232,7 +208,7 @@ public final class RouteDiscoveryPreference implements Parcelable { @Override public int hashCode() { return Objects.hash(mPreferredFeatures, mRequiredFeatures, mPackageOrder, mAllowedPackages, return Objects.hash(mPreferredFeatures, mPackageOrder, mAllowedPackages, mShouldPerformActiveScan); } Loading @@ -241,7 +217,6 @@ public final class RouteDiscoveryPreference implements Parcelable { */ public static final class Builder { List<String> mPreferredFeatures; List<String> mRequiredFeatures; List<String> mPackageOrder; List<String> mAllowedPackages; Loading @@ -253,7 +228,6 @@ public final class RouteDiscoveryPreference implements Parcelable { Objects.requireNonNull(preferredFeatures, "preferredFeatures must not be null"); mPreferredFeatures = preferredFeatures.stream().filter(str -> !TextUtils.isEmpty(str)) .collect(Collectors.toList()); mRequiredFeatures = List.of(); mPackageOrder = List.of(); mAllowedPackages = List.of(); mActiveScan = activeScan; Loading @@ -263,7 +237,6 @@ public final class RouteDiscoveryPreference implements Parcelable { Objects.requireNonNull(preference, "preference must not be null"); mPreferredFeatures = preference.getPreferredFeatures(); mRequiredFeatures = preference.getRequiredFeatures(); mPackageOrder = preference.getDeduplicationPackageOrder(); mAllowedPackages = preference.getAllowedPackages(); mActiveScan = preference.shouldPerformActiveScan(); Loading @@ -271,14 +244,8 @@ public final class RouteDiscoveryPreference implements Parcelable { } /** * A constructor to combine multiple preferences into a single preference. The combined * preference will discover a superset of the union of the routes discoverable by each of * the individual preferences. * <p> * When routes need to be discovered for multiple preferences, the combined preference can * be used to query route providers once and obtain all routes of interest. The obtained * routes can then be filtered for each of the individual preferences. This is typically * more efficient than querying route providers with each of the individual preferences. * A constructor to combine multiple preferences into a single preference. * It ignores extras of preferences. * * @hide */ Loading @@ -286,15 +253,21 @@ public final class RouteDiscoveryPreference implements Parcelable { Objects.requireNonNull(preferences, "preferences must not be null"); Set<String> preferredFeatures = new HashSet<>(); Set<String> allowedPackages = new HashSet<>(); mPackageOrder = List.of(); boolean activeScan = false; for (RouteDiscoveryPreference preference : preferences) { preferredFeatures.addAll(preference.mPreferredFeatures); allowedPackages.addAll(preference.mAllowedPackages); activeScan |= preference.mShouldPerformActiveScan; // Choose one of either if (mPackageOrder.isEmpty() && !preference.mPackageOrder.isEmpty()) { mPackageOrder = List.copyOf(preference.mPackageOrder); } mPreferredFeatures = new ArrayList<>(preferredFeatures); mRequiredFeatures = List.of(); mPackageOrder = List.of(); mAllowedPackages = List.of(); } mPreferredFeatures = List.copyOf(preferredFeatures); mAllowedPackages = List.copyOf(allowedPackages); mActiveScan = activeScan; } Loading @@ -315,17 +288,6 @@ public final class RouteDiscoveryPreference implements Parcelable { return this; } /** * Sets the required route features to discover. */ @NonNull public Builder setRequiredFeatures(@NonNull List<String> requiredFeatures) { Objects.requireNonNull(requiredFeatures, "preferredFeatures must not be null"); mRequiredFeatures = requiredFeatures.stream().filter(str -> !TextUtils.isEmpty(str)) .collect(Collectors.toList()); return this; } /** * Sets the list of package names of providers that media router would like to discover. * <p> Loading Loading
core/api/current.txt +0 −2 Original line number Diff line number Diff line Loading @@ -23351,7 +23351,6 @@ package android.media { method @NonNull public java.util.List<java.lang.String> getAllowedPackages(); method @NonNull public java.util.List<java.lang.String> getDeduplicationPackageOrder(); method @NonNull public java.util.List<java.lang.String> getPreferredFeatures(); method @NonNull public java.util.List<java.lang.String> getRequiredFeatures(); method public boolean shouldPerformActiveScan(); method public boolean shouldRemoveDuplicates(); method public void writeToParcel(@NonNull android.os.Parcel, int); Loading @@ -23365,7 +23364,6 @@ package android.media { method @NonNull public android.media.RouteDiscoveryPreference.Builder setAllowedPackages(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setDeduplicationPackageOrder(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setPreferredFeatures(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setRequiredFeatures(@NonNull java.util.List<java.lang.String>); method @NonNull public android.media.RouteDiscoveryPreference.Builder setShouldPerformActiveScan(boolean); }
media/java/android/media/MediaRoute2ProviderInfo.java +3 −2 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public final class MediaRoute2ProviderInfo implements Parcelable { } /** * Sets the unique id of the provider info. * Sets the package name and unique id of the provider info. * <p> * The unique id is automatically set by * {@link com.android.server.media.MediaRouterService} and used to identify providers. Loading @@ -160,7 +160,7 @@ public final class MediaRoute2ProviderInfo implements Parcelable { * @hide */ @NonNull public Builder setUniqueId(@Nullable String uniqueId) { public Builder setUniqueId(@Nullable String packageName, @Nullable String uniqueId) { if (TextUtils.equals(mUniqueId, uniqueId)) { return this; } Loading @@ -169,6 +169,7 @@ public final class MediaRoute2ProviderInfo implements Parcelable { final ArrayMap<String, MediaRoute2Info> newRoutes = new ArrayMap<>(); for (Map.Entry<String, MediaRoute2Info> entry : mRoutes.entrySet()) { MediaRoute2Info routeWithProviderId = new MediaRoute2Info.Builder(entry.getValue()) .setPackageName(packageName) .setProviderId(mUniqueId) .build(); newRoutes.put(routeWithProviderId.getOriginalId(), routeWithProviderId); Loading
media/java/android/media/MediaRouter2.java +11 −17 Original line number Diff line number Diff line Loading @@ -478,13 +478,8 @@ public final class MediaRouter2 { if (mShouldUpdateRoutes) { mShouldUpdateRoutes = false; List<MediaRoute2Info> filteredRoutes = new ArrayList<>(); for (MediaRoute2Info route : mRoutes.values()) { if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) { filteredRoutes.add(route); } } mFilteredRoutes = Collections.unmodifiableList(filteredRoutes); mFilteredRoutes = Collections.unmodifiableList( filterRoutes(List.copyOf(mRoutes.values()), mDiscoveryPreference)); } } return mFilteredRoutes; Loading Loading @@ -1087,16 +1082,17 @@ public final class MediaRouter2 { List<MediaRoute2Info> filteredRoutes = new ArrayList<>(); for (MediaRoute2Info route : getSortedRoutes(routes, discoveryPreference)) { if (!route.hasAllFeatures(discoveryPreference.getRequiredFeatures()) || !route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { if (!route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { continue; } if (!discoveryPreference.getAllowedPackages().isEmpty() && !discoveryPreference.getAllowedPackages().contains(route.getPackageName())) { && (route.getPackageName() == null || !discoveryPreference.getAllowedPackages() .contains(route.getPackageName()))) { continue; } if (discoveryPreference.shouldRemoveDuplicates()) { if (Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { if (!Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { continue; } deduplicationIdSet.addAll(route.getDeduplicationIds()); Loading Loading @@ -2087,19 +2083,17 @@ public final class MediaRouter2 { } @Override public void onPreferredFeaturesChanged(@NonNull String packageName, @NonNull List<String> preferredFeatures) { public void onDiscoveryPreferenceChanged(@NonNull String packageName, @NonNull RouteDiscoveryPreference preference) { if (!TextUtils.equals(mClientPackageName, packageName)) { return; } synchronized (mLock) { mDiscoveryPreference = new RouteDiscoveryPreference.Builder( preferredFeatures, true).build(); mDiscoveryPreference = preference; } updateAllRoutesFromManager(); notifyPreferredFeaturesChanged(preferredFeatures); notifyPreferredFeaturesChanged(preference.getPreferredFeatures()); } @Override Loading
media/java/android/media/MediaRouter2Manager.java +6 −6 Original line number Diff line number Diff line Loading @@ -254,7 +254,7 @@ public final class MediaRouter2Manager { @NonNull public List<MediaRoute2Info> getAvailableRoutes(@NonNull RoutingSessionInfo sessionInfo) { return getFilteredRoutes(sessionInfo, /*includeSelectedRoutes=*/true, null); /*additionalFilter=*/null); } /** Loading Loading @@ -315,20 +315,20 @@ public final class MediaRouter2Manager { routes.add(route); continue; } if (!route.hasAllFeatures(discoveryPreference.getRequiredFeatures()) || !route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { if (!route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) { continue; } if (!discoveryPreference.getAllowedPackages().isEmpty() && !discoveryPreference.getAllowedPackages() .contains(route.getPackageName())) { && (route.getPackageName() == null || !discoveryPreference.getAllowedPackages() .contains(route.getPackageName()))) { continue; } if (additionalFilter != null && !additionalFilter.test(route)) { continue; } if (discoveryPreference.shouldRemoveDuplicates()) { if (Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { if (!Collections.disjoint(deduplicationIdSet, route.getDeduplicationIds())) { continue; } deduplicationIdSet.addAll(route.getDeduplicationIds()); Loading
media/java/android/media/RouteDiscoveryPreference.java +13 −51 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; Loading Loading @@ -65,8 +64,6 @@ public final class RouteDiscoveryPreference implements Parcelable { @NonNull private final List<String> mPreferredFeatures; @NonNull private final List<String> mRequiredFeatures; @NonNull private final List<String> mPackageOrder; @NonNull private final List<String> mAllowedPackages; Loading @@ -85,7 +82,6 @@ public final class RouteDiscoveryPreference implements Parcelable { RouteDiscoveryPreference(@NonNull Builder builder) { mPreferredFeatures = builder.mPreferredFeatures; mRequiredFeatures = builder.mRequiredFeatures; mPackageOrder = builder.mPackageOrder; mAllowedPackages = builder.mAllowedPackages; mShouldPerformActiveScan = builder.mActiveScan; Loading @@ -94,7 +90,6 @@ public final class RouteDiscoveryPreference implements Parcelable { RouteDiscoveryPreference(@NonNull Parcel in) { mPreferredFeatures = in.createStringArrayList(); mRequiredFeatures = in.createStringArrayList(); mPackageOrder = in.createStringArrayList(); mAllowedPackages = in.createStringArrayList(); mShouldPerformActiveScan = in.readBoolean(); Loading @@ -109,29 +104,12 @@ public final class RouteDiscoveryPreference implements Parcelable { * {@link MediaRoute2Info#FEATURE_LIVE_AUDIO}, {@link MediaRoute2Info#FEATURE_LIVE_VIDEO}, * or {@link MediaRoute2Info#FEATURE_REMOTE_PLAYBACK} or custom features defined by a provider. * </p> * * @see #getRequiredFeatures() */ @NonNull public List<String> getPreferredFeatures() { return mPreferredFeatures; } /** * Gets the required features of routes that media router would like to discover. * <p> * Routes that have all the required features will be discovered. * They may include predefined features such as * {@link MediaRoute2Info#FEATURE_LIVE_AUDIO}, {@link MediaRoute2Info#FEATURE_LIVE_VIDEO}, * or {@link MediaRoute2Info#FEATURE_REMOTE_PLAYBACK} or custom features defined by a provider. * * @see #getPreferredFeatures() */ @NonNull public List<String> getRequiredFeatures() { return mRequiredFeatures; } /** * Gets the ordered list of package names used to remove duplicate routes. * <p> Loading Loading @@ -193,7 +171,6 @@ public final class RouteDiscoveryPreference implements Parcelable { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeStringList(mPreferredFeatures); dest.writeStringList(mRequiredFeatures); dest.writeStringList(mPackageOrder); dest.writeStringList(mAllowedPackages); dest.writeBoolean(mShouldPerformActiveScan); Loading Loading @@ -224,7 +201,6 @@ public final class RouteDiscoveryPreference implements Parcelable { } RouteDiscoveryPreference other = (RouteDiscoveryPreference) o; return Objects.equals(mPreferredFeatures, other.mPreferredFeatures) && Objects.equals(mRequiredFeatures, other.mRequiredFeatures) && Objects.equals(mPackageOrder, other.mPackageOrder) && Objects.equals(mAllowedPackages, other.mAllowedPackages) && mShouldPerformActiveScan == other.mShouldPerformActiveScan; Loading @@ -232,7 +208,7 @@ public final class RouteDiscoveryPreference implements Parcelable { @Override public int hashCode() { return Objects.hash(mPreferredFeatures, mRequiredFeatures, mPackageOrder, mAllowedPackages, return Objects.hash(mPreferredFeatures, mPackageOrder, mAllowedPackages, mShouldPerformActiveScan); } Loading @@ -241,7 +217,6 @@ public final class RouteDiscoveryPreference implements Parcelable { */ public static final class Builder { List<String> mPreferredFeatures; List<String> mRequiredFeatures; List<String> mPackageOrder; List<String> mAllowedPackages; Loading @@ -253,7 +228,6 @@ public final class RouteDiscoveryPreference implements Parcelable { Objects.requireNonNull(preferredFeatures, "preferredFeatures must not be null"); mPreferredFeatures = preferredFeatures.stream().filter(str -> !TextUtils.isEmpty(str)) .collect(Collectors.toList()); mRequiredFeatures = List.of(); mPackageOrder = List.of(); mAllowedPackages = List.of(); mActiveScan = activeScan; Loading @@ -263,7 +237,6 @@ public final class RouteDiscoveryPreference implements Parcelable { Objects.requireNonNull(preference, "preference must not be null"); mPreferredFeatures = preference.getPreferredFeatures(); mRequiredFeatures = preference.getRequiredFeatures(); mPackageOrder = preference.getDeduplicationPackageOrder(); mAllowedPackages = preference.getAllowedPackages(); mActiveScan = preference.shouldPerformActiveScan(); Loading @@ -271,14 +244,8 @@ public final class RouteDiscoveryPreference implements Parcelable { } /** * A constructor to combine multiple preferences into a single preference. The combined * preference will discover a superset of the union of the routes discoverable by each of * the individual preferences. * <p> * When routes need to be discovered for multiple preferences, the combined preference can * be used to query route providers once and obtain all routes of interest. The obtained * routes can then be filtered for each of the individual preferences. This is typically * more efficient than querying route providers with each of the individual preferences. * A constructor to combine multiple preferences into a single preference. * It ignores extras of preferences. * * @hide */ Loading @@ -286,15 +253,21 @@ public final class RouteDiscoveryPreference implements Parcelable { Objects.requireNonNull(preferences, "preferences must not be null"); Set<String> preferredFeatures = new HashSet<>(); Set<String> allowedPackages = new HashSet<>(); mPackageOrder = List.of(); boolean activeScan = false; for (RouteDiscoveryPreference preference : preferences) { preferredFeatures.addAll(preference.mPreferredFeatures); allowedPackages.addAll(preference.mAllowedPackages); activeScan |= preference.mShouldPerformActiveScan; // Choose one of either if (mPackageOrder.isEmpty() && !preference.mPackageOrder.isEmpty()) { mPackageOrder = List.copyOf(preference.mPackageOrder); } mPreferredFeatures = new ArrayList<>(preferredFeatures); mRequiredFeatures = List.of(); mPackageOrder = List.of(); mAllowedPackages = List.of(); } mPreferredFeatures = List.copyOf(preferredFeatures); mAllowedPackages = List.copyOf(allowedPackages); mActiveScan = activeScan; } Loading @@ -315,17 +288,6 @@ public final class RouteDiscoveryPreference implements Parcelable { return this; } /** * Sets the required route features to discover. */ @NonNull public Builder setRequiredFeatures(@NonNull List<String> requiredFeatures) { Objects.requireNonNull(requiredFeatures, "preferredFeatures must not be null"); mRequiredFeatures = requiredFeatures.stream().filter(str -> !TextUtils.isEmpty(str)) .collect(Collectors.toList()); return this; } /** * Sets the list of package names of providers that media router would like to discover. * <p> Loading