From b220fde2965de29694222e3607f0425cf77429ae Mon Sep 17 00:00:00 2001 From: Nathan Harold Date: Wed, 27 Jun 2018 17:07:52 -0700 Subject: [PATCH 1/2] Update ServiceState.hashCode() hashCode() was missing about 10 fields and was using some unnecessary bespoke logic to generate hashes for individual fields. This CL simplifies the hashCode() implementation and adds the missing fields. Bug: 8675309 Test: compilation Change-Id: I1424973b11fcc6480d6f8c83d5fd0eb1b5533c7f --- .../java/android/telephony/ServiceState.java | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index e971d08aae7a5..e86b48243ca18 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -30,6 +30,7 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; /** * Contains phone state and service related information. @@ -723,23 +724,34 @@ public class ServiceState implements Parcelable { @Override public int hashCode() { - return ((mVoiceRegState * 31) - + (mDataRegState * 37) - + mVoiceRoamingType - + mDataRoamingType - + mChannelNumber - + Arrays.hashCode(mCellBandwidths) - + (mIsManualNetworkSelection ? 1 : 0) - + ((null == mVoiceOperatorAlphaLong) ? 0 : mVoiceOperatorAlphaLong.hashCode()) - + ((null == mVoiceOperatorAlphaShort) ? 0 : mVoiceOperatorAlphaShort.hashCode()) - + ((null == mVoiceOperatorNumeric) ? 0 : mVoiceOperatorNumeric.hashCode()) - + ((null == mDataOperatorAlphaLong) ? 0 : mDataOperatorAlphaLong.hashCode()) - + ((null == mDataOperatorAlphaShort) ? 0 : mDataOperatorAlphaShort.hashCode()) - + ((null == mDataOperatorNumeric) ? 0 : mDataOperatorNumeric.hashCode()) - + mCdmaRoamingIndicator - + mCdmaDefaultRoamingIndicator - + (mIsEmergencyOnly ? 1 : 0) - + (mIsDataRoamingFromRegistration ? 1 : 0)); + return Objects.hash( + mVoiceRegState, + mDataRegState, + mVoiceRoamingType, + mDataRoamingType, + mChannelNumber, + mCellBandwidths, + mVoiceOperatorAlphaLong, + mVoiceOperatorAlphaShort, + mVoiceOperatorNumeric, + mDataOperatorAlphaLong, + mDataOperatorAlphaShort, + mDataOperatorNumeric, + mIsManualNetworkSelection, + mRilVoiceRadioTechnology, + mRilDataRadioTechnology, + mCssIndicator, + mNetworkId, + mSystemId, + mCdmaRoamingIndicator, + mCdmaDefaultRoamingIndicator, + mCdmaEriIconIndex, + mCdmaEriIconMode, + mIsEmergencyOnly, + mIsDataRoamingFromRegistration, + mIsUsingCarrierAggregation, + mLteEarfcnRsrpBoost, + mNetworkRegistrationStates); } @Override From 7ee5f2185dd62f6a5a05dfce3ab5712069e0505a Mon Sep 17 00:00:00 2001 From: Nathan Harold Date: Wed, 27 Jun 2018 17:21:17 -0700 Subject: [PATCH 2/2] Simplify equals() method of ServiceState For whatever reason, ServiceState used a somewhat-convoluted check for null and class type. Updating to use a canonical and brief approach. Bug: 8675309 Test: compilation Change-Id: I0d635067a06093affff478e13c28bbbe2bfda7df --- telephony/java/android/telephony/ServiceState.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index e86b48243ca18..ccb4ef8c40307 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -756,17 +756,8 @@ public class ServiceState implements Parcelable { @Override public boolean equals (Object o) { - ServiceState s; - - try { - s = (ServiceState) o; - } catch (ClassCastException ex) { - return false; - } - - if (o == null) { - return false; - } + if (!(o instanceof ServiceState)) return false; + ServiceState s = (ServiceState) o; return (mVoiceRegState == s.mVoiceRegState && mDataRegState == s.mDataRegState