AppUriAuthenticationPolicy and UrisToAliases equals and hashcode

Bug: 177979648
Test: atest android.devicepolicy.cts.CredentialManagementAppTest
      atest android.devicepolicy.cts.AppUriAuthenticationPolicyTest
      atest android.security.CredentialManagementAppTest
Change-Id: I66d715ba6b47749e2e89c037caecc29f02d3a017
diff --git a/core/tests/coretests/src/android/security/CredentialManagementAppTest.java b/core/tests/coretests/src/android/security/CredentialManagementAppTest.java
index 366aabd..fa824b1 100644
--- a/core/tests/coretests/src/android/security/CredentialManagementAppTest.java
+++ b/core/tests/coretests/src/android/security/CredentialManagementAppTest.java
@@ -37,8 +37,6 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.util.Iterator;
-import java.util.Map;
 
 @SmallTest
 @RunWith(AndroidJUnit4.class)
@@ -149,37 +147,6 @@
     private void assertCredentialManagementAppsEqual(CredentialManagementApp actual,
             CredentialManagementApp expected) {
         assertThat(actual.getPackageName(), is(expected.getPackageName()));
-        assertAuthenticationPoliciesEqual(actual.getAuthenticationPolicy(),
-                expected.getAuthenticationPolicy());
-    }
-
-    private void assertAuthenticationPoliciesEqual(AppUriAuthenticationPolicy actual,
-            AppUriAuthenticationPolicy expected) {
-        Iterator<Map.Entry<String, Map<Uri, String>>> actualIter =
-                actual.getAppAndUriMappings().entrySet().iterator();
-        Iterator<Map.Entry<String, Map<Uri, String>>> expectedIter =
-                expected.getAppAndUriMappings().entrySet().iterator();
-
-        assertThat(actual.getAppAndUriMappings().size(),
-                is(expected.getAppAndUriMappings().size()));
-        while (actualIter.hasNext()) {
-            Map.Entry<String, Map<Uri, String>> actualAppToUri = actualIter.next();
-            Map.Entry<String, Map<Uri, String>> expectedAppToUri = expectedIter.next();
-            assertThat(actualAppToUri.getKey(), is(expectedAppToUri.getKey()));
-            assertUrisToAliasesEqual(actualAppToUri.getValue(), expectedAppToUri.getValue());
-        }
-    }
-
-    private void assertUrisToAliasesEqual(Map<Uri, String> actual, Map<Uri, String> expected) {
-        Iterator<Map.Entry<Uri, String>> actualIter = actual.entrySet().iterator();
-        Iterator<Map.Entry<Uri, String>> expectedIter = expected.entrySet().iterator();
-
-        assertThat(actual.size(), is(expected.size()));
-        while (actualIter.hasNext()) {
-            Map.Entry<Uri, String> actualUriToAlias = actualIter.next();
-            Map.Entry<Uri, String> expectedUriToAlias = expectedIter.next();
-            assertThat(actualUriToAlias.getKey(), is(expectedUriToAlias.getKey()));
-            assertThat(actualUriToAlias.getValue(), is(expectedUriToAlias.getValue()));
-        }
+        assertThat(actual.getAuthenticationPolicy(), is(expected.getAuthenticationPolicy()));
     }
 }
diff --git a/keystore/java/android/security/AppUriAuthenticationPolicy.java b/keystore/java/android/security/AppUriAuthenticationPolicy.java
index 0244ce9..df79912 100644
--- a/keystore/java/android/security/AppUriAuthenticationPolicy.java
+++ b/keystore/java/android/security/AppUriAuthenticationPolicy.java
@@ -238,4 +238,21 @@
         return aliases;
     }
 
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof AppUriAuthenticationPolicy)) {
+            return false;
+        }
+        AppUriAuthenticationPolicy other = (AppUriAuthenticationPolicy) obj;
+        return Objects.equals(mAppToUris, other.mAppToUris);
+    }
+
+    @Override
+    public int hashCode() {
+        return mAppToUris.hashCode();
+    }
+
 }
diff --git a/keystore/java/android/security/UrisToAliases.java b/keystore/java/android/security/UrisToAliases.java
index 65d433a..9a8b659 100644
--- a/keystore/java/android/security/UrisToAliases.java
+++ b/keystore/java/android/security/UrisToAliases.java
@@ -30,6 +30,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * The mapping from URI to alias, which determines the alias to use when the user visits a URI.
@@ -135,4 +136,21 @@
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeMap(mUrisToAliases);
     }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof UrisToAliases)) {
+            return false;
+        }
+        UrisToAliases other = (UrisToAliases) obj;
+        return Objects.equals(mUrisToAliases, other.mUrisToAliases);
+    }
+
+    @Override
+    public int hashCode() {
+        return mUrisToAliases.hashCode();
+    }
 }