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

Commit 8f19a215 authored by Weilin Xu's avatar Weilin Xu
Browse files

Add secondaryId comparison for ProgramInfo

Add a hidden method stricEqual for ProgramSelector so that its
secondaryId can be compared when checking ProgramInfo equality.

Bug: 189775075
Test: m -j, atest android.hardware.radio.tests.functional
Test: atest com.android.server.broadcastradio.hal2
Change-Id: Ia9a297f946f295ea0c5e1d0efbb4ccae55c01b6f
parent 83d95668
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -279,6 +279,7 @@ public final class ProgramSelector implements Parcelable {
        mPrimaryId = Objects.requireNonNull(primaryId);
        mPrimaryId = Objects.requireNonNull(primaryId);
        mSecondaryIds = secondaryIds;
        mSecondaryIds = secondaryIds;
        mVendorIds = vendorIds;
        mVendorIds = vendorIds;
        Arrays.sort(mSecondaryIds);
    }
    }


    /**
    /**
@@ -512,10 +513,22 @@ public final class ProgramSelector implements Parcelable {
        return mPrimaryId.equals(other.getPrimaryId());
        return mPrimaryId.equals(other.getPrimaryId());
    }
    }


    /** @hide */
    public boolean strictEquals(@Nullable Object obj) {
        if (this == obj) return true;
        if (!(obj instanceof ProgramSelector)) return false;
        ProgramSelector other = (ProgramSelector) obj;
        // vendorIds are ignored for equality
        // programType can be inferred from primaryId, thus not checked
        return mPrimaryId.equals(other.getPrimaryId())
                && Arrays.equals(mSecondaryIds, other.mSecondaryIds);
    }

    private ProgramSelector(Parcel in) {
    private ProgramSelector(Parcel in) {
        mProgramType = in.readInt();
        mProgramType = in.readInt();
        mPrimaryId = in.readTypedObject(Identifier.CREATOR);
        mPrimaryId = in.readTypedObject(Identifier.CREATOR);
        mSecondaryIds = in.createTypedArray(Identifier.CREATOR);
        mSecondaryIds = in.createTypedArray(Identifier.CREATOR);
        Arrays.sort(mSecondaryIds);
        if (Stream.of(mSecondaryIds).anyMatch(id -> id == null)) {
        if (Stream.of(mSecondaryIds).anyMatch(id -> id == null)) {
            throw new IllegalArgumentException("secondaryIds list must not contain nulls");
            throw new IllegalArgumentException("secondaryIds list must not contain nulls");
        }
        }
+1 −1
Original line number Original line Diff line number Diff line
@@ -1690,7 +1690,7 @@ public class RadioManager {
            if (!(obj instanceof ProgramInfo)) return false;
            if (!(obj instanceof ProgramInfo)) return false;
            ProgramInfo other = (ProgramInfo) obj;
            ProgramInfo other = (ProgramInfo) obj;


            if (!Objects.equals(mSelector, other.mSelector)) return false;
            if (!mSelector.strictEquals(other.mSelector)) return false;
            if (!Objects.equals(mLogicallyTunedTo, other.mLogicallyTunedTo)) return false;
            if (!Objects.equals(mLogicallyTunedTo, other.mLogicallyTunedTo)) return false;
            if (!Objects.equals(mPhysicallyTunedTo, other.mPhysicallyTunedTo)) return false;
            if (!Objects.equals(mPhysicallyTunedTo, other.mPhysicallyTunedTo)) return false;
            if (!Objects.equals(mRelatedContent, other.mRelatedContent)) return false;
            if (!Objects.equals(mRelatedContent, other.mRelatedContent)) return false;