From 00fd9fd017640430f57671cc8251ae0565c84cd7 Mon Sep 17 00:00:00 2001 From: Jordan Liu Date: Fri, 17 Apr 2020 11:35:13 -0700 Subject: [PATCH] Implement equals and hashCode This keeps SmsHeader in sync with cellbroadcastservice.SmsHeader. Bug: 148482334 Test: builds Change-Id: I2a3188a603595e4c97acf6413036dcddf35c0b87 --- .../android/internal/telephony/SmsHeader.java | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/telephony/java/com/android/internal/telephony/SmsHeader.java b/telephony/java/com/android/internal/telephony/SmsHeader.java index ab3fdf4ebb414..2f3897b9bac2e 100644 --- a/telephony/java/com/android/internal/telephony/SmsHeader.java +++ b/telephony/java/com/android/internal/telephony/SmsHeader.java @@ -23,6 +23,8 @@ import com.android.internal.util.HexDump; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Objects; /** * SMS user data header, as specified in TS 23.040 9.2.3.24. @@ -71,6 +73,25 @@ public class SmsHeader { public static final int PORT_WAP_PUSH = 2948; public static final int PORT_WAP_WSP = 9200; + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SmsHeader smsHeader = (SmsHeader) o; + return languageTable == smsHeader.languageTable + && languageShiftTable == smsHeader.languageShiftTable + && Objects.equals(portAddrs, smsHeader.portAddrs) + && Objects.equals(concatRef, smsHeader.concatRef) + && Objects.equals(specialSmsMsgList, smsHeader.specialSmsMsgList) + && Objects.equals(miscEltList, smsHeader.miscEltList); + } + + @Override + public int hashCode() { + return Objects.hash(portAddrs, concatRef, specialSmsMsgList, miscEltList, languageTable, + languageShiftTable); + } + public static class PortAddrs { @UnsupportedAppUsage public PortAddrs() { @@ -81,6 +102,21 @@ public class SmsHeader { @UnsupportedAppUsage public int origPort; public boolean areEightBits; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + PortAddrs portAddrs = (PortAddrs) o; + return destPort == portAddrs.destPort + && origPort == portAddrs.origPort + && areEightBits == portAddrs.areEightBits; + } + + @Override + public int hashCode() { + return Objects.hash(destPort, origPort, areEightBits); + } } public static class ConcatRef { @@ -95,11 +131,41 @@ public class SmsHeader { @UnsupportedAppUsage public int msgCount; public boolean isEightBits; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ConcatRef concatRef = (ConcatRef) o; + return refNumber == concatRef.refNumber + && seqNumber == concatRef.seqNumber + && msgCount == concatRef.msgCount + && isEightBits == concatRef.isEightBits; + } + + @Override + public int hashCode() { + return Objects.hash(refNumber, seqNumber, msgCount, isEightBits); + } } public static class SpecialSmsMsg { public int msgIndType; public int msgCount; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SpecialSmsMsg that = (SpecialSmsMsg) o; + return msgIndType == that.msgIndType + && msgCount == that.msgCount; + } + + @Override + public int hashCode() { + return Objects.hash(msgIndType, msgCount); + } } /** @@ -109,6 +175,22 @@ public class SmsHeader { public static class MiscElt { public int id; public byte[] data; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MiscElt miscElt = (MiscElt) o; + return id == miscElt.id + && Arrays.equals(data, miscElt.data); + } + + @Override + public int hashCode() { + int result = Objects.hash(id); + result = 31 * result + Arrays.hashCode(data); + return result; + } } @UnsupportedAppUsage