diff options
| -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; + } } |