diff --git a/res/values/strings.xml b/res/values/strings.xml
index c2528ccd675..61d952aa40d 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 e47bcc9b230..56e4c30cea9 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -77,6 +77,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;
@@ -958,11 +959,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 2a90b909bdb..d2e35664874 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;
@@ -49,6 +53,7 @@ import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.WifiTracker;
+import java.util.ArrayList;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -71,6 +76,8 @@ public class WifiSettingsTest {
private PowerManager mPowerManager;
@Mock
private DataUsagePreference mDataUsagePreference;
+ @Mock
+ private WifiManager mWifiManager;
private Context mContext;
private WifiSettings mWifiSettings;
@@ -86,6 +93,7 @@ public class WifiSettingsTest {
mWifiSettings.mSavedNetworksPreference = new Preference(mContext);
mWifiSettings.mConfigureWifiSettingsPreference = new Preference(mContext);
mWifiSettings.mWifiTracker = mWifiTracker;
+ mWifiSettings.mWifiManager = mWifiManager;
}
@Test
@@ -119,9 +127,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();
@@ -132,9 +161,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();