summaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2018-11-08 09:08:23 -0800
committerRoshan Pius <rpius@google.com>2018-11-16 16:30:41 -0800
commit26672dba37034ce8ffdaa1350e9fb1529e2f0b70 (patch)
treee7fc53e586bffcc0966119de22438ee4961fdc2a /service
parentca7e72ad7fb48243cf0f00cec05c4d03d984d7ed (diff)
downloadandroid_frameworks_opt_net_wifi-26672dba37034ce8ffdaa1350e9fb1529e2f0b70.tar.gz
android_frameworks_opt_net_wifi-26672dba37034ce8ffdaa1350e9fb1529e2f0b70.tar.bz2
android_frameworks_opt_net_wifi-26672dba37034ce8ffdaa1350e9fb1529e2f0b70.zip
ClientModeImpl: Attach WifiNetworkAgentSpecifier
This is needed for matching the specific network request with the network agent created for servicing it. Note: WifiNetworkAgentSpecifier will continue to match any generic requests. So, we can always send the specifier. The requestorUid will be -1 if there is no specific request active. Bug: 113878056 Test: ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh Test: act.py -c wifi_manager.config -tb dut-name -tc WifiManagerTest Change-Id: I0c8b4b3a552b7765069520f1fc57fa70c9ade8b7
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java14
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkFactory.java19
2 files changed, 33 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index a122d5db0..2c103d56f 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -59,6 +59,7 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.net.wifi.WifiNetworkAgentSpecifier;
import android.net.wifi.WifiSsid;
import android.net.wifi.hotspot2.IProvisioningCallback;
import android.net.wifi.hotspot2.OsuProvider;
@@ -4331,6 +4332,15 @@ public class ClientModeImpl extends StateMachine {
}
}
+ private WifiNetworkAgentSpecifier getNetworkAgentSpecifier() {
+ WifiConfiguration currentWifiConfiguration = getCurrentWifiConfiguration();
+ if (currentWifiConfiguration == null) return null;
+ currentWifiConfiguration.BSSID = getCurrentBSSID();
+ WifiNetworkAgentSpecifier wns = new WifiNetworkAgentSpecifier(currentWifiConfiguration,
+ mNetworkFactory.getActiveSpecificNetworkRequestUid(currentWifiConfiguration));
+ return wns;
+ }
+
/**
* Method to update network capabilities from the current WifiConfiguration.
*/
@@ -4368,6 +4378,8 @@ public class ClientModeImpl extends StateMachine {
} else {
result.setSSID(null);
}
+ // Fill up the network specifier for this connection.
+ result.setNetworkSpecifier(getNetworkAgentSpecifier());
mNetworkAgent.sendNetworkCapabilities(result);
}
@@ -4596,6 +4608,8 @@ public class ClientModeImpl extends StateMachine {
} else {
nc = mNetworkCapabilitiesFilter;
}
+ // Fill up the network specifier for this connection.
+ nc.setNetworkSpecifier(getNetworkAgentSpecifier());
mNetworkAgent = new WifiNetworkAgent(getHandler().getLooper(), mContext,
"WifiNetworkAgent", mNetworkInfo, nc, mLinkProperties, 60, mNetworkMisc);
diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java
index 01453fa33..1c1d5e57c 100644
--- a/service/java/com/android/server/wifi/WifiNetworkFactory.java
+++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java
@@ -40,6 +40,7 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.Messenger;
+import android.os.Process;
import android.os.RemoteException;
import android.os.WorkSource;
import android.text.TextUtils;
@@ -429,6 +430,24 @@ public class WifiNetworkFactory extends NetworkFactory {
return mGenericConnectionReqCount > 0 || mActiveSpecificNetworkRequest != null;
}
+ /**
+ * Return the uid of the specific network request being processed if connected to the requested
+ * network.
+ *
+ * @param connectedNetwork WifiConfiguration corresponding to the connected network.
+ * @return uid of the specific request (if any), else -1.
+ */
+ public int getActiveSpecificNetworkRequestUid(@NonNull WifiConfiguration connectedNetwork) {
+ if (mUserSelectedNetwork == null || connectedNetwork == null) return Process.INVALID_UID;
+ if (!isUserSelectedNetwork(connectedNetwork)) {
+ Log.w(TAG, "Connected to unknown network " + connectedNetwork + ". Ignoring...");
+ return Process.INVALID_UID;
+ }
+ return mActiveSpecificNetworkRequestSpecifier != null
+ ? mActiveSpecificNetworkRequestSpecifier.requestorUid
+ : Process.INVALID_UID;
+ }
+
private void handleConnectToNetworkUserSelection(WifiConfiguration network) {
Log.d(TAG, "User initiated connect to network: " + network.SSID);