From 966fb798a13496125dee0a7d9f1c384dbd6e1de8 Mon Sep 17 00:00:00 2001 From: Yan Yan Date: Tue, 21 Mar 2023 18:01:54 +0000 Subject: [PATCH] Retain subscription IDs on restricted test networks Fix the bug where subscription IDs will be cleared on a restricted test network Bug: 263415068 Test: NetworkCapabilitiesTest Change-Id: I977781cd81f9d86858bd264825d66a2a69f6ce53 --- framework/src/android/net/NetworkCapabilities.java | 8 +++++--- .../common/java/android/net/NetworkCapabilitiesTest.java | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/framework/src/android/net/NetworkCapabilities.java b/framework/src/android/net/NetworkCapabilities.java index cd2daf0f7f..3cc9c65294 100644 --- a/framework/src/android/net/NetworkCapabilities.java +++ b/framework/src/android/net/NetworkCapabilities.java @@ -1134,14 +1134,16 @@ public final class NetworkCapabilities implements Parcelable { mTransportTypes = (originalTransportTypes & UNRESTRICTED_TEST_NETWORKS_ALLOWED_TRANSPORTS) | (1 << TRANSPORT_TEST); - - // SubIds are only allowed for Test Networks that only declare TRANSPORT_TEST. - setSubscriptionIds(originalSubIds); } else { // If the test network is restricted, then it may declare any transport. mTransportTypes = (originalTransportTypes | (1 << TRANSPORT_TEST)); } + if (hasSingleTransport(TRANSPORT_TEST)) { + // SubIds are only allowed for Test Networks that only declare TRANSPORT_TEST. + setSubscriptionIds(originalSubIds); + } + mNetworkCapabilities = originalCapabilities & TEST_NETWORKS_ALLOWED_CAPABILITIES; if (!hasTransport(TRANSPORT_CELLULAR)) { mNetworkCapabilities |= diff --git a/tests/common/java/android/net/NetworkCapabilitiesTest.java b/tests/common/java/android/net/NetworkCapabilitiesTest.java index 06af3c0d0f..aae342574f 100644 --- a/tests/common/java/android/net/NetworkCapabilitiesTest.java +++ b/tests/common/java/android/net/NetworkCapabilitiesTest.java @@ -1387,6 +1387,9 @@ public class NetworkCapabilitiesTest { // If the test network is restricted, then the network may declare any transport, and // appended with TRANSPORT_TEST. expectedNcBuilder.addTransportType(TRANSPORT_CELLULAR); + } else { + // If the test network only has TRANSPORT_TEST, then it can keep the subscription IDs. + expectedNcBuilder.setSubscriptionIds(Set.of(TEST_SUBID1)); } expectedNcBuilder.addTransportType(TRANSPORT_TEST);