From 152e11a13d04c5feb9620f58cda295bab0d17522 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Sat, 1 Aug 2020 19:15:44 -0700 Subject: [PATCH] Added hashcode for ApnSetting class Without hashCode, ApnSetting can't be used as a key in the map. Fix: 162663245 Test: Manual Merged-In: I9445ec854709996c80830e4c8c498e664f1e4f9c Change-Id: I9445ec854709996c80830e4c8c498e664f1e4f9c (cherry picked from commit fe59b7268fc838121515ffbb01302a045e57a022) --- .../java/com/android/server/TelephonyRegistry.java | 2 ++ .../java/android/telephony/data/ApnSetting.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 865392e8e0b9a..df23da650a6ff 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -1743,6 +1743,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { preciseState.getApnSetting()); PreciseDataConnectionState oldState = mPreciseDataConnectionStates.get(phoneId) .remove(key); + log("Jack: oldState=" + oldState); + log("Jack: newState=" + preciseState); if (!Objects.equals(oldState, preciseState)) { for (Record r : mRecords) { if (r.matchPhoneStateListenerEvent( diff --git a/telephony/java/android/telephony/data/ApnSetting.java b/telephony/java/android/telephony/data/ApnSetting.java index e60ae896f9f80..ff9329ef97423 100644 --- a/telephony/java/android/telephony/data/ApnSetting.java +++ b/telephony/java/android/telephony/data/ApnSetting.java @@ -1214,12 +1214,16 @@ public class ApnSetting implements Parcelable { return false; } - // TODO - if we have this function we should also have hashCode. - // Also should handle changes in type order and perhaps case-insensitivity. + @Override + public int hashCode() { + return Objects.hash(mApnName, mProxyAddress, mProxyPort, mMmsc, mMmsProxyAddress, + mMmsProxyPort, mUser, mPassword, mAuthType, mApnTypeBitmask, mId, mOperatorNumeric, + mProtocol, mRoamingProtocol, mMtu, mCarrierEnabled, mNetworkTypeBitmask, mProfileId, + mPersistent, mMaxConns, mWaitTime, mMaxConnsTime, mMvnoType, mMvnoMatchData, + mApnSetId, mCarrierId, mSkip464Xlat); + } - /** - * @hide - */ + @Override public boolean equals(Object o) { if (o instanceof ApnSetting == false) { return false;