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);
     }