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

Commit 0d9bcf1e authored by Oliver Woodman's avatar Oliver Woodman
Browse files

RouteDiscoveryPreference cleanup

1. Make sure newly added lists are non-null in builder
2. Fix variable name & add some extra documentation

Bug: 193631822
Test: atest MediaRoute2InfoTest RouteDiscoveryPreferenceTest
Change-Id: I93ed43acb6113f33f8010cb2ec4b4e0ad98d0b45
parent b67c420a
Loading
Loading
Loading
Loading
+25 −15
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
    @NonNull
    private final List<String> mRequiredFeatures;
    @NonNull
    private final List<String> mPackagesOrder;
    private final List<String> mPackageOrder;
    @NonNull
    private final List<String> mAllowedPackages;

@@ -86,7 +86,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
    RouteDiscoveryPreference(@NonNull Builder builder) {
        mPreferredFeatures = builder.mPreferredFeatures;
        mRequiredFeatures = builder.mRequiredFeatures;
        mPackagesOrder = builder.mPackageOrder;
        mPackageOrder = builder.mPackageOrder;
        mAllowedPackages = builder.mAllowedPackages;
        mShouldPerformActiveScan = builder.mActiveScan;
        mExtras = builder.mExtras;
@@ -95,7 +95,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
    RouteDiscoveryPreference(@NonNull Parcel in) {
        mPreferredFeatures = in.createStringArrayList();
        mRequiredFeatures = in.createStringArrayList();
        mPackagesOrder = in.createStringArrayList();
        mPackageOrder = in.createStringArrayList();
        mAllowedPackages = in.createStringArrayList();
        mShouldPerformActiveScan = in.readBoolean();
        mExtras = in.readBundle();
@@ -144,7 +144,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
     */
    @NonNull
    public List<String> getDeduplicationPackageOrder() {
        return mPackagesOrder;
        return mPackageOrder;
    }

    /**
@@ -175,7 +175,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
     * @see #getDeduplicationPackageOrder()
     */
    public boolean shouldRemoveDuplicates() {
        return !mPackagesOrder.isEmpty();
        return !mPackageOrder.isEmpty();
    }

    /**
@@ -194,7 +194,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeStringList(mPreferredFeatures);
        dest.writeStringList(mRequiredFeatures);
        dest.writeStringList(mPackagesOrder);
        dest.writeStringList(mPackageOrder);
        dest.writeStringList(mAllowedPackages);
        dest.writeBoolean(mShouldPerformActiveScan);
        dest.writeBundle(mExtras);
@@ -225,14 +225,14 @@ public final class RouteDiscoveryPreference implements Parcelable {
        RouteDiscoveryPreference other = (RouteDiscoveryPreference) o;
        return Objects.equals(mPreferredFeatures, other.mPreferredFeatures)
                && Objects.equals(mRequiredFeatures, other.mRequiredFeatures)
                && Objects.equals(mPackagesOrder, other.mPackagesOrder)
                && Objects.equals(mPackageOrder, other.mPackageOrder)
                && Objects.equals(mAllowedPackages, other.mAllowedPackages)
                && mShouldPerformActiveScan == other.mShouldPerformActiveScan;
    }

    @Override
    public int hashCode() {
        return Objects.hash(mPreferredFeatures, mRequiredFeatures, mPackagesOrder, mAllowedPackages,
        return Objects.hash(mPreferredFeatures, mRequiredFeatures, mPackageOrder, mAllowedPackages,
                mShouldPerformActiveScan);
    }

@@ -271,21 +271,31 @@ public final class RouteDiscoveryPreference implements Parcelable {
        }

        /**
         * A constructor to combine all the preferences into a single preference.
         * It ignores extras of preferences.
         * 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.
         *
         * @hide
         */
        public Builder(@NonNull Collection<RouteDiscoveryPreference> preferences) {
            Objects.requireNonNull(preferences, "preferences must not be null");

            Set<String> routeFeatureSet = new HashSet<>();
            mActiveScan = false;
            Set<String> preferredFeatures = new HashSet<>();
            boolean activeScan = false;
            for (RouteDiscoveryPreference preference : preferences) {
                routeFeatureSet.addAll(preference.mPreferredFeatures);
                mActiveScan |= preference.mShouldPerformActiveScan;
                preferredFeatures.addAll(preference.mPreferredFeatures);
                activeScan |= preference.mShouldPerformActiveScan;
            }
            mPreferredFeatures = new ArrayList<>(routeFeatureSet);
            mPreferredFeatures = new ArrayList<>(preferredFeatures);
            mRequiredFeatures = List.of();
            mPackageOrder = List.of();
            mAllowedPackages = List.of();
            mActiveScan = activeScan;
        }

        /**