diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2011-01-12 07:16:56 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-12 07:16:56 -0800 |
commit | a78e9f055834030ebe25480004f667f4bca35232 (patch) | |
tree | fcf834aca7d8e2daae1630971c018794a0570c7b /services | |
parent | 31d9d895d79977fa4e6dff2491b209fbeb21c61b (diff) | |
parent | f21ef7db777e2c79b2f5acac55dcc310b14eb989 (diff) | |
download | frameworks_base-a78e9f055834030ebe25480004f667f4bca35232.zip frameworks_base-a78e9f055834030ebe25480004f667f4bca35232.tar.gz frameworks_base-a78e9f055834030ebe25480004f667f4bca35232.tar.bz2 |
Merge "Fix any_connection reporting." into honeycomb
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/ConnectivityService.java | 75 |
1 files changed, 25 insertions, 50 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index b1eead2..a3d8ac9 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -1100,18 +1100,10 @@ public class ConnectivityService extends IConnectivityManager.Stub { info.getExtraInfo()); } - NetworkStateTracker newNet = null; if (mNetAttributes[prevNetType].isDefault()) { - newNet = tryFailover(prevNetType); - if (newNet != null) { - NetworkInfo switchTo = newNet.getNetworkInfo(); - if (!switchTo.isConnected()) { - // if the other net is connected they've already reset this and perhaps even - // gotten a positive report we don't want to overwrite, but if not we need to - // clear this now to turn our cellular sig strength white - mDefaultInetConditionPublished = 0; - intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true); - } + tryFailover(prevNetType); + if (mActiveDefaultNetwork != -1) { + NetworkInfo switchTo = mNetTrackers[mActiveDefaultNetwork].getNetworkInfo(); intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo); } else { mDefaultInetConditionPublished = 0; // we're not connected anymore @@ -1127,55 +1119,45 @@ public class ConnectivityService extends IConnectivityManager.Stub { * 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()); + if (mActiveDefaultNetwork != -1) { + sendConnectedBroadcast(mNetTrackers[mActiveDefaultNetwork].getNetworkInfo()); } } - // returns null if no failover available, otherwise returns the highest - // priority network we're trying - private NetworkStateTracker tryFailover(int prevNetType) { + private void tryFailover(int prevNetType) { /* * If this is a default network, check if other defaults are available. * Try to reconnect on all available and let them hash it out when * more than one connects. */ - NetworkStateTracker newNet = null; if (mNetAttributes[prevNetType].isDefault()) { if (mActiveDefaultNetwork == prevNetType) { mActiveDefaultNetwork = -1; } - int newType = -1; - int newPriority = -1; + // don't signal a reconnect for anything lower or equal priority than our + // current connected default + // TODO - don't filter by priority now - nice optimization but risky +// int currentPriority = -1; +// if (mActiveDefaultNetwork != -1) { +// currentPriority = mNetAttributes[mActiveDefaultNetwork].mPriority; +// } for (int checkType=0; checkType <= ConnectivityManager.MAX_NETWORK_TYPE; checkType++) { if (checkType == prevNetType) continue; if (mNetAttributes[checkType] == null) continue; if (!mNetAttributes[checkType].isDefault()) continue; if (!mNetTrackers[checkType].isAvailable()) continue; +// if (currentPriority >= mNetAttributes[checkType].mPriority) continue; - NetworkStateTracker tracker = mNetTrackers[checkType]; - NetworkInfo info = tracker.getNetworkInfo(); - if (!info.isConnectedOrConnecting() || - tracker.isTeardownRequested()) { - info.setFailover(true); - tracker.reconnect(); - } - if (DBG) log("Attempting to switch to " + info.getTypeName()); - - // figure out if this is the highest priority network - // so we send an appropriate return value - if (checkType == mNetworkPreference) { - newType = checkType; - } - if (mNetAttributes[checkType].mPriority > newPriority && - newType != mNetworkPreference) { - newType = checkType; - newPriority = mNetAttributes[newType].mPriority; + NetworkStateTracker checkTracker = mNetTrackers[checkType]; + NetworkInfo checkInfo = checkTracker.getNetworkInfo(); + if (!checkInfo.isConnectedOrConnecting() || checkTracker.isTeardownRequested()) { + checkInfo.setFailover(true); + checkTracker.reconnect(); } + if (DBG) log("Attempting to switch to " + checkInfo.getTypeName()); } } - return newNet; } private void sendConnectedBroadcast(NetworkInfo info) { @@ -1238,17 +1220,10 @@ public class ConnectivityService extends IConnectivityManager.Stub { info.setFailover(false); } - NetworkStateTracker newNet = null; if (mNetAttributes[info.getType()].isDefault()) { - newNet = tryFailover(info.getType()); - if (newNet != null) { - NetworkInfo switchTo = newNet.getNetworkInfo(); - if (!switchTo.isConnected()) { - // if the other net is connected they've already reset this and perhaps - // even gotten a positive report we don't want to overwrite, but if not - // we need to clear this now to turn our cellular sig strength white - mDefaultInetConditionPublished = 0; - } + tryFailover(info.getType()); + if (mActiveDefaultNetwork != -1) { + NetworkInfo switchTo = mNetTrackers[mActiveDefaultNetwork].getNetworkInfo(); intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo); } else { mDefaultInetConditionPublished = 0; @@ -1262,8 +1237,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { * 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()); + if (mActiveDefaultNetwork != -1) { + sendConnectedBroadcast(mNetTrackers[mActiveDefaultNetwork].getNetworkInfo()); } } |