summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Weilin Xu <xuweilin@google.com> 2022-05-18 17:08:20 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-05-18 17:08:20 +0000
commit14be35a5de080e7ae797edbecd94e0684244d647 (patch)
tree2d215e2a09c16fb153e03ec102581116c6b33f21
parent6dcbc863379d76ab1cbd634b0816f96cda1824e0 (diff)
parent8f19a21592b348fb4637d62f88d6a4c0c150542c (diff)
Merge "Add secondaryId comparison for ProgramInfo"
-rw-r--r--core/java/android/hardware/radio/ProgramSelector.java13
-rw-r--r--core/java/android/hardware/radio/RadioManager.java2
2 files changed, 14 insertions, 1 deletions
diff --git a/core/java/android/hardware/radio/ProgramSelector.java b/core/java/android/hardware/radio/ProgramSelector.java
index d525753a1874..6300a12c3137 100644
--- a/core/java/android/hardware/radio/ProgramSelector.java
+++ b/core/java/android/hardware/radio/ProgramSelector.java
@@ -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");
}
diff --git a/core/java/android/hardware/radio/RadioManager.java b/core/java/android/hardware/radio/RadioManager.java
index 4cc001a40146..8180caa1557b 100644
--- a/core/java/android/hardware/radio/RadioManager.java
+++ b/core/java/android/hardware/radio/RadioManager.java
@@ -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;