[Passpoint] Pass the auto-join flag with WifiConfig

Set autojoin when update passpoin network in WifiConfigManager

Bug: 157213975
Test: atest com.android.server.wifi
Test: manually test
Change-Id: If7807297073dcf0faaf31d62cc465c21cc7c5bd3
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
index 7ccca06..329c330 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
@@ -406,6 +406,7 @@
         if (!result.isSuccess()) {
             Log.e(TAG, "Failed to update config in WifiConfigManager");
         } else {
+            mWifiConfigManager.allowAutojoin(result.getNetworkId(), newConfig.allowAutojoin);
             if (mVerboseLoggingEnabled) {
                 Log.v(TAG, "Updated config in WifiConfigManager");
             }
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
index e1491aa..bf2e460 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointNetworkNominateHelper.java
@@ -208,7 +208,7 @@
             mLocalLog.log("Failed to add passpoint network");
             return existingNetwork;
         }
-
+        mWifiConfigManager.allowAutojoin(result.getNetworkId(), config.allowAutojoin);
         mWifiConfigManager.enableNetwork(result.getNetworkId(), false, Process.WIFI_UID, null);
         mWifiConfigManager.setNetworkCandidateScanResult(result.getNetworkId(),
                 candidate.mScanDetail.getScanResult(), 0);
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java b/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
index 9174534..8e7364d 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
@@ -514,6 +514,7 @@
             // Check server certificate using OCSP (Online Certificate Status Protocol).
             wifiConfig.enterpriseConfig.setOcsp(WifiEnterpriseConfig.OCSP_REQUIRE_CERT_STATUS);
         }
+        wifiConfig.allowAutojoin = isAutojoinEnabled();
         wifiConfig.shared = mIsShared;
         wifiConfig.fromWifiNetworkSuggestion = mIsFromSuggestion;
         wifiConfig.ephemeral = mIsFromSuggestion;
diff --git a/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java b/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
index 885cf87..94fe673 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
@@ -32,7 +32,6 @@
 import static android.net.wifi.WifiManager.EXTRA_URL;
 
 import static com.android.server.wifi.WifiConfigurationTestUtil.SECURITY_EAP;
-import static com.android.server.wifi.WifiConfigurationTestUtil.TEST_NETWORK_ID;
 
 import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
 import static org.junit.Assert.assertEquals;
@@ -174,6 +173,7 @@
     private static final int TEST_CREATOR_UID = 1234;
     private static final int TEST_CREATOR_UID1 = 1235;
     private static final int TEST_UID = 1500;
+    private static final int TEST_NETWORK_ID = 2;
 
     @Mock Context mContext;
     @Mock WifiNative mWifiNative;
@@ -921,6 +921,7 @@
                 origWifiConfig.getKey());
         verify(mWifiConfigManager).addOrUpdateNetwork(
                 argThat((c) -> c.FQDN.equals(TEST_FQDN)), eq(TEST_CREATOR_UID), eq(TEST_PACKAGE));
+        verify(mWifiConfigManager).allowAutojoin(TEST_NETWORK_ID, origWifiConfig.allowAutojoin);
         verify(mWifiConfigManager).saveToStore(true);
         verify(mWifiMetrics).incrementNumPasspointProviderInstallation();
         verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess();
@@ -2123,6 +2124,7 @@
                 origWifiConfig.getKey());
         verify(mWifiConfigManager).addOrUpdateNetwork(
                 argThat((c) -> c.FQDN.equals(TEST_FQDN)), eq(TEST_CREATOR_UID), eq(TEST_PACKAGE));
+        verify(mWifiConfigManager).allowAutojoin(TEST_NETWORK_ID, origWifiConfig.allowAutojoin);
         verify(mWifiConfigManager).saveToStore(true);
         verify(mWifiMetrics).incrementNumPasspointProviderInstallation();
         verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess();
diff --git a/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java b/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
index 19ced12..936a8c4 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
@@ -1250,6 +1250,17 @@
         verifyWifiConfigWithTestData(config, mProvider.getWifiConfig());
     }
 
+    @Test
+    public void getWifiConfigWithWithAutojoinDisable() throws Exception {
+        PasspointConfiguration config = generateTestPasspointConfiguration(
+                CredentialType.USER, false);
+        mProvider = createProvider(config);
+
+        assertTrue(mProvider.getWifiConfig().allowAutojoin);
+        mProvider.setAutojoinEnabled(false);
+        assertFalse(mProvider.getWifiConfig().allowAutojoin);
+    }
+
     /**
      * Verify that the mac randomization setting will be included in the generated
      * WifiConfiguration.