Remove dead code 2.

Removing ConnectivityService.NetworkFactory.  This requires disabling
the ConnectivityServiceTest, but that's been broken since we stopped
using NetworkStateTrackers anyway.

Change-Id: I9b86bd37eb9d018c40f60dca5b00d62c36d4e3ad
This commit is contained in:
Robert Greenwalt
2014-07-27 12:06:40 -07:00
parent 73b0009b50
commit 00c1c93a3e
2 changed files with 143 additions and 326 deletions

View File

@@ -441,17 +441,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
NetworkConfig[] mNetConfigs; NetworkConfig[] mNetConfigs;
int mNetworksDefined; int mNetworksDefined;
private static class RadioAttributes {
public int mSimultaneity;
public int mType;
public RadioAttributes(String init) {
String fragments[] = init.split(",");
mType = Integer.parseInt(fragments[0]);
mSimultaneity = Integer.parseInt(fragments[1]);
}
}
RadioAttributes[] mRadioAttributes;
// the set of network types that can only be enabled by system/sig apps // the set of network types that can only be enabled by system/sig apps
List mProtectedNetworks; List mProtectedNetworks;
@@ -581,16 +570,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
} }
private LegacyTypeTracker mLegacyTypeTracker = new LegacyTypeTracker(); private LegacyTypeTracker mLegacyTypeTracker = new LegacyTypeTracker();
public ConnectivityService(Context context, INetworkManagementService netd,
INetworkStatsService statsService, INetworkPolicyManager policyManager) {
// Currently, omitting a NetworkFactory will create one internally
// TODO: create here when we have cleaner WiMAX support
this(context, netd, statsService, policyManager, null);
}
public ConnectivityService(Context context, INetworkManagementService netManager, public ConnectivityService(Context context, INetworkManagementService netManager,
INetworkStatsService statsService, INetworkPolicyManager policyManager, INetworkStatsService statsService, INetworkPolicyManager policyManager) {
NetworkFactory netFactory) {
if (DBG) log("ConnectivityService starting up"); if (DBG) log("ConnectivityService starting up");
NetworkCapabilities netCap = new NetworkCapabilities(); NetworkCapabilities netCap = new NetworkCapabilities();
@@ -606,10 +587,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
mHandler = new InternalHandler(handlerThread.getLooper()); mHandler = new InternalHandler(handlerThread.getLooper());
mTrackerHandler = new NetworkStateTrackerHandler(handlerThread.getLooper()); mTrackerHandler = new NetworkStateTrackerHandler(handlerThread.getLooper());
if (netFactory == null) {
netFactory = new DefaultNetworkFactory(context, mTrackerHandler);
}
// setup our unique device name // setup our unique device name
if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) { if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
String id = Settings.Secure.getString(context.getContentResolver(), String id = Settings.Secure.getString(context.getContentResolver(),
@@ -655,27 +632,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
mNetTrackers = new NetworkStateTracker[ mNetTrackers = new NetworkStateTracker[
ConnectivityManager.MAX_NETWORK_TYPE+1]; ConnectivityManager.MAX_NETWORK_TYPE+1];
mRadioAttributes = new RadioAttributes[ConnectivityManager.MAX_RADIO_TYPE+1];
mNetConfigs = new NetworkConfig[ConnectivityManager.MAX_NETWORK_TYPE+1]; mNetConfigs = new NetworkConfig[ConnectivityManager.MAX_NETWORK_TYPE+1];
// Load device network attributes from resources
String[] raStrings = context.getResources().getStringArray(
com.android.internal.R.array.radioAttributes);
for (String raString : raStrings) {
RadioAttributes r = new RadioAttributes(raString);
if (VDBG) log("raString=" + raString + " r=" + r);
if (r.mType > ConnectivityManager.MAX_RADIO_TYPE) {
loge("Error in radioAttributes - ignoring attempt to define type " + r.mType);
continue;
}
if (mRadioAttributes[r.mType] != null) {
loge("Error in radioAttributes - ignoring attempt to redefine type " +
r.mType);
continue;
}
mRadioAttributes[r.mType] = r;
}
// TODO: What is the "correct" way to do determine if this is a wifi only device? // TODO: What is the "correct" way to do determine if this is a wifi only device?
boolean wifiOnly = SystemProperties.getBoolean("ro.radio.noril", false); boolean wifiOnly = SystemProperties.getBoolean("ro.radio.noril", false);
log("wifiOnly=" + wifiOnly); log("wifiOnly=" + wifiOnly);
@@ -700,11 +658,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
n.type); n.type);
continue; continue;
} }
if (mRadioAttributes[n.radio] == null) {
loge("Error in networkAttributes - ignoring attempt to use undefined " +
"radio " + n.radio + " in network type " + n.type);
continue;
}
mLegacyTypeTracker.addSupportedType(n.type); mLegacyTypeTracker.addSupportedType(n.type);
mNetConfigs[n.type] = n; mNetConfigs[n.type] = n;
@@ -758,25 +711,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
mTestMode = SystemProperties.get("cm.test.mode").equals("true") mTestMode = SystemProperties.get("cm.test.mode").equals("true")
&& SystemProperties.get("ro.build.type").equals("eng"); && SystemProperties.get("ro.build.type").equals("eng");
// Create and start trackers for hard-coded networks
for (int targetNetworkType : mPriorityList) {
final NetworkConfig config = mNetConfigs[targetNetworkType];
final NetworkStateTracker tracker;
try {
tracker = netFactory.createTracker(targetNetworkType, config);
mNetTrackers[targetNetworkType] = tracker;
} catch (IllegalArgumentException e) {
Slog.e(TAG, "Problem creating " + getNetworkTypeName(targetNetworkType)
+ " tracker: " + e);
continue;
}
tracker.startMonitoring(context, mTrackerHandler);
if (config.isDefault()) {
tracker.reconnect();
}
}
mTethering = new Tethering(mContext, mNetd, statsService, mHandler.getLooper()); mTethering = new Tethering(mContext, mNetd, statsService, mHandler.getLooper());
//set up the listener for user state for creating user VPNs //set up the listener for user state for creating user VPNs
@@ -841,124 +775,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
return netId; return netId;
} }
/**
* Factory that creates {@link NetworkStateTracker} instances using given
* {@link NetworkConfig}.
*
* TODO - this is obsolete and will be deleted. It's replaced by the
* registerNetworkFactory call and protocol.
* @Deprecated in favor of registerNetworkFactory dynamic bindings
*/
public interface NetworkFactory {
public NetworkStateTracker createTracker(int targetNetworkType, NetworkConfig config);
}
private static class DefaultNetworkFactory implements NetworkFactory {
private final Context mContext;
private final Handler mTrackerHandler;
public DefaultNetworkFactory(Context context, Handler trackerHandler) {
mContext = context;
mTrackerHandler = trackerHandler;
}
@Override
public NetworkStateTracker createTracker(int targetNetworkType, NetworkConfig config) {
switch (config.radio) {
case TYPE_WIMAX:
return makeWimaxStateTracker(mContext, mTrackerHandler);
case TYPE_PROXY:
return new ProxyDataTracker();
default:
throw new IllegalArgumentException(
"Trying to create a NetworkStateTracker for an unknown radio type: "
+ config.radio);
}
}
}
/**
* Loads external WiMAX library and registers as system service, returning a
* {@link NetworkStateTracker} for WiMAX. Caller is still responsible for
* invoking {@link NetworkStateTracker#startMonitoring(Context, Handler)}.
*/
private static NetworkStateTracker makeWimaxStateTracker(
Context context, Handler trackerHandler) {
// Initialize Wimax
DexClassLoader wimaxClassLoader;
Class wimaxStateTrackerClass = null;
Class wimaxServiceClass = null;
Class wimaxManagerClass;
String wimaxJarLocation;
String wimaxLibLocation;
String wimaxManagerClassName;
String wimaxServiceClassName;
String wimaxStateTrackerClassName;
NetworkStateTracker wimaxStateTracker = null;
boolean isWimaxEnabled = context.getResources().getBoolean(
com.android.internal.R.bool.config_wimaxEnabled);
if (isWimaxEnabled) {
try {
wimaxJarLocation = context.getResources().getString(
com.android.internal.R.string.config_wimaxServiceJarLocation);
wimaxLibLocation = context.getResources().getString(
com.android.internal.R.string.config_wimaxNativeLibLocation);
wimaxManagerClassName = context.getResources().getString(
com.android.internal.R.string.config_wimaxManagerClassname);
wimaxServiceClassName = context.getResources().getString(
com.android.internal.R.string.config_wimaxServiceClassname);
wimaxStateTrackerClassName = context.getResources().getString(
com.android.internal.R.string.config_wimaxStateTrackerClassname);
if (DBG) log("wimaxJarLocation: " + wimaxJarLocation);
wimaxClassLoader = new DexClassLoader(wimaxJarLocation,
new ContextWrapper(context).getCacheDir().getAbsolutePath(),
wimaxLibLocation, ClassLoader.getSystemClassLoader());
try {
wimaxManagerClass = wimaxClassLoader.loadClass(wimaxManagerClassName);
wimaxStateTrackerClass = wimaxClassLoader.loadClass(wimaxStateTrackerClassName);
wimaxServiceClass = wimaxClassLoader.loadClass(wimaxServiceClassName);
} catch (ClassNotFoundException ex) {
loge("Exception finding Wimax classes: " + ex.toString());
return null;
}
} catch(Resources.NotFoundException ex) {
loge("Wimax Resources does not exist!!! ");
return null;
}
try {
if (DBG) log("Starting Wimax Service... ");
Constructor wmxStTrkrConst = wimaxStateTrackerClass.getConstructor
(new Class[] {Context.class, Handler.class});
wimaxStateTracker = (NetworkStateTracker) wmxStTrkrConst.newInstance(
context, trackerHandler);
Constructor wmxSrvConst = wimaxServiceClass.getDeclaredConstructor
(new Class[] {Context.class, wimaxStateTrackerClass});
wmxSrvConst.setAccessible(true);
IBinder svcInvoker = (IBinder)wmxSrvConst.newInstance(context, wimaxStateTracker);
wmxSrvConst.setAccessible(false);
ServiceManager.addService(WimaxManagerConstants.WIMAX_SERVICE, svcInvoker);
} catch(Exception ex) {
loge("Exception creating Wimax classes: " + ex.toString());
return null;
}
} else {
loge("Wimax is not enabled or not added to the network attributes!!! ");
return null;
}
return wimaxStateTracker;
}
private int getConnectivityChangeDelay() { private int getConnectivityChangeDelay() {
final ContentResolver cr = mContext.getContentResolver(); final ContentResolver cr = mContext.getContentResolver();

View File

@@ -38,7 +38,6 @@ import android.net.LinkProperties;
import android.net.NetworkConfig; 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.NetworkStateTracker;
import android.net.RouteInfo; import android.net.RouteInfo;
import android.os.Handler; import android.os.Handler;
import android.os.INetworkManagementService; import android.os.INetworkManagementService;
@@ -77,152 +76,154 @@ public class ConnectivityServiceTest extends AndroidTestCase {
private INetworkManagementService mNetManager; private INetworkManagementService mNetManager;
private INetworkStatsService mStatsService; private INetworkStatsService mStatsService;
private INetworkPolicyManager mPolicyService; private INetworkPolicyManager mPolicyService;
private ConnectivityService.NetworkFactory mNetFactory; // private ConnectivityService.NetworkFactory mNetFactory;
private BroadcastInterceptingContext mServiceContext; private BroadcastInterceptingContext mServiceContext;
private ConnectivityService mService; private ConnectivityService mService;
private MockNetwork mMobile; // TODO: rework with network factory
private MockNetwork mWifi; // private MockNetwork mMobile;
// private MockNetwork mWifi;
private Handler mTrackerHandler; //
// private Handler mTrackerHandler;
private static class MockNetwork { //
public NetworkStateTracker tracker; // private static class MockNetwork {
public NetworkInfo info; // public NetworkStateTracker tracker;
public LinkProperties link; // public NetworkInfo info;
// public LinkProperties link;
public MockNetwork(int type) { //
tracker = mock(NetworkStateTracker.class); // public MockNetwork(int type) {
info = new NetworkInfo(type, -1, getNetworkTypeName(type), null); // tracker = mock(NetworkStateTracker.class);
link = new LinkProperties(); // info = new NetworkInfo(type, -1, getNetworkTypeName(type), null);
} // link = new LinkProperties();
// }
public void doReturnDefaults() { //
// TODO: eventually CS should make defensive copies // public void doReturnDefaults() {
doReturn(new NetworkInfo(info)).when(tracker).getNetworkInfo(); // // TODO: eventually CS should make defensive copies
doReturn(new LinkProperties(link)).when(tracker).getLinkProperties(); // doReturn(new NetworkInfo(info)).when(tracker).getNetworkInfo();
// doReturn(new LinkProperties(link)).when(tracker).getLinkProperties();
// fallback to default TCP buffers //
doReturn("").when(tracker).getTcpBufferSizesPropName(); // // fallback to default TCP buffers
} // doReturn("").when(tracker).getTcpBufferSizesPropName();
} // }
// }
@Override //
public void setUp() throws Exception { // @Override
super.setUp(); // public void setUp() throws Exception {
// super.setUp();
mServiceContext = new BroadcastInterceptingContext(getContext()); //
// mServiceContext = new BroadcastInterceptingContext(getContext());
mNetManager = mock(INetworkManagementService.class); //
mStatsService = mock(INetworkStatsService.class); // mNetManager = mock(INetworkManagementService.class);
mPolicyService = mock(INetworkPolicyManager.class); // mStatsService = mock(INetworkStatsService.class);
mNetFactory = mock(ConnectivityService.NetworkFactory.class); // mPolicyService = mock(INetworkPolicyManager.class);
// mNetFactory = mock(ConnectivityService.NetworkFactory.class);
mMobile = new MockNetwork(TYPE_MOBILE); //
mWifi = new MockNetwork(TYPE_WIFI); // mMobile = new MockNetwork(TYPE_MOBILE);
// mWifi = new MockNetwork(TYPE_WIFI);
// omit most network trackers //
doThrow(new IllegalArgumentException("Not supported in test environment")) // // omit most network trackers
.when(mNetFactory).createTracker(anyInt(), isA(NetworkConfig.class)); // doThrow(new IllegalArgumentException("Not supported in test environment"))
// .when(mNetFactory).createTracker(anyInt(), isA(NetworkConfig.class));
doReturn(mMobile.tracker) //
.when(mNetFactory).createTracker(eq(TYPE_MOBILE), isA(NetworkConfig.class)); // doReturn(mMobile.tracker)
doReturn(mWifi.tracker) // .when(mNetFactory).createTracker(eq(TYPE_MOBILE), isA(NetworkConfig.class));
.when(mNetFactory).createTracker(eq(TYPE_WIFI), isA(NetworkConfig.class)); // doReturn(mWifi.tracker)
// .when(mNetFactory).createTracker(eq(TYPE_WIFI), isA(NetworkConfig.class));
final ArgumentCaptor<Handler> trackerHandler = ArgumentCaptor.forClass(Handler.class); //
doNothing().when(mMobile.tracker) // final ArgumentCaptor<Handler> trackerHandler = ArgumentCaptor.forClass(Handler.class);
.startMonitoring(isA(Context.class), trackerHandler.capture()); // doNothing().when(mMobile.tracker)
// .startMonitoring(isA(Context.class), trackerHandler.capture());
mService = new ConnectivityService( //
mServiceContext, mNetManager, mStatsService, mPolicyService, mNetFactory); // mService = new ConnectivityService(
mService.systemReady(); // mServiceContext, mNetManager, mStatsService, mPolicyService);
// mService.systemReady();
mTrackerHandler = trackerHandler.getValue(); //
mTrackerHandler.getLooper().setMessageLogging(new LogPrinter(Log.INFO, TAG)); // mTrackerHandler = trackerHandler.getValue();
} // mTrackerHandler.getLooper().setMessageLogging(new LogPrinter(Log.INFO, TAG));
// }
@Override //
public void tearDown() throws Exception { // @Override
super.tearDown(); // public void tearDown() throws Exception {
} // super.tearDown();
// }
public void testMobileConnectedAddedRoutes() throws Exception { //
Future<?> nextConnBroadcast; // public void testMobileConnectedAddedRoutes() throws Exception {
// Future<?> nextConnBroadcast;
// bring up mobile network //
mMobile.info.setDetailedState(DetailedState.CONNECTED, null, null); // // bring up mobile network
mMobile.link.setInterfaceName(MOBILE_IFACE); // mMobile.info.setDetailedState(DetailedState.CONNECTED, null, null);
mMobile.link.addRoute(MOBILE_ROUTE_V4); // mMobile.link.setInterfaceName(MOBILE_IFACE);
mMobile.link.addRoute(MOBILE_ROUTE_V6); // mMobile.link.addRoute(MOBILE_ROUTE_V4);
mMobile.doReturnDefaults(); // mMobile.link.addRoute(MOBILE_ROUTE_V6);
// mMobile.doReturnDefaults();
nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE); //
mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mMobile.info).sendToTarget(); // nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE);
nextConnBroadcast.get(); // mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mMobile.info).sendToTarget();
// nextConnBroadcast.get();
// verify that both routes were added //
int mobileNetId = mMobile.tracker.getNetwork().netId; // // verify that both routes were added
verify(mNetManager).addRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V4)); // int mobileNetId = mMobile.tracker.getNetwork().netId;
verify(mNetManager).addRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V6)); // verify(mNetManager).addRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V4));
} // verify(mNetManager).addRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V6));
// }
public void testMobileWifiHandoff() throws Exception { //
Future<?> nextConnBroadcast; // public void testMobileWifiHandoff() throws Exception {
// Future<?> nextConnBroadcast;
// bring up mobile network //
mMobile.info.setDetailedState(DetailedState.CONNECTED, null, null); // // bring up mobile network
mMobile.link.setInterfaceName(MOBILE_IFACE); // mMobile.info.setDetailedState(DetailedState.CONNECTED, null, null);
mMobile.link.addRoute(MOBILE_ROUTE_V4); // mMobile.link.setInterfaceName(MOBILE_IFACE);
mMobile.link.addRoute(MOBILE_ROUTE_V6); // mMobile.link.addRoute(MOBILE_ROUTE_V4);
mMobile.doReturnDefaults(); // mMobile.link.addRoute(MOBILE_ROUTE_V6);
// mMobile.doReturnDefaults();
nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE); //
mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mMobile.info).sendToTarget(); // nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE);
nextConnBroadcast.get(); // mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mMobile.info).sendToTarget();
// nextConnBroadcast.get();
reset(mNetManager); //
// reset(mNetManager);
// now bring up wifi network //
mWifi.info.setDetailedState(DetailedState.CONNECTED, null, null); // // now bring up wifi network
mWifi.link.setInterfaceName(WIFI_IFACE); // mWifi.info.setDetailedState(DetailedState.CONNECTED, null, null);
mWifi.link.addRoute(WIFI_ROUTE_V4); // mWifi.link.setInterfaceName(WIFI_IFACE);
mWifi.link.addRoute(WIFI_ROUTE_V6); // mWifi.link.addRoute(WIFI_ROUTE_V4);
mWifi.doReturnDefaults(); // mWifi.link.addRoute(WIFI_ROUTE_V6);
// mWifi.doReturnDefaults();
// expect that mobile will be torn down //
doReturn(true).when(mMobile.tracker).teardown(); // // expect that mobile will be torn down
// doReturn(true).when(mMobile.tracker).teardown();
nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE); //
mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mWifi.info).sendToTarget(); // nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE);
nextConnBroadcast.get(); // mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mWifi.info).sendToTarget();
// nextConnBroadcast.get();
// verify that wifi routes added, and teardown requested //
int wifiNetId = mWifi.tracker.getNetwork().netId; // // verify that wifi routes added, and teardown requested
verify(mNetManager).addRoute(eq(wifiNetId), eq(WIFI_ROUTE_V4)); // int wifiNetId = mWifi.tracker.getNetwork().netId;
verify(mNetManager).addRoute(eq(wifiNetId), eq(WIFI_ROUTE_V6)); // verify(mNetManager).addRoute(eq(wifiNetId), eq(WIFI_ROUTE_V4));
verify(mMobile.tracker).teardown(); // verify(mNetManager).addRoute(eq(wifiNetId), eq(WIFI_ROUTE_V6));
// verify(mMobile.tracker).teardown();
int mobileNetId = mMobile.tracker.getNetwork().netId; //
// int mobileNetId = mMobile.tracker.getNetwork().netId;
reset(mNetManager, mMobile.tracker); //
// reset(mNetManager, mMobile.tracker);
// tear down mobile network, as requested //
mMobile.info.setDetailedState(DetailedState.DISCONNECTED, null, null); // // tear down mobile network, as requested
mMobile.link.clear(); // mMobile.info.setDetailedState(DetailedState.DISCONNECTED, null, null);
mMobile.doReturnDefaults(); // mMobile.link.clear();
// mMobile.doReturnDefaults();
nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE); //
mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mMobile.info).sendToTarget(); // nextConnBroadcast = mServiceContext.nextBroadcastIntent(CONNECTIVITY_ACTION_IMMEDIATE);
nextConnBroadcast.get(); // mTrackerHandler.obtainMessage(EVENT_STATE_CHANGED, mMobile.info).sendToTarget();
// nextConnBroadcast.get();
verify(mNetManager).removeRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V4)); //
verify(mNetManager).removeRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V6)); // verify(mNetManager).removeRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V4));
// verify(mNetManager).removeRoute(eq(mobileNetId), eq(MOBILE_ROUTE_V6));
} //
// }
private static InetAddress parse(String addr) { private static InetAddress parse(String addr) {
return InetAddress.parseNumericAddress(addr); return InetAddress.parseNumericAddress(addr);
} }
} }