Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe776fa6 authored by Oliver Woodman's avatar Oliver Woodman
Browse files

Make deduplication order non-null

Bug: 193631822
Test: atest MediaRoute2InfoTest RouteDiscoveryPreferenceTest
Change-Id: Ic9df0093f473175b1d89e009a4fcb7157c2ef0c6
parent e83edde4
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -23304,7 +23304,7 @@ package android.media {
    ctor public RouteDiscoveryPreference.Builder(@NonNull android.media.RouteDiscoveryPreference);
    ctor public RouteDiscoveryPreference.Builder(@NonNull android.media.RouteDiscoveryPreference);
    method @NonNull public android.media.RouteDiscoveryPreference build();
    method @NonNull public android.media.RouteDiscoveryPreference build();
    method @NonNull public android.media.RouteDiscoveryPreference.Builder setAllowedPackages(@NonNull java.util.List<java.lang.String>);
    method @NonNull public android.media.RouteDiscoveryPreference.Builder setAllowedPackages(@NonNull java.util.List<java.lang.String>);
    method @NonNull public android.media.RouteDiscoveryPreference.Builder setDeduplicationPackageOrder(@Nullable 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 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 setRequiredFeatures(@NonNull java.util.List<java.lang.String>);
    method @NonNull public android.media.RouteDiscoveryPreference.Builder setShouldPerformActiveScan(boolean);
    method @NonNull public android.media.RouteDiscoveryPreference.Builder setShouldPerformActiveScan(boolean);
+23 −21
Original line number Original line Diff line number Diff line
@@ -64,8 +64,11 @@ public final class RouteDiscoveryPreference implements Parcelable {


    @NonNull
    @NonNull
    private final List<String> mPreferredFeatures;
    private final List<String> mPreferredFeatures;
    @NonNull
    private final List<String> mRequiredFeatures;
    private final List<String> mRequiredFeatures;
    @NonNull
    private final List<String> mPackagesOrder;
    private final List<String> mPackagesOrder;
    @NonNull
    private final List<String> mAllowedPackages;
    private final List<String> mAllowedPackages;


    private final boolean mShouldPerformActiveScan;
    private final boolean mShouldPerformActiveScan;
@@ -118,7 +121,6 @@ public final class RouteDiscoveryPreference implements Parcelable {
     * Gets the required features of routes that media router would like to discover.
     * Gets the required features of routes that media router would like to discover.
     * <p>
     * <p>
     * Routes that have all the required features will be discovered.
     * Routes that have all the required features will be discovered.
     * This precedes {@link #getPreferredFeatures()}.
     * They may include predefined features such as
     * They may include predefined features such as
     * {@link MediaRoute2Info#FEATURE_LIVE_AUDIO}, {@link MediaRoute2Info#FEATURE_LIVE_VIDEO},
     * {@link MediaRoute2Info#FEATURE_LIVE_AUDIO}, {@link MediaRoute2Info#FEATURE_LIVE_VIDEO},
     * or {@link MediaRoute2Info#FEATURE_REMOTE_PLAYBACK} or custom features defined by a provider.
     * or {@link MediaRoute2Info#FEATURE_REMOTE_PLAYBACK} or custom features defined by a provider.
@@ -133,12 +135,16 @@ public final class RouteDiscoveryPreference implements Parcelable {
    /**
    /**
     * Gets the ordered list of package names used to remove duplicate routes.
     * Gets the ordered list of package names used to remove duplicate routes.
     * <p>
     * <p>
     * When the app enables duplicate removal, all the routes that have the same deduplication ID
     * Duplicate route removal is enabled if the returned list is non-empty. Routes are deduplicated
     * except one from the provider whose package name appears first in the list will be removed.
     * based on their {@link MediaRoute2Info#getDeduplicationIds() deduplication IDs}. If two routes
     * have a deduplication ID in common, only the route from the provider whose package name is
     * first in the provided list will remain.
     *
     * @see #shouldRemoveDuplicates()
     */
     */
    @NonNull
    @NonNull
    public List<String> getDeduplicationPackageOrder() {
    public List<String> getDeduplicationPackageOrder() {
        return mPackagesOrder == null ? List.of() : mPackagesOrder;
        return mPackagesOrder;
    }
    }


    /**
    /**
@@ -164,10 +170,9 @@ public final class RouteDiscoveryPreference implements Parcelable {
    }
    }


    /**
    /**
     * Gets whether duplicate routes should be removed.
     * Gets whether duplicate routes removal is enabled.
     * <p>
     *
     * If it is {@code true}, only one of routes that have
     * @see #getDeduplicationPackageOrder()
     * the same deduplication ID will be obtained.
     */
     */
    public boolean shouldRemoveDuplicates() {
    public boolean shouldRemoveDuplicates() {
        return !mPackagesOrder.isEmpty();
        return !mPackagesOrder.isEmpty();
@@ -338,23 +343,20 @@ public final class RouteDiscoveryPreference implements Parcelable {
        }
        }


        /**
        /**
         * Sets the order of packages when removing duplicate routes.
         * Sets the order of packages to use when removing duplicate routes.
         * <p>
         * Routes are removed based on its
         * {@link MediaRoute2Info#getDeduplicationIds() deduplication ID}.
         * If two routes have the same ID, even if they are from different providers,
         * one of them is removed from the list.
         * <p>
         * <p>
         * Routes from the provider whose package name appears first in the given package order
         * Routes are deduplicated based on their
         * will remain.
         * {@link MediaRoute2Info#getDeduplicationIds() deduplication IDs}.
         * If unspecified, any route can be selected.
         * If two routes have a deduplication ID in common, only the route from the provider whose
         * package name is first in the provided list will remain.
         *
         *
         * @param packageOrder list of package names for choosing routes to be removed or
         * @param packageOrder ordered list of package names used to remove duplicate routes, or an
         *                     {@code null} not to remove duplicate routes.
         *                     empty list if deduplication should not be enabled.
         */
         */
        @NonNull
        @NonNull
        public Builder setDeduplicationPackageOrder(@Nullable List<String> packageOrder) {
        public Builder setDeduplicationPackageOrder(@NonNull List<String> packageOrder) {
            mPackageOrder = (packageOrder == null) ? null : List.copyOf(packageOrder);
            Objects.requireNonNull(packageOrder, "packageOrder must not be null");
            mPackageOrder = List.copyOf(packageOrder);
            return this;
            return this;
        }
        }