[Wi-Fi] Refine code for saved AccessPoints
SubscribedAccessPointsPreferenceController extends from
SavedAccessPointsPreferenceController to remove duplicate
code.
Bug: 127206629
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.wifi.savedaccesspoints
Manual: Add and forget Wi-Fi accesspoints and observe UI display.
Change-Id: Ia494117ae98f043ce65b2f9f6e4b4daccc8df543
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
index 81803dd..2315c9b 100644
--- a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
+++ b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
@@ -30,7 +30,6 @@
import com.android.settingslib.wifi.AccessPointPreference.UserBadgeCache;
import com.android.settingslib.wifi.WifiSavedConfigUtils;
-import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -40,17 +39,14 @@
public class SavedAccessPointsPreferenceController extends BasePreferenceController implements
Preference.OnPreferenceClickListener {
- private static final String TAG = "SavedApPrefCtrl";
-
- private final WifiManager mWifiManager;
+ protected final WifiManager mWifiManager;
private final UserBadgeCache mUserBadgeCache;
private PreferenceGroup mPreferenceGroup;
private SavedAccessPointsWifiSettings mHost;
@VisibleForTesting
List<AccessPoint> mAccessPoints;
- public SavedAccessPointsPreferenceController(Context context,
- String preferenceKey) {
+ public SavedAccessPointsPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(context.getPackageManager());
mWifiManager = context.getSystemService(WifiManager.class);
@@ -84,7 +80,7 @@
return false;
}
- private void refreshSavedAccessPoints() {
+ protected void refreshSavedAccessPoints() {
mAccessPoints = WifiSavedConfigUtils.getAllConfigs(mContext, mWifiManager).stream()
.filter(accessPoint -> !accessPoint.isPasspointConfig())
.sorted(SavedNetworkComparator.INSTANCE)
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java b/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java
index 4d7dc60..b86113e 100644
--- a/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java
+++ b/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java
@@ -17,92 +17,26 @@
package com.android.settings.wifi.savedaccesspoints;
import android.content.Context;
-import android.net.wifi.WifiManager;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.wifi.AccessPoint;
-import com.android.settingslib.wifi.AccessPointPreference;
-import com.android.settingslib.wifi.AccessPointPreference.UserBadgeCache;
import com.android.settingslib.wifi.WifiSavedConfigUtils;
-import java.util.Collections;
-import java.util.List;
import java.util.stream.Collectors;
/**
* Controller that manages a PreferenceGroup, which contains a list of subscribed access points.
*/
-public class SubscribedAccessPointsPreferenceController extends BasePreferenceController implements
- Preference.OnPreferenceClickListener {
+public class SubscribedAccessPointsPreferenceController extends
+ SavedAccessPointsPreferenceController {
- private static final String TAG = "SubscribedApPrefCtrl";
-
- private final WifiManager mWifiManager;
- private final UserBadgeCache mUserBadgeCache;
- private PreferenceGroup mPreferenceGroup;
- private SavedAccessPointsWifiSettings mHost;
- @VisibleForTesting
- List<AccessPoint> mAccessPoints;
-
- public SubscribedAccessPointsPreferenceController(Context context,
- String preferenceKey) {
+ public SubscribedAccessPointsPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
- mUserBadgeCache = new AccessPointPreference.UserBadgeCache(context.getPackageManager());
- mWifiManager = context.getSystemService(WifiManager.class);
- }
-
- public SubscribedAccessPointsPreferenceController setHost(SavedAccessPointsWifiSettings host) {
- mHost = host;
- return this;
}
@Override
- public int getAvailabilityStatus() {
- return mAccessPoints.size() > 0 ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
- }
-
- @Override
- public void displayPreference(PreferenceScreen screen) {
- mPreferenceGroup = screen.findPreference(getPreferenceKey());
- refreshSubscribedAccessPoints();
- updatePreference();
- super.displayPreference(screen);
- }
-
- @Override
- public boolean onPreferenceClick(Preference preference) {
- if (mHost != null) {
- final Preference preferenceInGroup =
- mPreferenceGroup.findPreference(preference.getKey());
- mHost.showWifiPage((AccessPointPreference) preferenceInGroup);
- }
- return false;
- }
-
- private void refreshSubscribedAccessPoints() {
+ protected void refreshSavedAccessPoints() {
mAccessPoints = WifiSavedConfigUtils.getAllConfigs(mContext, mWifiManager).stream()
.filter(accessPoint -> accessPoint.isPasspointConfig())
.sorted(SavedNetworkComparator.INSTANCE)
.collect(Collectors.toList());
}
-
- private void updatePreference() {
- mPreferenceGroup.removeAll();
- for (AccessPoint accessPoint : mAccessPoints) {
- final String key = accessPoint.getKey();
-
- final AccessPointPreference preference = new AccessPointPreference(accessPoint,
- mContext, mUserBadgeCache, true /* forSavedNetworks */);
- preference.setKey(key);
- preference.setIcon(null);
- preference.setOnPreferenceClickListener(this);
-
- mPreferenceGroup.addPreference(preference);
- }
- }
}
diff --git a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java
index 73e1297..e955224 100644
--- a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java
@@ -98,7 +98,7 @@
@Test
@Config(shadows = ShadowAccessPoint.class)
- public void refreshSavedAccessPoints_shouldListNonSubscribedAPs() {
+ public void displayPreference_oneAccessPoint_shouldListNonSubscribedAPs() {
final WifiConfiguration config = new WifiConfiguration();
config.SSID = "SSID";
config.BSSID = "BSSID";
@@ -117,7 +117,7 @@
@Test
@Config(shadows = ShadowAccessPoint.class)
- public void refreshSavedAccessPoints_shouldNotListSubscribedAPs() {
+ public void displayPreference_onePasspoint_shouldNotListSubscribedAPs() {
mWifiManager.addOrUpdatePasspointConfiguration(
SubscribedAccessPointsPreferenceControllerTest.createMockPasspointConfiguration());
diff --git a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceControllerTest.java
index f9307db..b28498b 100644
--- a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceControllerTest.java
@@ -16,9 +16,6 @@
package com.android.settings.wifi.savedaccesspoints;
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
-
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
@@ -32,7 +29,6 @@
import android.net.wifi.WifiManager;
import android.net.wifi.hotspot2.PasspointConfiguration;
import android.net.wifi.hotspot2.pps.HomeSp;
-import android.os.Bundle;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
@@ -42,9 +38,6 @@
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.AccessPointPreference;
-import java.util.ArrayList;
-import java.util.Arrays;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -84,23 +77,8 @@
}
@Test
- public void getAvailability_noSavedAccessPoint_shouldNotAvailable() {
- mController.mAccessPoints = new ArrayList<>();
-
- assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
- }
-
- @Test
- public void getAvailability_oneSavedAccessPoint_shouldAvailable() {
- final AccessPoint accessPoint = new AccessPoint(mContext, new Bundle() /* savedState */);
- mController.mAccessPoints = new ArrayList<AccessPoint>(Arrays.asList(accessPoint));
-
- assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
- }
-
- @Test
@Config(shadows = ShadowAccessPoint.class)
- public void refreshSubscribedAccessPoints_shouldNotListNonSubscribedAPs() {
+ public void displayPreference_oneAccessPoint_shouldNotListNonSubscribedAPs() {
final WifiConfiguration config = new WifiConfiguration();
config.SSID = "SSID";
config.BSSID = "BSSID";
@@ -114,7 +92,7 @@
@Test
@Config(shadows = ShadowAccessPoint.class)
- public void refreshSubscribedAccessPoints_shouldListSubscribedAPs() {
+ public void displayPreference_onePasspoint_shouldListSubscribedAPs() {
mWifiManager.addOrUpdatePasspointConfiguration(createMockPasspointConfiguration());
mController.displayPreference(mPreferenceScreen);