Merge "Wifi Settings: Add auto option for softap"
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 7ab9afb..cb6f9be 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -266,14 +266,16 @@
         <item>PWD</item>
     </string-array>
 
-   <!-- Wi-Fi AP band settings.  Either 2.4GHz or 5GHz. -->
+   <!-- Wi-Fi AP band settings.  Either Auto, 2.4GHz or 5GHz. -->
    <!-- Note that adding/removing/moving the items will need wifi settings code change. -->
     <string-array name="wifi_ap_band_config_full">
+        <item>@string/wifi_ap_choose_auto</item>
         <item>@string/wifi_ap_choose_2G</item>
         <item>@string/wifi_ap_choose_5G</item>
     </string-array>
 
     <string-array name="wifi_ap_band_config_2G_only">
+        <item>@string/wifi_ap_choose_auto</item>
         <item>@string/wifi_ap_choose_2G</item>
     </string-array>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index eea6ddd..0552c7a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1941,6 +1941,8 @@
     <string name="wifi_show_password">Show password</string>
     <!-- Label for the RadioGroup to choose wifi ap band -->
     <string name="wifi_ap_band_config">Select AP Band</string>
+    <!-- Label for the radio button to choose wifi ap channel automatically-->
+    <string name="wifi_ap_choose_auto">Auto</string>
     <!-- Label for the radio button to choose wifi ap 2.4 GHz band -->
     <string name="wifi_ap_choose_2G">2.4 GHz Band</string>
     <!-- Label for the radio button to choose wifi ap 5GHz band -->
diff --git a/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java
index 1e299ab..4c47a0d 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java
@@ -18,6 +18,7 @@
 
 import static android.net.wifi.WifiConfiguration.AP_BAND_2GHZ;
 import static android.net.wifi.WifiConfiguration.AP_BAND_5GHZ;
+import static android.net.wifi.WifiConfiguration.AP_BAND_ANY;
 
 import android.content.Context;
 import android.net.wifi.WifiConfiguration;
@@ -32,7 +33,8 @@
     private static final String TAG = "WifiTetherApBandPref";
     private static final String PREF_KEY = "wifi_tether_network_ap_band";
     private static final String[] BAND_VALUES =
-            {String.valueOf(AP_BAND_2GHZ), String.valueOf(AP_BAND_5GHZ)};
+            {String.valueOf(AP_BAND_ANY), String.valueOf(AP_BAND_2GHZ),
+                    String.valueOf(AP_BAND_5GHZ)};
 
     private final String[] mBandEntries;
     private int mBandIndex;
@@ -65,7 +67,7 @@
         } else {
             preference.setEntries(mBandEntries);
             preference.setEntryValues(BAND_VALUES);
-            preference.setSummary(mBandEntries[mBandIndex]);
+            preference.setSummary(mBandEntries[mBandIndex + 1]);
             preference.setValue(String.valueOf(mBandIndex));
         }
     }
@@ -78,7 +80,8 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         mBandIndex = Integer.parseInt((String) newValue);
-        preference.setSummary(mBandEntries[mBandIndex]);
+        Log.d(TAG, "Band preference changed, updating band index to " + mBandIndex);
+        preference.setSummary(mBandEntries[mBandIndex + 1]);
         mListener.onTetherConfigUpdated();
         return true;
     }
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java
index 6832ca8..2a633d9 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java
@@ -80,7 +80,7 @@
 
         mController.displayPreference(mScreen);
 
-        assertThat(mListPreference.getEntries().length).isEqualTo(2);
+        assertThat(mListPreference.getEntries().length).isEqualTo(3);
     }
 
     @Test
@@ -113,13 +113,18 @@
         when(mWifiManager.is5GHzBandSupported()).thenReturn(true);
 
         mController.displayPreference(mScreen);
+
+        // -1 is WifiConfiguration.AP_BAND_ANY, for 'Auto' option.
+        mController.onPreferenceChange(mListPreference, "-1");
+        assertThat(mController.getBandIndex()).isEqualTo(-1);
+
         mController.onPreferenceChange(mListPreference, "1");
         assertThat(mController.getBandIndex()).isEqualTo(1);
 
         mController.onPreferenceChange(mListPreference, "0");
         assertThat(mController.getBandIndex()).isEqualTo(0);
 
-        verify(mListener, times(2)).onTetherConfigUpdated();
+        verify(mListener, times(3)).onTetherConfigUpdated();
     }
 
     @Test