Merge "[SUBID01-1]Grow NetworkIdentity to include a new mSubId field" am: 8039c85336

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1895196

Change-Id: I708e1b7db095cbe7c505ea81af64e712bebc6a33
This commit is contained in:
Frank Li
2022-03-02 12:55:30 +00:00
committed by Automerger Merge Worker
5 changed files with 51 additions and 13 deletions

View File

@@ -42,6 +42,7 @@ package android.net {
public class NetworkIdentity { public class NetworkIdentity {
method public int getOemManaged(); method public int getOemManaged();
method public int getRatType(); method public int getRatType();
method public int getSubId();
method @Nullable public String getSubscriberId(); method @Nullable public String getSubscriberId();
method public int getType(); method public int getType();
method @Nullable public String getWifiNetworkKey(); method @Nullable public String getWifiNetworkKey();
@@ -60,6 +61,7 @@ package android.net {
method @NonNull public android.net.NetworkIdentity.Builder setOemManaged(int); method @NonNull public android.net.NetworkIdentity.Builder setOemManaged(int);
method @NonNull public android.net.NetworkIdentity.Builder setRatType(int); method @NonNull public android.net.NetworkIdentity.Builder setRatType(int);
method @NonNull public android.net.NetworkIdentity.Builder setRoaming(boolean); method @NonNull public android.net.NetworkIdentity.Builder setRoaming(boolean);
method @NonNull public android.net.NetworkIdentity.Builder setSubId(int);
method @NonNull public android.net.NetworkIdentity.Builder setSubscriberId(@Nullable String); method @NonNull public android.net.NetworkIdentity.Builder setSubscriberId(@Nullable String);
method @NonNull public android.net.NetworkIdentity.Builder setType(int); method @NonNull public android.net.NetworkIdentity.Builder setType(int);
method @NonNull public android.net.NetworkIdentity.Builder setWifiNetworkKey(@Nullable String); method @NonNull public android.net.NetworkIdentity.Builder setWifiNetworkKey(@Nullable String);
@@ -72,7 +74,8 @@ package android.net {
method @NonNull public android.net.LinkProperties getLinkProperties(); method @NonNull public android.net.LinkProperties getLinkProperties();
method @NonNull public android.net.Network getNetwork(); method @NonNull public android.net.Network getNetwork();
method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities(); method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
method @Nullable public String getSubscriberId(); method public int getSubId();
method @Deprecated @Nullable public String getSubscriberId();
method public void writeToParcel(@NonNull android.os.Parcel, int); method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStateSnapshot> CREATOR; field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStateSnapshot> CREATOR;
} }

View File

@@ -22,6 +22,7 @@ import android.net.ConnectivityManager.TYPE_ETHERNET
import android.net.ConnectivityManager.TYPE_MOBILE import android.net.ConnectivityManager.TYPE_MOBILE
import android.net.ConnectivityManager.TYPE_NONE import android.net.ConnectivityManager.TYPE_NONE
import android.net.ConnectivityManager.TYPE_WIFI import android.net.ConnectivityManager.TYPE_WIFI
import android.net.NetworkCapabilities.TRANSPORT_CELLULAR
import android.net.NetworkIdentity.OEM_NONE import android.net.NetworkIdentity.OEM_NONE
import android.net.NetworkIdentity.OEM_PAID import android.net.NetworkIdentity.OEM_PAID
import android.net.NetworkIdentity.OEM_PRIVATE import android.net.NetworkIdentity.OEM_PRIVATE
@@ -39,8 +40,11 @@ import kotlin.test.assertFailsWith
import kotlin.test.assertFalse import kotlin.test.assertFalse
import kotlin.test.assertTrue import kotlin.test.assertTrue
private const val TEST_IMSI = "testimsi"
private const val TEST_WIFI_KEY = "testwifikey" private const val TEST_WIFI_KEY = "testwifikey"
private const val TEST_IMSI1 = "testimsi1"
private const val TEST_IMSI2 = "testimsi2"
private const val TEST_SUBID1 = 1
private const val TEST_SUBID2 = 2
@RunWith(DevSdkIgnoreRunner::class) @RunWith(DevSdkIgnoreRunner::class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R) @DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R)
@@ -84,7 +88,7 @@ class NetworkIdentityTest {
fun testIsMetered() { fun testIsMetered() {
// Verify network is metered. // Verify network is metered.
val netIdent1 = NetworkIdentity.buildNetworkIdentity(mockContext, val netIdent1 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(NetworkCapabilities(), TEST_IMSI), buildMobileNetworkStateSnapshot(NetworkCapabilities(), TEST_IMSI1),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS) false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertTrue(netIdent1.isMetered()) assertTrue(netIdent1.isMetered())
@@ -93,7 +97,7 @@ class NetworkIdentityTest {
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
}.build() }.build()
val netIdent2 = NetworkIdentity.buildNetworkIdentity(mockContext, val netIdent2 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(capsNotMetered, TEST_IMSI), buildMobileNetworkStateSnapshot(capsNotMetered, TEST_IMSI1),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS) false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertFalse(netIdent2.isMetered()) assertFalse(netIdent2.isMetered())
@@ -103,33 +107,38 @@ class NetworkIdentityTest {
setCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED, true) setCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED, true)
} }
val netIdent3 = NetworkIdentity.buildNetworkIdentity(mockContext, val netIdent3 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(capsTempNotMetered, TEST_IMSI), buildMobileNetworkStateSnapshot(capsTempNotMetered, TEST_IMSI1),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS) false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertFalse(netIdent3.isMetered()) assertFalse(netIdent3.isMetered())
} }
@Test @Test
fun testBuilder() { fun testBuilder() {
val specifier1 = TelephonyNetworkSpecifier(TEST_SUBID1)
val oemPrivateRoamingNotMeteredCap = NetworkCapabilities().apply { val oemPrivateRoamingNotMeteredCap = NetworkCapabilities().apply {
addCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE) addCapability(NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE)
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
addTransportType(TRANSPORT_CELLULAR)
setNetworkSpecifier(specifier1)
} }
val identFromSnapshot = NetworkIdentity.Builder().setNetworkStateSnapshot( val identFromSnapshot = NetworkIdentity.Builder().setNetworkStateSnapshot(
buildMobileNetworkStateSnapshot(oemPrivateRoamingNotMeteredCap, TEST_IMSI)) buildMobileNetworkStateSnapshot(oemPrivateRoamingNotMeteredCap, TEST_IMSI1))
.setDefaultNetwork(true) .setDefaultNetwork(true)
.setRatType(TelephonyManager.NETWORK_TYPE_UMTS) .setRatType(TelephonyManager.NETWORK_TYPE_UMTS)
.setSubId(TEST_SUBID1)
.build() .build()
val identFromLegacyBuild = NetworkIdentity.buildNetworkIdentity(mockContext, val identFromLegacyBuild = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(oemPrivateRoamingNotMeteredCap, TEST_IMSI), buildMobileNetworkStateSnapshot(oemPrivateRoamingNotMeteredCap, TEST_IMSI1),
true /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS) true /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
val identFromConstructor = NetworkIdentity(TYPE_MOBILE, val identFromConstructor = NetworkIdentity(TYPE_MOBILE,
TelephonyManager.NETWORK_TYPE_UMTS, TelephonyManager.NETWORK_TYPE_UMTS,
TEST_IMSI, TEST_IMSI1,
null /* wifiNetworkKey */, null /* wifiNetworkKey */,
true /* roaming */, true /* roaming */,
false /* metered */, false /* metered */,
true /* defaultNetwork */, true /* defaultNetwork */,
NetworkTemplate.OEM_MANAGED_PRIVATE) NetworkTemplate.OEM_MANAGED_PRIVATE,
TEST_SUBID1)
assertEquals(identFromLegacyBuild, identFromSnapshot) assertEquals(identFromLegacyBuild, identFromSnapshot)
assertEquals(identFromConstructor, identFromSnapshot) assertEquals(identFromConstructor, identFromSnapshot)
@@ -222,4 +231,28 @@ class NetworkIdentityTest {
} }
} }
} }
@Test
fun testGetSubId() {
val specifier1 = TelephonyNetworkSpecifier(TEST_SUBID1)
val specifier2 = TelephonyNetworkSpecifier(TEST_SUBID2)
val capSUBID1 = NetworkCapabilities().apply {
addTransportType(TRANSPORT_CELLULAR)
setNetworkSpecifier(specifier1)
}
val capSUBID2 = NetworkCapabilities().apply {
addTransportType(TRANSPORT_CELLULAR)
setNetworkSpecifier(specifier2)
}
val netIdent1 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(capSUBID1, TEST_IMSI1),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertEquals(TEST_SUBID1, netIdent1.getSubId())
val netIdent2 = NetworkIdentity.buildNetworkIdentity(mockContext,
buildMobileNetworkStateSnapshot(capSUBID2, TEST_IMSI2),
false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS)
assertEquals(TEST_SUBID2, netIdent2.getSubId())
}
} }

View File

@@ -87,6 +87,7 @@ public class NetworkStatsCollectionTest {
private static final String TEST_FILE = "test.bin"; private static final String TEST_FILE = "test.bin";
private static final String TEST_IMSI = "310260000000000"; private static final String TEST_IMSI = "310260000000000";
private static final int TEST_SUBID = 1;
private static final long TIME_A = 1326088800000L; // UTC: Monday 9th January 2012 06:00:00 AM private static final long TIME_A = 1326088800000L; // UTC: Monday 9th January 2012 06:00:00 AM
private static final long TIME_B = 1326110400000L; // UTC: Monday 9th January 2012 12:00:00 PM private static final long TIME_B = 1326110400000L; // UTC: Monday 9th January 2012 12:00:00 PM
@@ -213,7 +214,7 @@ public class NetworkStatsCollectionTest {
final NetworkStats.Entry entry = new NetworkStats.Entry(); final NetworkStats.Entry entry = new NetworkStats.Entry();
final NetworkIdentitySet identSet = new NetworkIdentitySet(); final NetworkIdentitySet identSet = new NetworkIdentitySet();
identSet.add(new NetworkIdentity(TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN, identSet.add(new NetworkIdentity(TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN,
TEST_IMSI, null, false, true, true, OEM_NONE)); TEST_IMSI, null, false, true, true, OEM_NONE, TEST_SUBID));
int myUid = Process.myUid(); int myUid = Process.myUid();
int otherUidInSameUser = Process.myUid() + 1; int otherUidInSameUser = Process.myUid() + 1;
@@ -475,7 +476,7 @@ public class NetworkStatsCollectionTest {
final NetworkStatsCollection large = new NetworkStatsCollection(HOUR_IN_MILLIS); final NetworkStatsCollection large = new NetworkStatsCollection(HOUR_IN_MILLIS);
final NetworkIdentitySet ident = new NetworkIdentitySet(); final NetworkIdentitySet ident = new NetworkIdentitySet();
ident.add(new NetworkIdentity(ConnectivityManager.TYPE_MOBILE, -1, TEST_IMSI, null, ident.add(new NetworkIdentity(ConnectivityManager.TYPE_MOBILE, -1, TEST_IMSI, null,
false, true, true, OEM_NONE)); false, true, true, OEM_NONE, TEST_SUBID));
large.recordData(ident, UID_ALL, SET_ALL, TAG_NONE, TIME_A, TIME_B, large.recordData(ident, UID_ALL, SET_ALL, TAG_NONE, TIME_A, TIME_B,
new NetworkStats.Entry(12_730_893_164L, 1, 0, 0, 0)); new NetworkStats.Entry(12_730_893_164L, 1, 0, 0, 0));

View File

@@ -46,7 +46,7 @@ class NetworkStatsDataMigrationUtilsTest {
@Test @Test
fun testReadPlatformCollection() { fun testReadPlatformCollection() {
// Verify the method throws for wrong file version. // Verify the method throws for wrong file format.
assertFailsWith<ProtocolException> { assertFailsWith<ProtocolException> {
NetworkStatsDataMigrationUtils.readPlatformCollection( NetworkStatsDataMigrationUtils.readPlatformCollection(
NetworkStatsCollection.Builder(BUCKET_DURATION_MS), NetworkStatsCollection.Builder(BUCKET_DURATION_MS),

View File

@@ -78,6 +78,7 @@ public class NetworkStatsObserversTest {
private static final String IMSI_1 = "310004"; private static final String IMSI_1 = "310004";
private static final String IMSI_2 = "310260"; private static final String IMSI_2 = "310260";
private static final int SUBID_1 = 1;
private static final String TEST_SSID = "AndroidAP"; private static final String TEST_SSID = "AndroidAP";
private static NetworkTemplate sTemplateWifi = buildTemplateWifiWildcard(); private static NetworkTemplate sTemplateWifi = buildTemplateWifiWildcard();
@@ -224,7 +225,7 @@ public class NetworkStatsObserversTest {
identSet.add(new NetworkIdentity( identSet.add(new NetworkIdentity(
TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN, TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN,
IMSI_1, null /* networkId */, false /* roaming */, true /* metered */, IMSI_1, null /* networkId */, false /* roaming */, true /* metered */,
true /* defaultNetwork */, OEM_NONE)); true /* defaultNetwork */, OEM_NONE, SUBID_1));
return identSet; return identSet;
} }