diff options
| author | 2018-08-28 08:15:27 -0700 | |
|---|---|---|
| committer | 2018-08-28 08:15:27 -0700 | |
| commit | 491be78832526c8b62ccbf7b35adbb426eda7fc6 (patch) | |
| tree | 89b1f010115af74ada9929f533de057a51b92a4e | |
| parent | c461d4dd0169b36b0f0e7264d2d06f59acb589c9 (diff) | |
| parent | 6af1516b22fbb19df8a63565814f7afd2f8d0351 (diff) | |
Merge "Add equality method for PhoneAccount."
am: 6af1516b22
Change-Id: I22447a3d9348e68c23cbed1283005d8d61d5fc37
| -rw-r--r-- | telecomm/java/android/telecom/PhoneAccount.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java index d25e59f11495..9a4ea9e7f4bd 100644 --- a/telecomm/java/android/telecom/PhoneAccount.java +++ b/telecomm/java/android/telecom/PhoneAccount.java @@ -28,6 +28,7 @@ import java.lang.String; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; /** * Represents a distinct method to place or receive a phone call. Apps which can place calls and @@ -360,6 +361,33 @@ public final class PhoneAccount implements Parcelable { private boolean mIsEnabled; private String mGroupId; + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + PhoneAccount that = (PhoneAccount) o; + return mCapabilities == that.mCapabilities && + mHighlightColor == that.mHighlightColor && + mSupportedAudioRoutes == that.mSupportedAudioRoutes && + mIsEnabled == that.mIsEnabled && + Objects.equals(mAccountHandle, that.mAccountHandle) && + Objects.equals(mAddress, that.mAddress) && + Objects.equals(mSubscriptionAddress, that.mSubscriptionAddress) && + Objects.equals(mLabel, that.mLabel) && + Objects.equals(mShortDescription, that.mShortDescription) && + Objects.equals(mSupportedUriSchemes, that.mSupportedUriSchemes) && + areBundlesEqual(mExtras, that.mExtras) && + Objects.equals(mGroupId, that.mGroupId); + } + + @Override + public int hashCode() { + return Objects.hash(mAccountHandle, mAddress, mSubscriptionAddress, mCapabilities, + mHighlightColor, mLabel, mShortDescription, mSupportedUriSchemes, + mSupportedAudioRoutes, + mExtras, mIsEnabled, mGroupId); + } + /** * Helper class for creating a {@link PhoneAccount}. */ @@ -1022,4 +1050,31 @@ public final class PhoneAccount implements Parcelable { return sb.toString(); } + + /** + * Determines if two {@link Bundle}s are equal. + * @param extras First {@link Bundle} to check. + * @param newExtras {@link Bundle} to compare against. + * @return {@code true} if the {@link Bundle}s are equal, {@code false} otherwise. + */ + private static boolean areBundlesEqual(Bundle extras, Bundle newExtras) { + if (extras == null || newExtras == null) { + return extras == newExtras; + } + + if (extras.size() != newExtras.size()) { + return false; + } + + for(String key : extras.keySet()) { + if (key != null) { + final Object value = extras.get(key); + final Object newValue = newExtras.get(key); + if (!Objects.equals(value, newValue)) { + return false; + } + } + } + return true; + } } |