Merge "[Passpoint] Remove R2 broadcasts" into rvc-dev
diff --git a/service/java/com/android/server/wifi/WifiApConfigStore.java b/service/java/com/android/server/wifi/WifiApConfigStore.java
index 4921f8c..961cbbd 100644
--- a/service/java/com/android/server/wifi/WifiApConfigStore.java
+++ b/service/java/com/android/server/wifi/WifiApConfigStore.java
@@ -183,6 +183,16 @@
                     SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);
             Log.e(TAG, "Device doesn't support WPA3-SAE, reset config to WPA2");
         }
+
+        if (mContext.getResources().getBoolean(R.bool.config_wifiSoftapResetChannelConfig)) {
+            // The device might not support customize channel or forced channel might not
+            // work in some countries. Need to reset it.
+            if (config.getChannel() != 0) {
+                // Add 2.4G by default
+                configBuilder.setBand(SoftApConfiguration.BAND_2GHZ | config.getBand());
+                Log.i(TAG, "Reset SAP channel configuration");
+            }
+        }
         mWifiMetrics.noteSoftApConfigReset(config, configBuilder.build());
         return configBuilder.build();
     }
diff --git a/service/res/values/config.xml b/service/res/values/config.xml
index ad454c1..7e35eed 100644
--- a/service/res/values/config.xml
+++ b/service/res/values/config.xml
@@ -137,6 +137,9 @@
     <!-- Integer indicating maximum hardware supported client number of soft ap -->
     <integer translatable="false" name="config_wifiHardwareSoftapMaxClientCount">16</integer>
 
+    <!-- boolean indicating whether reset channel configuration or not during cloud configuration restore -->
+    <bool translatable="false" name ="config_wifiSoftapResetChannelConfig">true</bool>
+
     <!-- List of allowed channels in 2GHz band for softap. If the device doesn't want to restrict
          channels this should be empty. Values is a comma separated channel string and/or channel
          range string like '1-6,11'. -->
diff --git a/service/res/values/overlayable.xml b/service/res/values/overlayable.xml
index cab5bbf..bf96fde 100644
--- a/service/res/values/overlayable.xml
+++ b/service/res/values/overlayable.xml
@@ -57,6 +57,7 @@
           <item type="integer" name="config_wifiFrameworkScoreLowRssiThreshold6ghz" />
           <item type="integer" name="config_wifiFrameworkScoreGoodRssiThreshold6ghz" />
           <item type="integer" name="config_wifiFrameworkSoftApShutDownTimeoutMilliseconds" />
+          <item type="bool" name="config_wifiSoftapResetChannelConfig" />
           <item type="string"  name="config_wifiSoftap2gChannelList" />
           <item type="string"  name="config_wifiSoftap5gChannelList" />
           <item type="string"  name="config_wifiSoftap6gChannelList" />
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java b/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java
index 50fd4d8..bc646c1 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java
@@ -661,16 +661,21 @@
     public void testResetToDefaultForUnsupportedConfig() throws Exception {
         mResources.setBoolean(R.bool.config_wifiSofapClientForceDisconnectSupported, false);
         mResources.setBoolean(R.bool.config_wifi_softap_sae_supported, false);
+        mResources.setBoolean(R.bool.config_wifiSoftapResetChannelConfig, true);
         SoftApConfiguration sae_config = new SoftApConfiguration.Builder()
                 .setPassphrase("secretsecret", SoftApConfiguration.SECURITY_TYPE_WPA3_SAE)
                 .setMaxNumberOfClients(10)
                 .setClientControlByUserEnabled(true)
+                .setChannel(149, SoftApConfiguration.BAND_5GHZ)
                 .build();
         WifiApConfigStore store = createWifiApConfigStore();
 
         SoftApConfiguration resetedConfig = store.resetToDefaultForUnsupportedConfig(sae_config);
         assertEquals(resetedConfig.getMaxNumberOfClients(), 0);
         assertFalse(resetedConfig.isClientControlByUserEnabled());
+        assertEquals(resetedConfig.getChannel(), 0);
+        assertEquals(resetedConfig.getBand(),
+                SoftApConfiguration.BAND_2GHZ | SoftApConfiguration.BAND_5GHZ);
         verify(mWifiMetrics).noteSoftApConfigReset(sae_config, resetedConfig);
     }