Merge "Add secondaryId comparison for ProgramInfo"

This commit is contained in:
Weilin Xu
2022-05-18 17:08:20 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 1 deletions

View File

@@ -279,6 +279,7 @@ public final class ProgramSelector implements Parcelable {
mPrimaryId = Objects.requireNonNull(primaryId);
mSecondaryIds = secondaryIds;
mVendorIds = vendorIds;
Arrays.sort(mSecondaryIds);
}
/**
@@ -512,10 +513,22 @@ public final class ProgramSelector implements Parcelable {
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) {
mProgramType = in.readInt();
mPrimaryId = in.readTypedObject(Identifier.CREATOR);
mSecondaryIds = in.createTypedArray(Identifier.CREATOR);
Arrays.sort(mSecondaryIds);
if (Stream.of(mSecondaryIds).anyMatch(id -> id == null)) {
throw new IllegalArgumentException("secondaryIds list must not contain nulls");
}

View File

@@ -1690,7 +1690,7 @@ public class RadioManager {
if (!(obj instanceof ProgramInfo)) return false;
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(mPhysicallyTunedTo, other.mPhysicallyTunedTo)) return false;
if (!Objects.equals(mRelatedContent, other.mRelatedContent)) return false;