Skip to content

Commit 6aecb98

Browse files
author
Robert Greenwalt
committed
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
1 parent 090df1d commit 6aecb98

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

core/java/android/net/MobileDataStateTracker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ private void setDetailedState(NetworkInfo.DetailedState state, String reason,
386386
&& lastReason != null)
387387
reason = lastReason;
388388
mNetworkInfo.setDetailedState(state, reason, extraInfo);
389-
Message msg = mTarget.obtainMessage(EVENT_STATE_CHANGED, mNetworkInfo);
389+
Message msg = mTarget.obtainMessage(EVENT_STATE_CHANGED, new NetworkInfo(mNetworkInfo));
390390
msg.sendToTarget();
391391
}
392392
}

core/java/android/net/NetworkInfo.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,23 @@ public NetworkInfo(int type, int subtype, String typeName, String subtypeName) {
138138
mIsRoaming = false;
139139
}
140140

141+
/** {@hide} */
142+
public NetworkInfo(NetworkInfo source) {
143+
if (source != null) {
144+
mNetworkType = source.mNetworkType;
145+
mSubtype = source.mSubtype;
146+
mTypeName = source.mTypeName;
147+
mSubtypeName = source.mSubtypeName;
148+
mState = source.mState;
149+
mDetailedState = source.mDetailedState;
150+
mReason = source.mReason;
151+
mExtraInfo = source.mExtraInfo;
152+
mIsFailover = source.mIsFailover;
153+
mIsRoaming = source.mIsRoaming;
154+
mIsAvailable = source.mIsAvailable;
155+
}
156+
}
157+
141158
/**
142159
* Reports the type of network (currently mobile or Wi-Fi) to which the
143160
* info in this object pertains.

wifi/java/android/net/wifi/WifiStateTracker.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public void privateDnsRouteSet(boolean enabled) {
160160
* Fetch NetworkInfo for the network
161161
*/
162162
public NetworkInfo getNetworkInfo() {
163-
return mNetworkInfo;
163+
return new NetworkInfo(mNetworkInfo);
164164
}
165165

166166
/**
@@ -226,7 +226,8 @@ public void onReceive(Context context, Intent intent) {
226226
} else {
227227
mLastState = state;
228228
}
229-
Message msg = mCsHandler.obtainMessage(EVENT_STATE_CHANGED, mNetworkInfo);
229+
Message msg = mCsHandler.obtainMessage(EVENT_STATE_CHANGED,
230+
new NetworkInfo(mNetworkInfo));
230231
msg.sendToTarget();
231232
} else if (intent.getAction().equals(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION)) {
232233
mLinkProperties = (LinkProperties) intent.getParcelableExtra(

0 commit comments

Comments
 (0)