WifiNetworkFactory: Add user private WifiConfiguration
Private WifiConfiguration's generate a separate getKey() output.
This prevents the added WifiConfiguration from conflicting with any of
the user's saved networks (which are marked shared by default).
Bug: 152264590
Test: atest android.net.wifi.cts.WifiNetworkSpecifierTest --rerun-until-failure
Test: atest com.android.server.wifi.WifiNetworkFactoryTest
Change-Id: I36ab5ba7f71800c75d3c37ad48199e635ca74479
diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java
index 7352e8d..0af51f7 100644
--- a/service/java/com/android/server/wifi/WifiNetworkFactory.java
+++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java
@@ -790,6 +790,9 @@
// Set the WifiConfiguration.BSSID field to prevent roaming.
networkToConnect.BSSID = findBestBssidFromActiveMatchedScanResultsForNetwork(network);
networkToConnect.ephemeral = true;
+ // Mark it user private to avoid conflicting with any saved networks the user might have.
+ // TODO (b/142035508): Use a more generic mechanism to fix this.
+ networkToConnect.shared = false;
networkToConnect.fromWifiNetworkSpecifier = true;
// Store the user selected network.
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
index 7c7f369..afa9ffd 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
@@ -1178,6 +1178,7 @@
mSelectedNetwork = WifiConfigurationTestUtil.createPskNetwork();
mSelectedNetwork.SSID = "\"" + mTestScanDatas[0].getResults()[0].SSID + "\"";
+ mSelectedNetwork.shared = false;
// Have a saved network with the same configuration.
WifiConfiguration matchingSavedNetwork = new WifiConfiguration(mSelectedNetwork);
@@ -2874,6 +2875,7 @@
WifiConfigMatcher(WifiConfiguration config) {
assertNotNull(config);
mConfig = config;
+ mConfig.shared = false;
}
@Override
@@ -2913,6 +2915,7 @@
expectedWifiConfiguration.preSharedKey = TEST_WPA_PRESHARED_KEY;
expectedWifiConfiguration.BSSID = bssid;
expectedWifiConfiguration.ephemeral = true;
+ expectedWifiConfiguration.shared = false;
expectedWifiConfiguration.fromWifiNetworkSpecifier = true;
WifiConfigurationTestUtil.assertConfigurationEqual(expectedWifiConfiguration, network);
}