diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2011-09-09 12:38:12 -0700 |
---|---|---|
committer | Robert Greenwalt <rgreenwalt@google.com> | 2011-09-09 15:10:42 -0700 |
commit | 6aecb98a627daa3f66c060ca5177a075e4e9bcca (patch) | |
tree | 883af3c74e83b52acbbf4692007ec3ba83352e58 | |
parent | 090df1dc4188e5b9ef10a0aca5081a196085ff56 (diff) | |
download | frameworks_base-6aecb98a627daa3f66c060ca5177a075e4e9bcca.zip frameworks_base-6aecb98a627daa3f66c060ca5177a075e4e9bcca.tar.gz frameworks_base-6aecb98a627daa3f66c060ca5177a075e4e9bcca.tar.bz2 |
Make copies of NetworkInfo to give out.
Otherwise we'll change it out from under those we've given it too.
bug:5233462
Change-Id: Iffc886849edfa6ced3da1133f9d363e11b2733f8
-rw-r--r-- | core/java/android/net/MobileDataStateTracker.java | 2 | ||||
-rw-r--r-- | core/java/android/net/NetworkInfo.java | 17 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateTracker.java | 5 |
3 files changed, 21 insertions, 3 deletions
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java index f3c863f..76c97d7 100644 --- a/core/java/android/net/MobileDataStateTracker.java +++ b/core/java/android/net/MobileDataStateTracker.java @@ -386,7 +386,7 @@ public class MobileDataStateTracker implements NetworkStateTracker { && lastReason != null) reason = lastReason; mNetworkInfo.setDetailedState(state, reason, extraInfo); - Message msg = mTarget.obtainMessage(EVENT_STATE_CHANGED, mNetworkInfo); + Message msg = mTarget.obtainMessage(EVENT_STATE_CHANGED, new NetworkInfo(mNetworkInfo)); msg.sendToTarget(); } } diff --git a/core/java/android/net/NetworkInfo.java b/core/java/android/net/NetworkInfo.java index 5f5e11c..65a11cc 100644 --- a/core/java/android/net/NetworkInfo.java +++ b/core/java/android/net/NetworkInfo.java @@ -138,6 +138,23 @@ public class NetworkInfo implements Parcelable { mIsRoaming = false; } + /** {@hide} */ + public NetworkInfo(NetworkInfo source) { + if (source != null) { + mNetworkType = source.mNetworkType; + mSubtype = source.mSubtype; + mTypeName = source.mTypeName; + mSubtypeName = source.mSubtypeName; + mState = source.mState; + mDetailedState = source.mDetailedState; + mReason = source.mReason; + mExtraInfo = source.mExtraInfo; + mIsFailover = source.mIsFailover; + mIsRoaming = source.mIsRoaming; + mIsAvailable = source.mIsAvailable; + } + } + /** * Reports the type of network (currently mobile or Wi-Fi) to which the * info in this object pertains. diff --git a/wifi/java/android/net/wifi/WifiStateTracker.java b/wifi/java/android/net/wifi/WifiStateTracker.java index 338cb4d..33c02e1 100644 --- a/wifi/java/android/net/wifi/WifiStateTracker.java +++ b/wifi/java/android/net/wifi/WifiStateTracker.java @@ -160,7 +160,7 @@ public class WifiStateTracker implements NetworkStateTracker { * Fetch NetworkInfo for the network */ public NetworkInfo getNetworkInfo() { - return mNetworkInfo; + return new NetworkInfo(mNetworkInfo); } /** @@ -226,7 +226,8 @@ public class WifiStateTracker implements NetworkStateTracker { } else { mLastState = state; } - Message msg = mCsHandler.obtainMessage(EVENT_STATE_CHANGED, mNetworkInfo); + Message msg = mCsHandler.obtainMessage(EVENT_STATE_CHANGED, + new NetworkInfo(mNetworkInfo)); msg.sendToTarget(); } else if (intent.getAction().equals(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION)) { mLinkProperties = (LinkProperties) intent.getParcelableExtra( |