Handle legacy synchronous inspectors
getNetworkInfo, getActiveNetworkInfo, etc Conflicts: services/core/java/com/android/server/ConnectivityService.java Change-Id: I4611d6481b1a76fe4a4ce22232a2a329de2a6e0c
This commit is contained in:
committed by
Lorenzo Colitti
parent
3927e336e7
commit
be46b75c3b
@@ -25,6 +25,15 @@ import static android.net.ConnectivityManager.TYPE_BLUETOOTH;
|
|||||||
import static android.net.ConnectivityManager.TYPE_DUMMY;
|
import static android.net.ConnectivityManager.TYPE_DUMMY;
|
||||||
import static android.net.ConnectivityManager.TYPE_ETHERNET;
|
import static android.net.ConnectivityManager.TYPE_ETHERNET;
|
||||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_MMS;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_SUPL;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_FOTA;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_IMS;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_CBS;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_IA;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
|
||||||
|
import static android.net.ConnectivityManager.TYPE_NONE;
|
||||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||||
import static android.net.ConnectivityManager.TYPE_WIMAX;
|
import static android.net.ConnectivityManager.TYPE_WIMAX;
|
||||||
import static android.net.ConnectivityManager.TYPE_PROXY;
|
import static android.net.ConnectivityManager.TYPE_PROXY;
|
||||||
@@ -248,6 +257,17 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
*/
|
*/
|
||||||
private NetworkStateTracker mNetTrackers[];
|
private NetworkStateTracker mNetTrackers[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds references to all NetworkAgentInfos claiming to support the legacy
|
||||||
|
* NetworkType. We used to have a static set of of NetworkStateTrackers
|
||||||
|
* for each network type. This is the new model.
|
||||||
|
* Supports synchronous inspection of state.
|
||||||
|
* These are built out at startup such that an unsupported network
|
||||||
|
* doesn't get an ArrayList instance, making this a tristate:
|
||||||
|
* unsupported, supported but not active and active.
|
||||||
|
*/
|
||||||
|
private ArrayList<NetworkAgentInfo> mNetworkAgentInfoForType[];
|
||||||
|
|
||||||
/* Handles captive portal check on a network */
|
/* Handles captive portal check on a network */
|
||||||
private CaptivePortalTracker mCaptivePortalTracker;
|
private CaptivePortalTracker mCaptivePortalTracker;
|
||||||
|
|
||||||
@@ -531,6 +551,9 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
mNetTransitionWakeLockTimeout = mContext.getResources().getInteger(
|
mNetTransitionWakeLockTimeout = mContext.getResources().getInteger(
|
||||||
com.android.internal.R.integer.config_networkTransitionTimeout);
|
com.android.internal.R.integer.config_networkTransitionTimeout);
|
||||||
|
|
||||||
|
mNetworkAgentInfoForType = (ArrayList<NetworkAgentInfo>[])
|
||||||
|
new ArrayList[ConnectivityManager.MAX_NETWORK_TYPE + 1];
|
||||||
|
|
||||||
mNetTrackers = new NetworkStateTracker[
|
mNetTrackers = new NetworkStateTracker[
|
||||||
ConnectivityManager.MAX_NETWORK_TYPE+1];
|
ConnectivityManager.MAX_NETWORK_TYPE+1];
|
||||||
mCurrentLinkProperties = new LinkProperties[ConnectivityManager.MAX_NETWORK_TYPE+1];
|
mCurrentLinkProperties = new LinkProperties[ConnectivityManager.MAX_NETWORK_TYPE+1];
|
||||||
@@ -585,6 +608,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
"radio " + n.radio + " in network type " + n.type);
|
"radio " + n.radio + " in network type " + n.type);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
mNetworkAgentInfoForType[n.type] = new ArrayList<NetworkAgentInfo>();
|
||||||
|
|
||||||
mNetConfigs[n.type] = n;
|
mNetConfigs[n.type] = n;
|
||||||
mNetworksDefined++;
|
mNetworksDefined++;
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
@@ -871,11 +896,12 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
* Check if UID should be blocked from using the network represented by the
|
* Check if UID should be blocked from using the network represented by the
|
||||||
* given {@link NetworkStateTracker}.
|
* given {@link NetworkStateTracker}.
|
||||||
*/
|
*/
|
||||||
private boolean isNetworkBlocked(NetworkStateTracker tracker, int uid) {
|
private boolean isNetworkBlocked(int networkType, int uid) {
|
||||||
final String iface = tracker.getLinkProperties().getInterfaceName();
|
|
||||||
|
|
||||||
final boolean networkCostly;
|
final boolean networkCostly;
|
||||||
final int uidRules;
|
final int uidRules;
|
||||||
|
|
||||||
|
LinkProperties lp = getLinkPropertiesForType(networkType);
|
||||||
|
final String iface = (lp == null ? "" : lp.getInterfaceName());
|
||||||
synchronized (mRulesLock) {
|
synchronized (mRulesLock) {
|
||||||
networkCostly = mMeteredIfaces.contains(iface);
|
networkCostly = mMeteredIfaces.contains(iface);
|
||||||
uidRules = mUidRules.get(uid, RULE_ALLOW_ALL);
|
uidRules = mUidRules.get(uid, RULE_ALLOW_ALL);
|
||||||
@@ -892,11 +918,11 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
/**
|
/**
|
||||||
* Return a filtered {@link NetworkInfo}, potentially marked
|
* Return a filtered {@link NetworkInfo}, potentially marked
|
||||||
* {@link DetailedState#BLOCKED} based on
|
* {@link DetailedState#BLOCKED} based on
|
||||||
* {@link #isNetworkBlocked(NetworkStateTracker, int)}.
|
* {@link #isNetworkBlocked}.
|
||||||
*/
|
*/
|
||||||
private NetworkInfo getFilteredNetworkInfo(NetworkStateTracker tracker, int uid) {
|
private NetworkInfo getFilteredNetworkInfo(int networkType, int uid) {
|
||||||
NetworkInfo info = tracker.getNetworkInfo();
|
NetworkInfo info = getNetworkInfoForType(networkType);
|
||||||
if (isNetworkBlocked(tracker, uid)) {
|
if (isNetworkBlocked(networkType, uid)) {
|
||||||
// network is blocked; clone and override state
|
// network is blocked; clone and override state
|
||||||
info = new NetworkInfo(info);
|
info = new NetworkInfo(info);
|
||||||
info.setDetailedState(DetailedState.BLOCKED, null, null);
|
info.setDetailedState(DetailedState.BLOCKED, null, null);
|
||||||
@@ -921,6 +947,15 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
return getNetworkInfo(mActiveDefaultNetwork, uid);
|
return getNetworkInfo(mActiveDefaultNetwork, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// only called when the default request is satisfied
|
||||||
|
private void updateActiveDefaultNetwork(NetworkAgentInfo nai) {
|
||||||
|
if (nai != null) {
|
||||||
|
mActiveDefaultNetwork = nai.networkInfo.getType();
|
||||||
|
} else {
|
||||||
|
mActiveDefaultNetwork = TYPE_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find the first Provisioning network.
|
* Find the first Provisioning network.
|
||||||
*
|
*
|
||||||
@@ -963,10 +998,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
public NetworkInfo getActiveNetworkInfoUnfiltered() {
|
public NetworkInfo getActiveNetworkInfoUnfiltered() {
|
||||||
enforceAccessPermission();
|
enforceAccessPermission();
|
||||||
if (isNetworkTypeValid(mActiveDefaultNetwork)) {
|
if (isNetworkTypeValid(mActiveDefaultNetwork)) {
|
||||||
final NetworkStateTracker tracker = mNetTrackers[mActiveDefaultNetwork];
|
return getNetworkInfoForType(mActiveDefaultNetwork);
|
||||||
if (tracker != null) {
|
|
||||||
return tracker.getNetworkInfo();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -987,9 +1019,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
private NetworkInfo getNetworkInfo(int networkType, int uid) {
|
private NetworkInfo getNetworkInfo(int networkType, int uid) {
|
||||||
NetworkInfo info = null;
|
NetworkInfo info = null;
|
||||||
if (isNetworkTypeValid(networkType)) {
|
if (isNetworkTypeValid(networkType)) {
|
||||||
final NetworkStateTracker tracker = mNetTrackers[networkType];
|
if (getNetworkInfoForType(networkType) != null) {
|
||||||
if (tracker != null) {
|
info = getFilteredNetworkInfo(networkType, uid);
|
||||||
info = getFilteredNetworkInfo(tracker, uid);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return info;
|
return info;
|
||||||
@@ -1001,9 +1032,10 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
final int uid = Binder.getCallingUid();
|
final int uid = Binder.getCallingUid();
|
||||||
final ArrayList<NetworkInfo> result = Lists.newArrayList();
|
final ArrayList<NetworkInfo> result = Lists.newArrayList();
|
||||||
synchronized (mRulesLock) {
|
synchronized (mRulesLock) {
|
||||||
for (NetworkStateTracker tracker : mNetTrackers) {
|
for (int networkType = 0; networkType <= ConnectivityManager.MAX_NETWORK_TYPE;
|
||||||
if (tracker != null) {
|
networkType++) {
|
||||||
result.add(getFilteredNetworkInfo(tracker, uid));
|
if (getNetworkInfoForType(networkType) != null) {
|
||||||
|
result.add(getFilteredNetworkInfo(networkType, uid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1013,7 +1045,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
@Override
|
@Override
|
||||||
public boolean isNetworkSupported(int networkType) {
|
public boolean isNetworkSupported(int networkType) {
|
||||||
enforceAccessPermission();
|
enforceAccessPermission();
|
||||||
return (isNetworkTypeValid(networkType) && (mNetTrackers[networkType] != null));
|
return (isNetworkTypeValid(networkType) && (getNetworkInfoForType(networkType) != null));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1033,25 +1065,25 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
public LinkProperties getLinkProperties(int networkType) {
|
public LinkProperties getLinkProperties(int networkType) {
|
||||||
enforceAccessPermission();
|
enforceAccessPermission();
|
||||||
if (isNetworkTypeValid(networkType)) {
|
if (isNetworkTypeValid(networkType)) {
|
||||||
final NetworkStateTracker tracker = mNetTrackers[networkType];
|
return getLinkPropertiesForType(networkType);
|
||||||
if (tracker != null) {
|
|
||||||
return tracker.getLinkProperties();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO - this should be ALL networks
|
||||||
@Override
|
@Override
|
||||||
public NetworkState[] getAllNetworkState() {
|
public NetworkState[] getAllNetworkState() {
|
||||||
enforceAccessPermission();
|
enforceAccessPermission();
|
||||||
final int uid = Binder.getCallingUid();
|
final int uid = Binder.getCallingUid();
|
||||||
final ArrayList<NetworkState> result = Lists.newArrayList();
|
final ArrayList<NetworkState> result = Lists.newArrayList();
|
||||||
synchronized (mRulesLock) {
|
synchronized (mRulesLock) {
|
||||||
for (NetworkStateTracker tracker : mNetTrackers) {
|
for (int networkType = 0; networkType <= ConnectivityManager.MAX_NETWORK_TYPE;
|
||||||
if (tracker != null) {
|
networkType++) {
|
||||||
final NetworkInfo info = getFilteredNetworkInfo(tracker, uid);
|
if (getNetworkInfoForType(networkType) != null) {
|
||||||
result.add(new NetworkState(
|
final NetworkInfo info = getFilteredNetworkInfo(networkType, uid);
|
||||||
info, tracker.getLinkProperties(), tracker.getNetworkCapabilities()));
|
final LinkProperties lp = getLinkPropertiesForType(networkType);
|
||||||
|
final NetworkCapabilities netcap = getNetworkCapabilitiesForType(networkType);
|
||||||
|
result.add(new NetworkState(info, lp, netcap));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1060,10 +1092,11 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
|
|
||||||
private NetworkState getNetworkStateUnchecked(int networkType) {
|
private NetworkState getNetworkStateUnchecked(int networkType) {
|
||||||
if (isNetworkTypeValid(networkType)) {
|
if (isNetworkTypeValid(networkType)) {
|
||||||
final NetworkStateTracker tracker = mNetTrackers[networkType];
|
NetworkInfo info = getNetworkInfoForType(networkType);
|
||||||
if (tracker != null) {
|
if (info != null) {
|
||||||
return new NetworkState(tracker.getNetworkInfo(), tracker.getLinkProperties(),
|
return new NetworkState(info,
|
||||||
tracker.getNetworkCapabilities());
|
getLinkPropertiesForType(networkType),
|
||||||
|
getNetworkCapabilitiesForType(networkType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -2308,7 +2341,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
public void captivePortalCheckCompleted(NetworkInfo info, boolean isCaptivePortal) {
|
public void captivePortalCheckCompleted(NetworkInfo info, boolean isCaptivePortal) {
|
||||||
enforceConnectivityInternalPermission();
|
enforceConnectivityInternalPermission();
|
||||||
if (DBG) log("captivePortalCheckCompleted: ni=" + info + " captive=" + isCaptivePortal);
|
if (DBG) log("captivePortalCheckCompleted: ni=" + info + " captive=" + isCaptivePortal);
|
||||||
mNetTrackers[info.getType()].captivePortalCheckCompleted(isCaptivePortal);
|
// mNetTrackers[info.getType()].captivePortalCheckCompleted(isCaptivePortal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3035,7 +3068,10 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
sendMessage(AsyncChannel.CMD_CHANNEL_FULL_CONNECTION);
|
sendMessage(AsyncChannel.CMD_CHANNEL_FULL_CONNECTION);
|
||||||
} else {
|
} else {
|
||||||
loge("Error connecting NetworkAgent");
|
loge("Error connecting NetworkAgent");
|
||||||
mNetworkAgentInfos.remove(msg.replyTo);
|
NetworkAgentInfo nai = mNetworkAgentInfos.remove(msg.replyTo);
|
||||||
|
try {
|
||||||
|
mNetworkAgentInfoForType[nai.networkInfo.getType()].remove(nai);
|
||||||
|
} catch (NullPointerException e) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3055,6 +3091,10 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
nai.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_DISCONNECTED);
|
nai.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_DISCONNECTED);
|
||||||
mNetworkAgentInfos.remove(msg.replyTo);
|
mNetworkAgentInfos.remove(msg.replyTo);
|
||||||
updateClat(null, nai.linkProperties, nai);
|
updateClat(null, nai.linkProperties, nai);
|
||||||
|
try {
|
||||||
|
mNetworkAgentInfoForType[nai.networkInfo.getType()].remove(nai);
|
||||||
|
} catch (NullPointerException e) {}
|
||||||
|
|
||||||
// Since we've lost the network, go through all the requests that
|
// Since we've lost the network, go through all the requests that
|
||||||
// it was satisfying and see if any other factory can satisfy them.
|
// it was satisfying and see if any other factory can satisfy them.
|
||||||
final ArrayList<NetworkAgentInfo> toActivate = new ArrayList<NetworkAgentInfo>();
|
final ArrayList<NetworkAgentInfo> toActivate = new ArrayList<NetworkAgentInfo>();
|
||||||
@@ -3082,6 +3122,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
}
|
}
|
||||||
if (nai.networkRequests.get(mDefaultRequest.requestId) != null) {
|
if (nai.networkRequests.get(mDefaultRequest.requestId) != null) {
|
||||||
removeDataActivityTracking(nai);
|
removeDataActivityTracking(nai);
|
||||||
|
mActiveDefaultNetwork = ConnectivityManager.TYPE_NONE;
|
||||||
}
|
}
|
||||||
for (NetworkAgentInfo networkToActivate : toActivate) {
|
for (NetworkAgentInfo networkToActivate : toActivate) {
|
||||||
networkToActivate.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_CONNECTED);
|
networkToActivate.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_CONNECTED);
|
||||||
@@ -3396,7 +3437,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
// if (DBG) log("no change in condition - aborting");
|
// if (DBG) log("no change in condition - aborting");
|
||||||
// return;
|
// return;
|
||||||
//}
|
//}
|
||||||
NetworkInfo networkInfo = mNetTrackers[mActiveDefaultNetwork].getNetworkInfo();
|
NetworkInfo networkInfo = getNetworkInfoForType(mActiveDefaultNetwork);
|
||||||
if (networkInfo.isConnected() == false) {
|
if (networkInfo.isConnected() == false) {
|
||||||
if (DBG) log("handleInetConditionHoldEnd: default network not connected - ignoring");
|
if (DBG) log("handleInetConditionHoldEnd: default network not connected - ignoring");
|
||||||
return;
|
return;
|
||||||
@@ -4652,11 +4693,11 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
// otherwise launch browser with the intent directly.
|
// otherwise launch browser with the intent directly.
|
||||||
if (mIsProvisioningNetwork.get()) {
|
if (mIsProvisioningNetwork.get()) {
|
||||||
if (DBG) log("handleMobileProvisioningAction: on prov network enable then launch");
|
if (DBG) log("handleMobileProvisioningAction: on prov network enable then launch");
|
||||||
mIsStartingProvisioning.set(true);
|
// mIsStartingProvisioning.set(true);
|
||||||
MobileDataStateTracker mdst = (MobileDataStateTracker)
|
// MobileDataStateTracker mdst = (MobileDataStateTracker)
|
||||||
mNetTrackers[ConnectivityManager.TYPE_MOBILE];
|
// mNetTrackers[ConnectivityManager.TYPE_MOBILE];
|
||||||
mdst.setEnableFailFastMobileData(DctConstants.ENABLED);
|
// mdst.setEnableFailFastMobileData(DctConstants.ENABLED);
|
||||||
mdst.enableMobileProvisioning(url);
|
// mdst.enableMobileProvisioning(url);
|
||||||
} else {
|
} else {
|
||||||
if (DBG) log("handleMobileProvisioningAction: not prov network");
|
if (DBG) log("handleMobileProvisioningAction: not prov network");
|
||||||
// Check for apps that can handle provisioning first
|
// Check for apps that can handle provisioning first
|
||||||
@@ -4952,7 +4993,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
@Override
|
@Override
|
||||||
public LinkQualityInfo getLinkQualityInfo(int networkType) {
|
public LinkQualityInfo getLinkQualityInfo(int networkType) {
|
||||||
enforceAccessPermission();
|
enforceAccessPermission();
|
||||||
if (isNetworkTypeValid(networkType)) {
|
if (isNetworkTypeValid(networkType) && mNetTrackers[networkType] != null) {
|
||||||
return mNetTrackers[networkType].getLinkQualityInfo();
|
return mNetTrackers[networkType].getLinkQualityInfo();
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
@@ -4962,7 +5003,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
@Override
|
@Override
|
||||||
public LinkQualityInfo getActiveLinkQualityInfo() {
|
public LinkQualityInfo getActiveLinkQualityInfo() {
|
||||||
enforceAccessPermission();
|
enforceAccessPermission();
|
||||||
if (isNetworkTypeValid(mActiveDefaultNetwork)) {
|
if (isNetworkTypeValid(mActiveDefaultNetwork) &&
|
||||||
|
mNetTrackers[mActiveDefaultNetwork] != null) {
|
||||||
return mNetTrackers[mActiveDefaultNetwork].getLinkQualityInfo();
|
return mNetTrackers[mActiveDefaultNetwork].getLinkQualityInfo();
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
@@ -5084,6 +5126,11 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
private void handleRegisterNetworkAgent(NetworkAgentInfo na) {
|
private void handleRegisterNetworkAgent(NetworkAgentInfo na) {
|
||||||
if (VDBG) log("Got NetworkAgent Messenger");
|
if (VDBG) log("Got NetworkAgent Messenger");
|
||||||
mNetworkAgentInfos.put(na.messenger, na);
|
mNetworkAgentInfos.put(na.messenger, na);
|
||||||
|
try {
|
||||||
|
mNetworkAgentInfoForType[na.networkInfo.getType()].add(na);
|
||||||
|
} catch (NullPointerException e) {
|
||||||
|
loge("registered NetworkAgent for unsupported type: " + na);
|
||||||
|
}
|
||||||
na.asyncChannel.connect(mContext, mTrackerHandler, na.messenger);
|
na.asyncChannel.connect(mContext, mTrackerHandler, na.messenger);
|
||||||
NetworkInfo networkInfo = na.networkInfo;
|
NetworkInfo networkInfo = na.networkInfo;
|
||||||
na.networkInfo = null;
|
na.networkInfo = null;
|
||||||
@@ -5280,6 +5327,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
sendUpdatedScoreToFactories(nr, newNetwork.currentScore);
|
sendUpdatedScoreToFactories(nr, newNetwork.currentScore);
|
||||||
if (mDefaultRequest.requestId == nr.requestId) {
|
if (mDefaultRequest.requestId == nr.requestId) {
|
||||||
isNewDefault = true;
|
isNewDefault = true;
|
||||||
|
updateActiveDefaultNetwork(newNetwork);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5344,6 +5392,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
(oldInfo == null ? "null" : oldInfo.getState()) +
|
(oldInfo == null ? "null" : oldInfo.getState()) +
|
||||||
" to " + state);
|
" to " + state);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == NetworkInfo.State.CONNECTED) {
|
if (state == NetworkInfo.State.CONNECTED) {
|
||||||
// TODO - check if we want it (optimization)
|
// TODO - check if we want it (optimization)
|
||||||
try {
|
try {
|
||||||
@@ -5415,4 +5464,34 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private LinkProperties getLinkPropertiesForType(int networkType) {
|
||||||
|
ArrayList<NetworkAgentInfo> list = mNetworkAgentInfoForType[networkType];
|
||||||
|
if (list == null) return null;
|
||||||
|
try {
|
||||||
|
return new LinkProperties(list.get(0).linkProperties);
|
||||||
|
} catch (IndexOutOfBoundsException e) {
|
||||||
|
return new LinkProperties();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkInfo getNetworkInfoForType(int networkType) {
|
||||||
|
ArrayList<NetworkAgentInfo> list = mNetworkAgentInfoForType[networkType];
|
||||||
|
if (list == null) return null;
|
||||||
|
try {
|
||||||
|
return new NetworkInfo(list.get(0).networkInfo);
|
||||||
|
} catch (IndexOutOfBoundsException e) {
|
||||||
|
return new NetworkInfo(networkType, 0, "Unknown", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkCapabilities getNetworkCapabilitiesForType(int networkType) {
|
||||||
|
ArrayList<NetworkAgentInfo> list = mNetworkAgentInfoForType[networkType];
|
||||||
|
if (list == null) return null;
|
||||||
|
try {
|
||||||
|
return new NetworkCapabilities(list.get(0).networkCapabilities);
|
||||||
|
} catch (IndexOutOfBoundsException e) {
|
||||||
|
return new NetworkCapabilities();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user