diff --git a/framework-t/src/android/net/NetworkTemplate.java b/framework-t/src/android/net/NetworkTemplate.java index f633a8f4ef..748b1bab2a 100644 --- a/framework-t/src/android/net/NetworkTemplate.java +++ b/framework-t/src/android/net/NetworkTemplate.java @@ -383,8 +383,9 @@ public final class NetworkTemplate implements Parcelable { @Override public int hashCode() { - return Objects.hash(mMatchRule, Arrays.hashCode(mMatchWifiNetworkKeys), - mMetered, mRoaming, mDefaultNetwork, mRatType, mOemManaged); + return Objects.hash(mMatchRule, Arrays.hashCode(mMatchSubscriberIds), + Arrays.hashCode(mMatchWifiNetworkKeys), mMetered, mRoaming, mDefaultNetwork, + mRatType, mOemManaged); } @Override @@ -397,6 +398,7 @@ public final class NetworkTemplate implements Parcelable { && mDefaultNetwork == other.mDefaultNetwork && mRatType == other.mRatType && mOemManaged == other.mOemManaged + && Arrays.equals(mMatchSubscriberIds, other.mMatchSubscriberIds) && Arrays.equals(mMatchWifiNetworkKeys, other.mMatchWifiNetworkKeys); } return false; diff --git a/tests/unit/java/android/net/NetworkTemplateTest.kt b/tests/unit/java/android/net/NetworkTemplateTest.kt index 78854fb7b5..edbcea9f35 100644 --- a/tests/unit/java/android/net/NetworkTemplateTest.kt +++ b/tests/unit/java/android/net/NetworkTemplateTest.kt @@ -442,6 +442,35 @@ class NetworkTemplateTest { templateUnknownNonMetered.assertDoesNotMatch(identWifi) } + @Test + fun testEquals() { + val templateImsi1 = NetworkTemplate.Builder(MATCH_MOBILE).setMeteredness(METERED_YES) + .setSubscriberIds(setOf(TEST_IMSI1)).setRatType(TelephonyManager.NETWORK_TYPE_UMTS) + .build() + val dupTemplateImsi1 = NetworkTemplate(MATCH_MOBILE, arrayOf(TEST_IMSI1), + emptyArray(), METERED_YES, ROAMING_ALL, DEFAULT_NETWORK_ALL, + TelephonyManager.NETWORK_TYPE_UMTS, OEM_MANAGED_ALL) + val templateImsi2 = NetworkTemplate.Builder(MATCH_MOBILE).setMeteredness(METERED_YES) + .setSubscriberIds(setOf(TEST_IMSI2)).setRatType(TelephonyManager.NETWORK_TYPE_UMTS) + .build() + + assertEquals(templateImsi1, dupTemplateImsi1) + assertEquals(dupTemplateImsi1, templateImsi1) + assertNotEquals(templateImsi1, templateImsi2) + + val templateWifiKey1 = NetworkTemplate.Builder(MATCH_WIFI) + .setWifiNetworkKeys(setOf(TEST_WIFI_KEY1)).build() + val dupTemplateWifiKey1 = NetworkTemplate(MATCH_WIFI, emptyArray(), + arrayOf(TEST_WIFI_KEY1), METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, + NETWORK_TYPE_ALL, OEM_MANAGED_ALL) + val templateWifiKey2 = NetworkTemplate.Builder(MATCH_WIFI) + .setWifiNetworkKeys(setOf(TEST_WIFI_KEY2)).build() + + assertEquals(templateWifiKey1, dupTemplateWifiKey1) + assertEquals(dupTemplateWifiKey1, templateWifiKey1) + assertNotEquals(templateWifiKey1, templateWifiKey2) + } + @Test fun testParcelUnparcel() { val templateMobile = NetworkTemplate(MATCH_MOBILE, arrayOf(TEST_IMSI1),