Merge "Remove networkAttributes resource usage" am: 584cfc6b67 am: 5916c38d92

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

Change-Id: Ib09dccf181d2d9fa9cf31e8da3d4ee7454d2dc68
This commit is contained in:
Remi NGUYEN VAN
2021-03-17 12:34:22 +00:00
committed by Automerger Merge Worker

View File

@@ -19,12 +19,29 @@ package android.net.cts;
import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
import static android.Manifest.permission.NETWORK_SETTINGS;
import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
import static android.content.pm.PackageManager.FEATURE_ETHERNET;
import static android.content.pm.PackageManager.FEATURE_TELEPHONY;
import static android.content.pm.PackageManager.FEATURE_USB_HOST;
import static android.content.pm.PackageManager.FEATURE_WATCH;
import static android.content.pm.PackageManager.FEATURE_WIFI;
import static android.content.pm.PackageManager.FEATURE_WIFI_DIRECT;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.net.ConnectivityManager.TYPE_BLUETOOTH;
import static android.net.ConnectivityManager.TYPE_ETHERNET;
import static android.net.ConnectivityManager.TYPE_MOBILE_CBS;
import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
import static android.net.ConnectivityManager.TYPE_MOBILE_EMERGENCY;
import static android.net.ConnectivityManager.TYPE_MOBILE_FOTA;
import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
import static android.net.ConnectivityManager.TYPE_MOBILE_IA;
import static android.net.ConnectivityManager.TYPE_MOBILE_IMS;
import static android.net.ConnectivityManager.TYPE_MOBILE_MMS;
import static android.net.ConnectivityManager.TYPE_MOBILE_SUPL;
import static android.net.ConnectivityManager.TYPE_PROXY;
import static android.net.ConnectivityManager.TYPE_VPN;
import static android.net.ConnectivityManager.TYPE_WIFI_P2P;
import static android.net.NetworkCapabilities.NET_CAPABILITY_FOREGROUND;
import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS;
import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
@@ -78,7 +95,6 @@ import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkConfig;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkInfo.State;
@@ -100,7 +116,9 @@ import android.os.SystemProperties;
import android.os.VintfRuntimeInfo;
import android.platform.test.annotations.AppModeFull;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
@@ -115,6 +133,7 @@ import com.android.networkstack.apishim.common.ConnectivityManagerShim;
import com.android.testutils.CompatUtil;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
import com.android.testutils.DevSdkIgnoreRuleKt;
import com.android.testutils.RecorderCallback.CallbackEntry;
import com.android.testutils.SkipPresubmit;
import com.android.testutils.TestableNetworkCallback;
@@ -146,7 +165,6 @@ import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
@@ -201,8 +219,7 @@ public class ConnectivityManagerTest {
private ConnectivityManagerShim mCmShim;
private WifiManager mWifiManager;
private PackageManager mPackageManager;
private final HashMap<Integer, NetworkConfig> mNetworks =
new HashMap<Integer, NetworkConfig>();
private final ArraySet<Integer> mNetworkTypes = new ArraySet<>();
private UiAutomation mUiAutomation;
private CtsNetUtils mCtsNetUtils;
@@ -216,25 +233,69 @@ public class ConnectivityManagerTest {
mPackageManager = mContext.getPackageManager();
mCtsNetUtils = new CtsNetUtils(mContext);
// Get com.android.internal.R.array.networkAttributes
int resId = mContext.getResources().getIdentifier("networkAttributes", "array", "android");
String[] naStrings = mContext.getResources().getStringArray(resId);
//TODO: What is the "correct" way to determine if this is a wifi only device?
boolean wifiOnly = SystemProperties.getBoolean("ro.radio.noril", false);
for (String naString : naStrings) {
try {
NetworkConfig n = new NetworkConfig(naString);
if (wifiOnly && ConnectivityManager.isNetworkTypeMobile(n.type)) {
continue;
}
mNetworks.put(n.type, n);
} catch (Exception e) {}
if (DevSdkIgnoreRuleKt.isDevSdkInRange(null /* minExclusive */,
Build.VERSION_CODES.R /* maxInclusive */)) {
addLegacySupportedNetworkTypes();
} else {
addSupportedNetworkTypes();
}
mUiAutomation = mInstrumentation.getUiAutomation();
assertNotNull("CTS requires a working Internet connection", mCm.getActiveNetwork());
}
private void addLegacySupportedNetworkTypes() {
// Network type support as expected for android R-
// Get com.android.internal.R.array.networkAttributes
int resId = mContext.getResources().getIdentifier("networkAttributes", "array", "android");
String[] naStrings = mContext.getResources().getStringArray(resId);
boolean wifiOnly = SystemProperties.getBoolean("ro.radio.noril", false);
for (String naString : naStrings) {
try {
final String[] splitConfig = naString.split(",");
// Format was name,type,radio,priority,restoreTime,dependencyMet
final int type = Integer.parseInt(splitConfig[1]);
if (wifiOnly && ConnectivityManager.isNetworkTypeMobile(type)) {
continue;
}
mNetworkTypes.add(type);
} catch (Exception e) {}
}
}
private void addSupportedNetworkTypes() {
final PackageManager pm = mContext.getPackageManager();
if (pm.hasSystemFeature(FEATURE_WIFI)) {
mNetworkTypes.add(TYPE_WIFI);
}
if (pm.hasSystemFeature(FEATURE_WIFI_DIRECT)) {
mNetworkTypes.add(TYPE_WIFI_P2P);
}
if (mContext.getSystemService(TelephonyManager.class).isDataCapable()) {
mNetworkTypes.add(TYPE_MOBILE);
mNetworkTypes.add(TYPE_MOBILE_MMS);
mNetworkTypes.add(TYPE_MOBILE_SUPL);
mNetworkTypes.add(TYPE_MOBILE_DUN);
mNetworkTypes.add(TYPE_MOBILE_HIPRI);
mNetworkTypes.add(TYPE_MOBILE_FOTA);
mNetworkTypes.add(TYPE_MOBILE_IMS);
mNetworkTypes.add(TYPE_MOBILE_CBS);
mNetworkTypes.add(TYPE_MOBILE_IA);
mNetworkTypes.add(TYPE_MOBILE_EMERGENCY);
}
if (pm.hasSystemFeature(FEATURE_BLUETOOTH)) {
mNetworkTypes.add(TYPE_BLUETOOTH);
}
if (pm.hasSystemFeature(FEATURE_WATCH)) {
mNetworkTypes.add(TYPE_PROXY);
}
if (mContext.getSystemService(Context.ETHERNET_SERVICE) != null) {
mNetworkTypes.add(TYPE_ETHERNET);
}
mNetworkTypes.add(TYPE_VPN);
}
@After
public void tearDown() throws Exception {
// Release any NetworkRequests filed to connect mobile data.
@@ -461,9 +522,9 @@ public class ConnectivityManagerTest {
}
private boolean shouldBeSupported(int networkType) {
return mNetworks.containsKey(networkType) ||
(networkType == ConnectivityManager.TYPE_VPN) ||
(networkType == ConnectivityManager.TYPE_ETHERNET && shouldEthernetBeSupported());
return mNetworkTypes.contains(networkType)
|| (networkType == ConnectivityManager.TYPE_VPN)
|| (networkType == ConnectivityManager.TYPE_ETHERNET && shouldEthernetBeSupported());
}
@Test