Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a04bd3d2 authored by Tyler Gunn's avatar Tyler Gunn Committed by android-build-merger
Browse files

Merge "Add equality method for PhoneAccount." am: 6af1516b am: 491be788

am: 24bcf8b5

Change-Id: Ibd0c69425bf185dc6b79db4ca4e9ca4a770320a3
parents 0886e909 24bcf8b5
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -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;
    }
}