Ensure that Ethernet is supported if the service is running.
Currently, it's possible for isNetworkSupported() to return false for TYPE_ETHERNET even if the device could otherwise support Ethernet (e.g., via a USB host adapter). This can lead to APIs APIs such as getActiveNetworkInfo and CONNECTIVITY_ACTION behaving as if Ethernet was not present, even if it's connected. Reduce the chance of this sort of misconfiguration by ensuring that if the Ethernet service is running, isNetworkSupported will return true for TYPE_ETHERNET. OEMs that would like the function to return false should avoid starting the Ethernet service. Bug: 37359230 Test: ConnectivityManagerTest passes on aosp_bullhead Change-Id: I395c689e47074910fb56bbd8fc5b2d698d3893ab
This commit is contained in:
@@ -37,6 +37,7 @@ import android.net.NetworkInfo.DetailedState;
|
||||
import android.net.NetworkInfo.State;
|
||||
import android.net.NetworkRequest;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Looper;
|
||||
import android.os.SystemProperties;
|
||||
import android.system.Os;
|
||||
import android.system.OsConstants;
|
||||
@@ -110,6 +111,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
Looper.prepare();
|
||||
mContext = getContext();
|
||||
mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
|
||||
@@ -279,11 +281,10 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
||||
}
|
||||
|
||||
private boolean isSupported(int networkType) {
|
||||
// Change-Id I02eb5f22737720095f646f8db5c87fd66da129d6 added VPN support
|
||||
// to all devices directly in software, independent of any external
|
||||
// configuration.
|
||||
return mNetworks.containsKey(networkType) ||
|
||||
(networkType == ConnectivityManager.TYPE_VPN);
|
||||
(networkType == ConnectivityManager.TYPE_VPN) ||
|
||||
(networkType == ConnectivityManager.TYPE_ETHERNET &&
|
||||
mContext.getSystemService(Context.ETHERNET_SERVICE) != null);
|
||||
}
|
||||
|
||||
public void testIsNetworkSupported() {
|
||||
|
||||
Reference in New Issue
Block a user