From b30b38506b51dd3460f02568b6b161f2b9753a73 Mon Sep 17 00:00:00 2001 From: "Kyeongkab.Nam" Date: Fri, 25 Jan 2019 17:55:01 +0900 Subject: [PATCH] Fix equals and hashCode APIs on TvTrackInfo Current hashCode API cares only for mId and it returns same values even if other member variables are different. To avoid for returning same values between different TvTrackInfo of each program, hashCode API should care all variables used on equals API. Note that mId is defined as unique only in the same program. Test: build Change-Id: I4d72f6ce80141d92f86e548804e1f0257ed6fcfb --- media/java/android/media/tv/TvTrackInfo.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/media/java/android/media/tv/TvTrackInfo.java b/media/java/android/media/tv/TvTrackInfo.java index 4318a0ae7d068..d4c4a62932e69 100644 --- a/media/java/android/media/tv/TvTrackInfo.java +++ b/media/java/android/media/tv/TvTrackInfo.java @@ -352,8 +352,7 @@ public final class TvTrackInfo implements Parcelable { if (!TextUtils.equals(mId, obj.mId) || mType != obj.mType || !TextUtils.equals(mLanguage, obj.mLanguage) || !TextUtils.equals(mDescription, obj.mDescription) - || mEncrypted != obj.mEncrypted - || !Objects.equals(mExtra, obj.mExtra)) { + || mEncrypted != obj.mEncrypted) { return false; } @@ -381,7 +380,16 @@ public final class TvTrackInfo implements Parcelable { @Override public int hashCode() { - return Objects.hashCode(mId); + int result = Objects.hash(mId, mType, mLanguage, mDescription); + + if (mType == TYPE_AUDIO) { + result = Objects.hash(result, mAudioChannelCount, mAudioSampleRate); + } else if (mType == TYPE_VIDEO) { + result = Objects.hash(result, mVideoWidth, mVideoHeight, mVideoFrameRate, + mVideoPixelAspectRatio); + } + + return result; } public static final @android.annotation.NonNull Parcelable.Creator CREATOR =