summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Greenwalt <robdroid@android.com>2010-01-13 17:09:40 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2010-01-13 17:09:40 -0800
commit90528645ad7d40634737075dc49a9f60bc7a1748 (patch)
tree08e8daf2e96fd043239cd00dedc3f7af1660acc4
parentb4f41119044e5ec7f7b76ed4ac02b5cfbaeb474d (diff)
parent1193ae4e824c66b75083c444ce0f250594e138ee (diff)
downloadframeworks_base-90528645ad7d40634737075dc49a9f60bc7a1748.zip
frameworks_base-90528645ad7d40634737075dc49a9f60bc7a1748.tar.gz
frameworks_base-90528645ad7d40634737075dc49a9f60bc7a1748.tar.bz2
am 1193ae4e: Backport l53e91db7 from master.
Merge commit '1193ae4e824c66b75083c444ce0f250594e138ee' into eclair-plus-aosp * commit '1193ae4e824c66b75083c444ce0f250594e138ee': Backport l53e91db7 from master.
-rw-r--r--services/java/com/android/server/ConnectivityService.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 78215b0..5c0f352 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -111,6 +111,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
public int mType;
public int mRadio;
public int mPriority;
+ public NetworkInfo.State mLastState;
public NetworkAttributes(String init) {
String fragments[] = init.split(",");
mName = fragments[0].toLowerCase();
@@ -131,6 +132,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
mType = ConnectivityManager.TYPE_MOBILE_HIPRI;
}
mPriority = Integer.parseInt(fragments[2]);
+ mLastState = NetworkInfo.State.UNKNOWN;
}
public boolean isDefault() {
return (mType == mRadio);
@@ -1214,9 +1216,22 @@ public class ConnectivityService extends IConnectivityManager.Stub {
switch (msg.what) {
case NetworkStateTracker.EVENT_STATE_CHANGED:
info = (NetworkInfo) msg.obj;
+ int type = info.getType();
+ NetworkInfo.State state = info.getState();
+ if (mNetAttributes[type].mLastState == state) {
+ if (DBG) {
+ // TODO - remove this after we validate the dropping doesn't break anything
+ Log.d(TAG, "Dropping ConnectivityChange for " +
+ info.getTypeName() + ": " +
+ state + "/" + info.getDetailedState());
+ }
+ return;
+ }
+ mNetAttributes[type].mLastState = state;
+
if (DBG) Log.d(TAG, "ConnectivityChange for " +
info.getTypeName() + ": " +
- info.getState() + "/" + info.getDetailedState());
+ state + "/" + info.getDetailedState());
// Connectivity state changed:
// [31-13] Reserved for future use
@@ -1234,10 +1249,9 @@ public class ConnectivityService extends IConnectivityManager.Stub {
if (info.getDetailedState() ==
NetworkInfo.DetailedState.FAILED) {
handleConnectionFailure(info);
- } else if (info.getState() ==
- NetworkInfo.State.DISCONNECTED) {
+ } else if (state == NetworkInfo.State.DISCONNECTED) {
handleDisconnect(info);
- } else if (info.getState() == NetworkInfo.State.SUSPENDED) {
+ } else if (state == NetworkInfo.State.SUSPENDED) {
// TODO: need to think this over.
// the logic here is, handle SUSPENDED the same as
// DISCONNECTED. The only difference being we are
@@ -1246,7 +1260,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// opportunity to handle DISCONNECTED and SUSPENDED
// differently, or not.
handleDisconnect(info);
- } else if (info.getState() == NetworkInfo.State.CONNECTED) {
+ } else if (state == NetworkInfo.State.CONNECTED) {
handleConnect(info);
}
break;