diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9c24dd34a9e..3d3aabafe5e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2303,11 +2303,20 @@
All passwords for this network will be deleted
-
+
- 1 network
- %d networks
+
+
+ - 1 subscription
+ - %d subscriptions
+
+
+
+ - %d networks & subscriptions
+
Advanced Wi\u2011Fi
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index da101485c91..6958ecbd7a7 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -78,6 +78,7 @@ import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.AccessPoint.AccessPointListener;
import com.android.settingslib.wifi.AccessPointPreference;
+import com.android.settingslib.wifi.WifiSavedConfigUtils;
import com.android.settingslib.wifi.WifiTracker;
import com.android.settingslib.wifi.WifiTrackerFactory;
@@ -954,11 +955,38 @@ public class WifiSettings extends RestrictedSettingsFragment
isWifiWakeupEnabled()
? R.string.wifi_configure_settings_preference_summary_wakeup_on
: R.string.wifi_configure_settings_preference_summary_wakeup_off));
- final int numSavedNetworks = mWifiTracker.getNumSavedNetworks();
+
+ final List savedNetworks =
+ WifiSavedConfigUtils.getAllConfigs(getContext(), mWifiManager);
+ final int numSavedNetworks = (savedNetworks != null) ? savedNetworks.size() : 0;
mSavedNetworksPreference.setVisible(numSavedNetworks > 0);
- mSavedNetworksPreference.setSummary(
- getResources().getQuantityString(R.plurals.wifi_saved_access_points_summary,
- numSavedNetworks, numSavedNetworks));
+ if (numSavedNetworks > 0) {
+ mSavedNetworksPreference.setSummary(
+ getSavedNetworkSettingsSummaryText(savedNetworks, numSavedNetworks));
+ }
+ }
+
+ private String getSavedNetworkSettingsSummaryText(
+ List savedNetworks, int numSavedNetworks) {
+ int numSavedPasspointNetworks = 0;
+ for (AccessPoint savedNetwork : savedNetworks) {
+ if (savedNetwork.isPasspointConfig() || savedNetwork.isPasspoint()) {
+ numSavedPasspointNetworks++;
+ }
+ }
+ final int numSavedNormalNetworks = numSavedNetworks - numSavedPasspointNetworks;
+
+ if (numSavedNetworks == numSavedNormalNetworks) {
+ return getResources().getQuantityString(R.plurals.wifi_saved_access_points_summary,
+ numSavedNormalNetworks, numSavedNormalNetworks);
+ } else if (numSavedNetworks == numSavedPasspointNetworks) {
+ return getResources().getQuantityString(
+ R.plurals.wifi_saved_passpoint_access_points_summary,
+ numSavedPasspointNetworks, numSavedPasspointNetworks);
+ } else {
+ return getResources().getQuantityString(R.plurals.wifi_saved_all_access_points_summary,
+ numSavedNetworks, numSavedNetworks);
+ }
}
private boolean isWifiWakeupEnabled() {
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
index 82e6717bf51..e2dc932f6a3 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
@@ -32,6 +32,10 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+import android.net.wifi.hotspot2.PasspointConfiguration;
+import android.net.wifi.hotspot2.pps.HomeSp;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.UserManager;
@@ -46,6 +50,7 @@ import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settingslib.wifi.WifiTracker;
+import java.util.ArrayList;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -68,6 +73,8 @@ public class WifiSettingsTest {
private PowerManager mPowerManager;
@Mock
private DataUsagePreference mDataUsagePreference;
+ @Mock
+ private WifiManager mWifiManager;
private Context mContext;
private WifiSettings mWifiSettings;
@@ -83,6 +90,7 @@ public class WifiSettingsTest {
mWifiSettings.mSavedNetworksPreference = new Preference(mContext);
mWifiSettings.mConfigureWifiSettingsPreference = new Preference(mContext);
mWifiSettings.mWifiTracker = mWifiTracker;
+ mWifiSettings.mWifiManager = mWifiManager;
}
@Test
@@ -116,9 +124,30 @@ public class WifiSettingsTest {
verify(wifiSettings).handleAddNetworkRequest(anyInt(), any(Intent.class));
}
+ private List createMockWifiConfigurations(int count) {
+ final List mockConfigs = new ArrayList<>();
+ for (int i = 0; i < count; i++) {
+ mockConfigs.add(new WifiConfiguration());
+ }
+ return mockConfigs;
+ }
+
+ private List createMockPasspointConfigurations(int count) {
+ final List mockConfigs = new ArrayList<>();
+ for (int i = 0; i < count; i++) {
+ final HomeSp sp = new HomeSp();
+ sp.setFqdn("fqdn");
+ final PasspointConfiguration config = new PasspointConfiguration();
+ config.setHomeSp(sp);
+ mockConfigs.add(config);
+ }
+ return mockConfigs;
+ }
+
@Test
public void setAdditionalSettingsSummaries_hasSavedNetwork_preferenceVisible() {
- when(mWifiTracker.getNumSavedNetworks()).thenReturn(NUM_NETWORKS);
+ when(mWifiManager.getConfiguredNetworks())
+ .thenReturn(createMockWifiConfigurations(NUM_NETWORKS));
mWifiSettings.setAdditionalSettingsSummaries();
@@ -129,9 +158,40 @@ public class WifiSettingsTest {
NUM_NETWORKS, NUM_NETWORKS));
}
+ @Test
+ public void setAdditionalSettingsSummaries_hasSavedPasspointNetwork_preferenceVisible() {
+ when(mWifiManager.getPasspointConfigurations())
+ .thenReturn(createMockPasspointConfigurations(NUM_NETWORKS));
+
+ mWifiSettings.setAdditionalSettingsSummaries();
+
+ assertThat(mWifiSettings.mSavedNetworksPreference.isVisible()).isTrue();
+ assertThat(mWifiSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
+ mContext.getResources().getQuantityString(
+ R.plurals.wifi_saved_passpoint_access_points_summary,
+ NUM_NETWORKS, NUM_NETWORKS));
+ }
+
+ @Test
+ public void setAdditionalSettingsSummaries_hasTwoKindsSavedNetwork_preferenceVisible() {
+ when(mWifiManager.getConfiguredNetworks())
+ .thenReturn(createMockWifiConfigurations(NUM_NETWORKS));
+ when(mWifiManager.getPasspointConfigurations())
+ .thenReturn(createMockPasspointConfigurations(NUM_NETWORKS));
+
+ mWifiSettings.setAdditionalSettingsSummaries();
+
+ assertThat(mWifiSettings.mSavedNetworksPreference.isVisible()).isTrue();
+ assertThat(mWifiSettings.mSavedNetworksPreference.getSummary()).isEqualTo(
+ mContext.getResources().getQuantityString(
+ R.plurals.wifi_saved_all_access_points_summary,
+ NUM_NETWORKS*2, NUM_NETWORKS*2));
+ }
+
@Test
public void setAdditionalSettingsSummaries_noSavedNetwork_preferenceInvisible() {
- when(mWifiTracker.getNumSavedNetworks()).thenReturn(0);
+ when(mWifiManager.getConfiguredNetworks())
+ .thenReturn(createMockWifiConfigurations(0 /* count */));
mWifiSettings.setAdditionalSettingsSummaries();