Allow scan hidden networks during scan-only mode

In current implementation, hidden networks were not scanned
during scan only mode.
This commit add an option to include them in the scan, with default
similar to existing behavior.

Bug: 143588535
Test: atest com.android.wifi.server
Change-Id: I9bb4ecbe232f222b331f3c031cd803109beb7860
diff --git a/service/java/com/android/server/wifi/ActiveModeWarden.java b/service/java/com/android/server/wifi/ActiveModeWarden.java
index 69f614e..19b64b0 100644
--- a/service/java/com/android/server/wifi/ActiveModeWarden.java
+++ b/service/java/com/android/server/wifi/ActiveModeWarden.java
@@ -71,6 +71,7 @@
     private final BatteryStatsManager mBatteryStatsManager;
     private final ScanRequestProxy mScanRequestProxy;
     private final WifiController mWifiController;
+    private final boolean mScanHiddenNetworksScanOnlyMode;
 
     private WifiManager.SoftApCallback mSoftApCallback;
     private WifiManager.SoftApCallback mLohsCallback;
@@ -114,6 +115,8 @@
         mBatteryStatsManager = batteryStatsManager;
         mScanRequestProxy = wifiInjector.getScanRequestProxy();
         mWifiController = new WifiController();
+        mScanHiddenNetworksScanOnlyMode = context.getResources().getBoolean(
+                R.bool.config_wifiScanHiddenNetworksScanOnlyMode);
 
         wifiNative.registerStatusListener(isReady -> {
             if (!isReady) {
@@ -468,7 +471,13 @@
     // Update the scan state based on all active mode managers.
     private void updateClientScanMode() {
         boolean scanEnabled = hasAnyClientModeManager();
-        boolean scanningForHiddenNetworksEnabled = hasAnyClientModeManagerInConnectivityRole();
+        boolean scanningForHiddenNetworksEnabled;
+
+        if (mScanHiddenNetworksScanOnlyMode) {
+            scanningForHiddenNetworksEnabled = hasAnyClientModeManager();
+        } else {
+            scanningForHiddenNetworksEnabled = hasAnyClientModeManagerInConnectivityRole();
+        }
         mScanRequestProxy.enableScanning(scanEnabled, scanningForHiddenNetworksEnabled);
     }
 
diff --git a/service/res/values/config.xml b/service/res/values/config.xml
index eb9928b..e35fcf0 100644
--- a/service/res/values/config.xml
+++ b/service/res/values/config.xml
@@ -220,4 +220,7 @@
         <item>80</item>
         <item>160</item>
     </integer-array>
+
+    <!-- Indicates that hidden networks are to be scanned during scan only mode -->
+    <bool translatable="false" name="config_wifiScanHiddenNetworksScanOnlyMode">false</bool>
 </resources>
diff --git a/service/res/values/overlayable.xml b/service/res/values/overlayable.xml
index 8fc1410..8e418e6 100644
--- a/service/res/values/overlayable.xml
+++ b/service/res/values/overlayable.xml
@@ -80,6 +80,7 @@
           <item type="array" name="config_wifiRssiLevelThresholds" />
           <item type="array" name="config_wifiDisconnectedScanIntervalScheduleSec" />
           <item type="array" name="config_wifiConnectedScanIntervalScheduleSec" />
+          <item type="bool" name="config_wifiScanHiddenNetworksScanOnlyMode" />
           <!-- Params from config.xml that can be overlayed -->
 
           <!-- Params from strings.xml that can be overlayed -->