Merge "Remove networkAttributes resource usage" am: 584cfc6b67

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

Change-Id: I94c174ca3ee356706947f213cb05d0a47deff233
This commit is contained in:
Remi NGUYEN VAN
2021-03-17 11:51:17 +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_INTERNAL;
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS; import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
import static android.Manifest.permission.NETWORK_SETTINGS; 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_ETHERNET;
import static android.content.pm.PackageManager.FEATURE_TELEPHONY; import static android.content.pm.PackageManager.FEATURE_TELEPHONY;
import static android.content.pm.PackageManager.FEATURE_USB_HOST; 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;
import static android.content.pm.PackageManager.FEATURE_WIFI_DIRECT;
import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.PERMISSION_GRANTED; 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_FOREGROUND;
import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS; import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS;
import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
@@ -78,7 +95,6 @@ import android.net.LinkAddress;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkConfig;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState; import android.net.NetworkInfo.DetailedState;
import android.net.NetworkInfo.State; import android.net.NetworkInfo.State;
@@ -100,7 +116,9 @@ import android.os.SystemProperties;
import android.os.VintfRuntimeInfo; import android.os.VintfRuntimeInfo;
import android.platform.test.annotations.AppModeFull; import android.platform.test.annotations.AppModeFull;
import android.provider.Settings; import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import android.util.Pair; import android.util.Pair;
@@ -115,6 +133,7 @@ import com.android.networkstack.apishim.common.ConnectivityManagerShim;
import com.android.testutils.CompatUtil; import com.android.testutils.CompatUtil;
import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
import com.android.testutils.DevSdkIgnoreRuleKt;
import com.android.testutils.RecorderCallback.CallbackEntry; import com.android.testutils.RecorderCallback.CallbackEntry;
import com.android.testutils.SkipPresubmit; import com.android.testutils.SkipPresubmit;
import com.android.testutils.TestableNetworkCallback; import com.android.testutils.TestableNetworkCallback;
@@ -146,7 +165,6 @@ import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@@ -201,8 +219,7 @@ public class ConnectivityManagerTest {
private ConnectivityManagerShim mCmShim; private ConnectivityManagerShim mCmShim;
private WifiManager mWifiManager; private WifiManager mWifiManager;
private PackageManager mPackageManager; private PackageManager mPackageManager;
private final HashMap<Integer, NetworkConfig> mNetworks = private final ArraySet<Integer> mNetworkTypes = new ArraySet<>();
new HashMap<Integer, NetworkConfig>();
private UiAutomation mUiAutomation; private UiAutomation mUiAutomation;
private CtsNetUtils mCtsNetUtils; private CtsNetUtils mCtsNetUtils;
@@ -216,25 +233,69 @@ public class ConnectivityManagerTest {
mPackageManager = mContext.getPackageManager(); mPackageManager = mContext.getPackageManager();
mCtsNetUtils = new CtsNetUtils(mContext); mCtsNetUtils = new CtsNetUtils(mContext);
// Get com.android.internal.R.array.networkAttributes if (DevSdkIgnoreRuleKt.isDevSdkInRange(null /* minExclusive */,
int resId = mContext.getResources().getIdentifier("networkAttributes", "array", "android"); Build.VERSION_CODES.R /* maxInclusive */)) {
String[] naStrings = mContext.getResources().getStringArray(resId); addLegacySupportedNetworkTypes();
//TODO: What is the "correct" way to determine if this is a wifi only device? } else {
boolean wifiOnly = SystemProperties.getBoolean("ro.radio.noril", false); addSupportedNetworkTypes();
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) {}
} }
mUiAutomation = mInstrumentation.getUiAutomation(); mUiAutomation = mInstrumentation.getUiAutomation();
assertNotNull("CTS requires a working Internet connection", mCm.getActiveNetwork()); 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 @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
// Release any NetworkRequests filed to connect mobile data. // Release any NetworkRequests filed to connect mobile data.
@@ -461,9 +522,9 @@ public class ConnectivityManagerTest {
} }
private boolean shouldBeSupported(int networkType) { private boolean shouldBeSupported(int networkType) {
return mNetworks.containsKey(networkType) || return mNetworkTypes.contains(networkType)
(networkType == ConnectivityManager.TYPE_VPN) || || (networkType == ConnectivityManager.TYPE_VPN)
(networkType == ConnectivityManager.TYPE_ETHERNET && shouldEthernetBeSupported()); || (networkType == ConnectivityManager.TYPE_ETHERNET && shouldEthernetBeSupported());
} }
@Test @Test