[Wi-Fi] Refine code for saved AccessPoints

The change targets to refine SavedAccessPointsPreferenceController and
SubscribedAccessPointsPreferenceController

1. Remove feature flag check for saved Passpoint display.
2. They do not implements WifiManager.ActionListener.
3. Separate the code to collect saved AccessPoints data and the code to
   update preferences.
4. Let getAvailabilityStatus() returns result according to the saved
   AccessPoints data.
5. Update preferences at SavedAccessPointsWifiSettings#onStart()
   instead of life cycle onStart() of these 2 controllers.
   This is for the change of 2.
6. Do not use PreferenceGroupChildrenCache in
   SubscribedAccessPointsPreferenceController, this is for code
   alignment of SavedAccessPointsPreferenceController.
   Now these 2 controllers have very similar design, it will be easier
   to refine SubscribedAccessPointsPreferenceController as a child of
   SavedAccessPointsPreferenceController.

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: Id6f95d5b64e57a98c2c2e6ab09a4dec70a71b615
This commit is contained in:
Arc Wang
2019-10-08 17:58:20 +08:00
committed by Raff Tsai
parent ab1277f6a5
commit 1f7d2dc54c
6 changed files with 99 additions and 239 deletions

View File

@@ -17,11 +17,11 @@
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;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -30,16 +30,19 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.FeatureFlags;
import com.android.settings.development.featureflags.FeatureFlagPersistent;
import com.android.settings.testutils.shadow.ShadowAccessPoint;
import com.android.settings.testutils.shadow.ShadowWifiManager;
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;
@@ -79,46 +82,20 @@ public class SavedAccessPointsPreferenceControllerTest {
}
@Test
public void getAvailability_alwaysAvailable() {
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
public void onStart_shouldRefreshApList() {
doNothing().when(mController).refreshSavedAccessPoints();
mController.onStart();
verify(mController).refreshSavedAccessPoints();
}
@Test
public void postRefresh_shouldRefreshApList() {
doNothing().when(mController).refreshSavedAccessPoints();
mController.postRefreshSavedAccessPoints();
verify(mController).refreshSavedAccessPoints();
}
@Test
public void forget_onSuccess_shouldRefreshApList() {
doNothing().when(mController).refreshSavedAccessPoints();
mController.onSuccess();
verify(mController).refreshSavedAccessPoints();
}
@Test
public void forget_onFailure_shouldRefreshApList() {
doNothing().when(mController).refreshSavedAccessPoints();
mController.onFailure(0 /* reason */);
verify(mController).refreshSavedAccessPoints();
}
@Test
@Config(shadows = ShadowAccessPoint.class)
public void refreshSavedAccessPoints_shouldListNonSubscribedAPs() {
@@ -131,7 +108,6 @@ public class SavedAccessPointsPreferenceControllerTest {
final ArgumentCaptor<AccessPointPreference> captor =
ArgumentCaptor.forClass(AccessPointPreference.class);
mController.displayPreference(mPreferenceScreen);
mController.refreshSavedAccessPoints();
verify(mPreferenceCategory).addPreference(captor.capture());
@@ -142,13 +118,10 @@ public class SavedAccessPointsPreferenceControllerTest {
@Test
@Config(shadows = ShadowAccessPoint.class)
public void refreshSavedAccessPoints_shouldNotListSubscribedAPs() {
FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
mWifiManager.addOrUpdatePasspointConfiguration(
SubscribedAccessPointsPreferenceControllerTest.createMockPasspointConfiguration());
mController.displayPreference(mPreferenceScreen);
mController.refreshSavedAccessPoints();
verify(mPreferenceCategory, never()).addPreference(any(AccessPointPreference.class));
}

View File

@@ -23,6 +23,7 @@ import static org.mockito.Mockito.spy;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

View File

@@ -17,11 +17,11 @@
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;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -32,16 +32,19 @@ 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 androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.FeatureFlags;
import com.android.settings.development.featureflags.FeatureFlagPersistent;
import com.android.settings.testutils.shadow.ShadowAccessPoint;
import com.android.settings.testutils.shadow.ShadowWifiManager;
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;
@@ -78,51 +81,23 @@ public class SubscribedAccessPointsPreferenceControllerTest {
when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
.thenReturn(mPreferenceCategory);
when(mPreferenceCategory.getContext()).thenReturn(mContext);
FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
}
@Test
public void getAvailability_alwaysAvailable() {
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
public void onStart_shouldRefreshApList() {
doNothing().when(mController).refreshSubscribedAccessPoints();
mController.onStart();
verify(mController).refreshSubscribedAccessPoints();
}
@Test
public void postRefresh_shouldRefreshApList() {
doNothing().when(mController).refreshSubscribedAccessPoints();
mController.postRefreshSubscribedAccessPoints();
verify(mController).refreshSubscribedAccessPoints();
}
@Test
public void forget_onSuccess_shouldRefreshApList() {
doNothing().when(mController).refreshSubscribedAccessPoints();
mController.onSuccess();
verify(mController).refreshSubscribedAccessPoints();
}
@Test
public void forget_onFailure_shouldRefreshApList() {
doNothing().when(mController).refreshSubscribedAccessPoints();
mController.onFailure(0 /* reason */);
verify(mController).refreshSubscribedAccessPoints();
}
@Test
@Config(shadows = ShadowAccessPoint.class)
public void refreshSubscribedAccessPoints_shouldNotListNonSubscribedAPs() {
@@ -133,7 +108,6 @@ public class SubscribedAccessPointsPreferenceControllerTest {
mWifiManager.addNetwork(config);
mController.displayPreference(mPreferenceScreen);
mController.refreshSubscribedAccessPoints();
verify(mPreferenceCategory, never()).addPreference(any(AccessPointPreference.class));
}
@@ -144,7 +118,6 @@ public class SubscribedAccessPointsPreferenceControllerTest {
mWifiManager.addOrUpdatePasspointConfiguration(createMockPasspointConfiguration());
mController.displayPreference(mPreferenceScreen);
mController.refreshSubscribedAccessPoints();
final ArgumentCaptor<AccessPointPreference> captor =
ArgumentCaptor.forClass(AccessPointPreference.class);