Merge "Add equality method for PhoneAccount." into pi-dev

This commit is contained in:
Tyler Gunn
2018-09-05 23:30:54 +00:00
committed by Android (Google) Code Review

View File

@@ -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
@@ -348,6 +349,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}.
*/
@@ -1010,4 +1038,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;
}
}