Loading services/java/com/android/server/ConnectivityService.java +43 −21 Original line number Diff line number Diff line Loading @@ -811,6 +811,28 @@ public class ConnectivityService extends IConnectivityManager.Stub { info.getExtraInfo()); } NetworkStateTracker newNet = tryFailover(prevNetType); if (newNet != null) { NetworkInfo switchTo = newNet.getNetworkInfo(); intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo); } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send * out a followup broadcast indicating successful failover */ if (newNet != null && newNet.getNetworkInfo().isConnected()) { sendConnectedBroadcast(newNet.getNetworkInfo()); } } // returns -1 if no failover available private NetworkStateTracker tryFailover(int prevNetType) { /* * If this is a default network, check if other defaults are available * or active Loading @@ -823,8 +845,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { int newType = -1; int newPriority = -1; for (int checkType=0; checkType <= ConnectivityManager.MAX_NETWORK_TYPE; checkType++) { for (int checkType=0; checkType <= ConnectivityManager.MAX_NETWORK_TYPE; checkType++) { if (checkType == prevNetType) { continue; } Loading @@ -839,8 +860,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (mRadioAttributes[mNetAttributes[checkType].mRadio]. mPriority > newPriority) { newType = checkType; newPriority = mRadioAttributes[mNetAttributes[newType]. mRadio].mPriority; newPriority = mRadioAttributes[mNetAttributes[newType].mRadio].mPriority; } } } Loading Loading @@ -870,29 +890,13 @@ public class ConnectivityService extends IConnectivityManager.Stub { switchTo.getTypeName()); } } intent.putExtra(ConnectivityManager. EXTRA_OTHER_NETWORK_INFO, switchTo); } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); newNet.reconnect(); } } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); } } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send * out a followup broadcast indicating successful failover */ if (newNet != null && newNet.getNetworkInfo().isConnected()) sendConnectedBroadcast(newNet.getNetworkInfo()); return newNet; } private void sendConnectedBroadcast(NetworkInfo info) { Loading Loading @@ -948,7 +952,25 @@ public class ConnectivityService extends IConnectivityManager.Stub { intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true); info.setFailover(false); } NetworkStateTracker newNet = tryFailover(info.getType()); if (newNet != null) { NetworkInfo switchTo = newNet.getNetworkInfo(); intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo); } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send * out a followup broadcast indicating successful failover */ if (newNet != null && newNet.getNetworkInfo().isConnected()) { sendConnectedBroadcast(newNet.getNetworkInfo()); } } private void sendStickyBroadcast(Intent intent) { Loading Loading
services/java/com/android/server/ConnectivityService.java +43 −21 Original line number Diff line number Diff line Loading @@ -811,6 +811,28 @@ public class ConnectivityService extends IConnectivityManager.Stub { info.getExtraInfo()); } NetworkStateTracker newNet = tryFailover(prevNetType); if (newNet != null) { NetworkInfo switchTo = newNet.getNetworkInfo(); intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo); } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send * out a followup broadcast indicating successful failover */ if (newNet != null && newNet.getNetworkInfo().isConnected()) { sendConnectedBroadcast(newNet.getNetworkInfo()); } } // returns -1 if no failover available private NetworkStateTracker tryFailover(int prevNetType) { /* * If this is a default network, check if other defaults are available * or active Loading @@ -823,8 +845,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { int newType = -1; int newPriority = -1; for (int checkType=0; checkType <= ConnectivityManager.MAX_NETWORK_TYPE; checkType++) { for (int checkType=0; checkType <= ConnectivityManager.MAX_NETWORK_TYPE; checkType++) { if (checkType == prevNetType) { continue; } Loading @@ -839,8 +860,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (mRadioAttributes[mNetAttributes[checkType].mRadio]. mPriority > newPriority) { newType = checkType; newPriority = mRadioAttributes[mNetAttributes[newType]. mRadio].mPriority; newPriority = mRadioAttributes[mNetAttributes[newType].mRadio].mPriority; } } } Loading Loading @@ -870,29 +890,13 @@ public class ConnectivityService extends IConnectivityManager.Stub { switchTo.getTypeName()); } } intent.putExtra(ConnectivityManager. EXTRA_OTHER_NETWORK_INFO, switchTo); } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); newNet.reconnect(); } } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); } } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send * out a followup broadcast indicating successful failover */ if (newNet != null && newNet.getNetworkInfo().isConnected()) sendConnectedBroadcast(newNet.getNetworkInfo()); return newNet; } private void sendConnectedBroadcast(NetworkInfo info) { Loading Loading @@ -948,7 +952,25 @@ public class ConnectivityService extends IConnectivityManager.Stub { intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true); info.setFailover(false); } NetworkStateTracker newNet = tryFailover(info.getType()); if (newNet != null) { NetworkInfo switchTo = newNet.getNetworkInfo(); intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo); } else { intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send * out a followup broadcast indicating successful failover */ if (newNet != null && newNet.getNetworkInfo().isConnected()) { sendConnectedBroadcast(newNet.getNetworkInfo()); } } private void sendStickyBroadcast(Intent intent) { Loading