diff options
author | Jeff Davidson <jpd@google.com> | 2015-01-06 17:15:08 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-01-06 17:15:08 +0000 |
commit | 1456ea5d08ed5a4e697b58ededde4b5a90809d76 (patch) | |
tree | 99240fd78fd6386cc8a884c4c4ec08ee03751665 /service | |
parent | 104a9803187593ab25d3784b420077022686dbe4 (diff) | |
parent | ebe870ef4051da2fc307114ed3c14927f548d9d4 (diff) | |
download | android_frameworks_opt_net_wifi-1456ea5d08ed5a4e697b58ededde4b5a90809d76.tar.gz android_frameworks_opt_net_wifi-1456ea5d08ed5a4e697b58ededde4b5a90809d76.tar.bz2 android_frameworks_opt_net_wifi-1456ea5d08ed5a4e697b58ededde4b5a90809d76.zip |
Merge "Split untrusted NetworkFactory from regular one." into lmp-mr1-dev
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/WifiStateMachine.java | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index c22e9edb0..87e0c3af5 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -138,6 +138,7 @@ import java.util.regex.Pattern; public class WifiStateMachine extends StateMachine { private static final String NETWORKTYPE = "WIFI"; + private static final String NETWORKTYPE_UNTRUSTED = "WIFI_UT"; private static boolean DBG = false; private static boolean VDBG = false; private static boolean VVDBG = false; @@ -407,6 +408,7 @@ public class WifiStateMachine extends StateMachine { private int mConnectionRequests = 0; private WifiNetworkFactory mNetworkFactory; + private UntrustedWifiNetworkFactory mUntrustedNetworkFactory; private WifiNetworkAgent mNetworkAgent; // Keep track of various statistics, for retrieval by System Apps, i.e. under @SystemApi @@ -2436,6 +2438,7 @@ public class WifiStateMachine extends StateMachine { pw.println("mLastSetCountryCode " + mLastSetCountryCode); pw.println("mPersistedCountryCode " + mPersistedCountryCode); mNetworkFactory.dump(fd, pw, args); + mUntrustedNetworkFactory.dump(fd, pw, args); pw.println(); mWifiConfigStore.dump(fd, pw, args); } @@ -4595,9 +4598,6 @@ public class WifiStateMachine extends StateMachine { } private class WifiNetworkFactory extends NetworkFactory { - /** Number of outstanding NetworkRequests for untrusted networks. */ - private int mUntrustedReqCount = 0; - public WifiNetworkFactory(Looper l, Context c, String TAG, NetworkCapabilities f) { super(l, c, TAG, f); } @@ -4605,6 +4605,28 @@ public class WifiStateMachine extends StateMachine { @Override protected void needNetworkFor(NetworkRequest networkRequest, int score) { ++mConnectionRequests; + } + + @Override + protected void releaseNetworkFor(NetworkRequest networkRequest) { + --mConnectionRequests; + } + + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + pw.println("mConnectionRequests " + mConnectionRequests); + } + + } + + private class UntrustedWifiNetworkFactory extends NetworkFactory { + private int mUntrustedReqCount; + + public UntrustedWifiNetworkFactory(Looper l, Context c, String tag, NetworkCapabilities f) { + super(l, c, tag, f); + } + + @Override + protected void needNetworkFor(NetworkRequest networkRequest, int score) { if (!networkRequest.networkCapabilities.hasCapability( NetworkCapabilities.NET_CAPABILITY_TRUSTED)) { if (++mUntrustedReqCount == 1) { @@ -4615,7 +4637,6 @@ public class WifiStateMachine extends StateMachine { @Override protected void releaseNetworkFor(NetworkRequest networkRequest) { - --mConnectionRequests; if (!networkRequest.networkCapabilities.hasCapability( NetworkCapabilities.NET_CAPABILITY_TRUSTED)) { if (--mUntrustedReqCount == 0) { @@ -4625,10 +4646,8 @@ public class WifiStateMachine extends StateMachine { } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - pw.println("mConnectionRequests " + mConnectionRequests); pw.println("mUntrustedReqCount " + mUntrustedReqCount); } - } void maybeRegisterNetworkFactory() { @@ -4639,6 +4658,13 @@ public class WifiStateMachine extends StateMachine { NETWORKTYPE, mNetworkCapabilitiesFilter); mNetworkFactory.setScoreFilter(60); mNetworkFactory.register(); + + // We can't filter untrusted network in the capabilities filter because a trusted + // network would still satisfy a request that accepts untrusted ones. + mUntrustedNetworkFactory = new UntrustedWifiNetworkFactory(getHandler().getLooper(), + mContext, NETWORKTYPE_UNTRUSTED, mNetworkCapabilitiesFilter); + mUntrustedNetworkFactory.setScoreFilter(Integer.MAX_VALUE); + mUntrustedNetworkFactory.register(); } } } |