Merge "[PasspointV2] Clear feature flag settings_wifi_details_saved_screen" into qt-dev

This commit is contained in:
Cosmo Hsieh
2019-04-14 05:51:02 +00:00
committed by Android (Google) Code Review
7 changed files with 30 additions and 244 deletions

View File

@@ -26,7 +26,6 @@ public class FeatureFlags {
public static final String MOBILE_NETWORK_V2 = "settings_mobile_network_v2";
public static final String NETWORK_INTERNET_V2 = "settings_network_and_internet_v2";
public static final String SLICE_INJECTION = "settings_slice_injection";
public static final String WIFI_DETAILS_SAVED_SCREEN = "settings_wifi_details_saved_screen";
public static final String WIFI_DETAILS_DATAUSAGE_HEADER =
"settings_wifi_details_datausage_header";
}

View File

@@ -71,7 +71,6 @@ import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiDialog.WifiDialogListener;
import com.android.settings.wifi.WifiUtils;
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settings.wifi.savedaccesspoints.SavedAccessPointsWifiSettings;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -259,9 +258,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
public void onLost(Network network) {
final boolean lostCurrentNetwork = network.equals(mNetwork);
if (lostCurrentNetwork) {
// If support detail page for saved network, should update as disconnect but not
// exit. Except for ephemeral network which should not show on saved network list.
if (SavedAccessPointsWifiSettings.usingDetailsFragment(mContext) && !mIsEphemeral) {
// Should update as disconnect but not exit. Except for ephemeral network which
// should not show on saved network list.
if (!mIsEphemeral) {
return;
}
@@ -351,16 +350,12 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mLifecycle = lifecycle;
lifecycle.addObserver(this);
if (SavedAccessPointsWifiSettings.usingDetailsFragment(mContext)) {
mWifiTracker = WifiTrackerFactory.create(
mFragment.getActivity(),
mWifiListener,
mLifecycle,
true /*includeSaved*/,
true /*includeScans*/);
} else {
mWifiTracker = null;
}
mWifiTracker = WifiTrackerFactory.create(
mFragment.getActivity(),
mWifiListener,
mLifecycle,
true /*includeSaved*/,
true /*includeScans*/);
mConnected = mAccessPoint.isActive();
// When lost the network connection, WifiInfo/NetworkInfo will be clear. So causes we
// could not check if the AccessPoint is ephemeral. Need to cache it in first.
@@ -545,11 +540,6 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
if (mNetwork == null || mNetworkInfo == null || mWifiInfo == null) {
// Once connected, can't get mNetworkInfo immediately, return false and wait for
// next time to update UI.
if (SavedAccessPointsWifiSettings.usingDetailsFragment(mContext)) {
return false;
}
exitActivity();
return false;
}
@@ -761,8 +751,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private boolean canConnectNetwork() {
// Display connect button for disconnected AP even not in the range.
return SavedAccessPointsWifiSettings.usingDetailsFragment(mContext)
&& !mAccessPoint.isActive();
return !mAccessPoint.isActive();
}
private void refreshIpLayerInfo() {

View File

@@ -92,7 +92,7 @@ public class SavedAccessPointsPreferenceController extends BasePreferenceControl
@Override
public boolean onPreferenceClick(Preference preference) {
if (mHost != null) {
mHost.showWifiDialog((AccessPointPreference) preference);
mHost.showWifiPage((AccessPointPreference) preference);
}
return false;
}

View File

@@ -41,12 +41,10 @@ import com.android.settingslib.wifi.AccessPointPreference;
/**
* UI to manage saved networks/access points.
*/
public class SavedAccessPointsWifiSettings extends DashboardFragment
implements WifiDialog.WifiDialogListener, DialogInterface.OnCancelListener {
public class SavedAccessPointsWifiSettings extends DashboardFragment {
private static final String TAG = "SavedAccessPoints";
private WifiManager mWifiManager;
private Bundle mAccessPointSavedState;
private AccessPoint mSelectedAccessPoint;
@@ -71,8 +69,6 @@ public class SavedAccessPointsWifiSettings extends DashboardFragment
@Override
public void onAttach(Context context) {
super.onAttach(context);
mWifiManager = (WifiManager) getContext()
.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
use(SavedAccessPointsPreferenceController.class)
.setHost(this);
use(SubscribedAccessPointsPreferenceController.class)
@@ -90,7 +86,7 @@ public class SavedAccessPointsWifiSettings extends DashboardFragment
}
}
public void showWifiDialog(@Nullable AccessPointPreference accessPoint) {
public void showWifiPage(@Nullable AccessPointPreference accessPoint) {
removeDialog(WifiSettings.WIFI_DIALOG_ID);
if (accessPoint != null) {
@@ -102,52 +98,18 @@ public class SavedAccessPointsWifiSettings extends DashboardFragment
mAccessPointSavedState = null;
}
if (usingDetailsFragment(getContext())) {
if (mSelectedAccessPoint == null) {
mSelectedAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
}
final Bundle savedState = new Bundle();
mSelectedAccessPoint.saveWifiState(savedState);
new SubSettingLauncher(getContext())
.setTitleText(mSelectedAccessPoint.getTitle())
.setDestination(WifiNetworkDetailsFragment.class.getName())
.setArguments(savedState)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
} else {
showDialog(WifiSettings.WIFI_DIALOG_ID);
if (mSelectedAccessPoint == null) {
mSelectedAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
}
}
final Bundle savedState = new Bundle();
mSelectedAccessPoint.saveWifiState(savedState);
@Override
public Dialog onCreateDialog(int dialogId) {
switch (dialogId) {
case WifiSettings.WIFI_DIALOG_ID:
// Modify network
if (mSelectedAccessPoint == null) {
// Restore AP from save state
mSelectedAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
// Reset the saved access point data
mAccessPointSavedState = null;
}
final WifiDialog dialog = WifiDialog.createModal(
getActivity(), this, mSelectedAccessPoint, WifiConfigUiBase.MODE_VIEW);
dialog.setOnCancelListener(this);
return dialog;
}
return super.onCreateDialog(dialogId);
}
@Override
public int getDialogMetricsCategory(int dialogId) {
switch (dialogId) {
case WifiSettings.WIFI_DIALOG_ID:
return SettingsEnums.DIALOG_WIFI_SAVED_AP_EDIT;
default:
return 0;
}
new SubSettingLauncher(getContext())
.setTitleText(mSelectedAccessPoint.getTitle())
.setDestination(WifiNetworkDetailsFragment.class.getName())
.setArguments(savedState)
.setSourceMetricsCategory(getMetricsCategory())
.launch();
}
@Override
@@ -162,45 +124,6 @@ public class SavedAccessPointsWifiSettings extends DashboardFragment
}
}
@Override
public void onForget(WifiDialog dialog) {
if (mSelectedAccessPoint != null) {
if (mSelectedAccessPoint.isPasspointConfig()) {
try {
mWifiManager.removePasspointConfiguration(
mSelectedAccessPoint.getPasspointFqdn());
} catch (RuntimeException e) {
Log.e(TAG, "Failed to remove Passpoint configuration for "
+ mSelectedAccessPoint.getConfigName());
}
if (isSubscriptionsFeatureEnabled()) {
use(SubscribedAccessPointsPreferenceController.class)
.postRefreshSubscribedAccessPoints();
} else {
use(SavedAccessPointsPreferenceController.class)
.postRefreshSavedAccessPoints();
}
} else {
// both onSuccess/onFailure will call postRefreshSavedAccessPoints
mWifiManager.forget(mSelectedAccessPoint.getConfig().networkId,
use(SavedAccessPointsPreferenceController.class));
}
mSelectedAccessPoint = null;
}
}
@Override
public void onCancel(DialogInterface dialog) {
mSelectedAccessPoint = null;
}
/**
* Checks if showing WifiNetworkDetailsFragment when clicking saved network item.
*/
public static boolean usingDetailsFragment(Context context) {
return FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_SAVED_SCREEN);
}
boolean isSubscriptionsFeatureEnabled() {
return FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.MOBILE_NETWORK_V2)
&& FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2);

View File

@@ -91,7 +91,7 @@ public class SubscribedAccessPointsPreferenceController extends BasePreferenceCo
@Override
public boolean onPreferenceClick(Preference preference) {
if (mHost != null) {
mHost.showWifiDialog((AccessPointPreference) preference);
mHost.showWifiPage((AccessPointPreference) preference);
}
return false;
}

View File

@@ -290,16 +290,12 @@ public class WifiDetailPreferenceControllerTest {
setupMockedPreferenceScreen();
// Disable saved network detail page feature for this test
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.WIFI_DETAILS_SAVED_SCREEN, false);
when(mockAccessPoint.isActive()).thenReturn(true);
mController = newWifiDetailPreferenceController();
}
private void setUpForConnectedNetwork() {
// Enable saved network detail page feature for this test
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.WIFI_DETAILS_SAVED_SCREEN, true);
when(mockAccessPoint.isActive()).thenReturn(true);
ArrayList list = new ArrayList<>();
list.add(mockAccessPoint);
@@ -312,8 +308,6 @@ public class WifiDetailPreferenceControllerTest {
}
private void setUpForDisconnectedNetwork() {
// Enable saved network detail page feature for this test
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.WIFI_DETAILS_SAVED_SCREEN, true);
when(mockAccessPoint.isActive()).thenReturn(false);
ArrayList list = new ArrayList<>();
list.add(mockAccessPoint);
@@ -326,8 +320,6 @@ public class WifiDetailPreferenceControllerTest {
}
private void setUpForNotInRangeNetwork() {
// Enable saved network detail page feature for this test
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.WIFI_DETAILS_SAVED_SCREEN, true);
when(mockAccessPoint.isActive()).thenReturn(false);
ArrayList list = new ArrayList<>();
list.add(mockAccessPoint);
@@ -494,15 +486,6 @@ public class WifiDetailPreferenceControllerTest {
.unregisterNetworkCallback(mCallbackCaptor.getValue());
}
@Test
public void entityHeader_shouldHaveIconSet() {
Drawable expectedIcon = mockIconInjector.getIcon(LEVEL);
displayAndResume();
verify(mockHeaderController).setIcon(expectedIcon);
}
@Test
public void entityHeader_shouldHaveIconSetForConnectedNetwork() {
setUpForConnectedNetwork();
@@ -552,13 +535,6 @@ public class WifiDetailPreferenceControllerTest {
verify(mockHeaderController).setSummary(summary);
}
@Test
public void signalStrengthPref_shouldHaveIconSet() {
displayAndResume();
verify(mockSignalStrengthPref).setIcon(any(Drawable.class));
}
@Test
public void signalStrengthPref_shouldHaveIconSetForConnectedNetwork() {
setUpForConnectedNetwork();
@@ -586,16 +562,6 @@ public class WifiDetailPreferenceControllerTest {
verify(mockSignalStrengthPref, never()).setIcon(any(Drawable.class));
}
@Test
public void signalStrengthPref_shouldHaveDetailTextSet() {
String expectedStrength =
mContext.getResources().getStringArray(R.array.wifi_signal)[LEVEL];
displayAndResume();
verify(mockSignalStrengthPref).setSummary(expectedStrength);
}
@Test
public void signalStrengthPref_shouldHaveDetailTextSetForConnectedNetwork() {
setUpForConnectedNetwork();
@@ -917,17 +883,6 @@ public class WifiDetailPreferenceControllerTest {
verify(mockDnsPref).setVisible(false);
}
@Test
public void noCurrentNetwork_shouldFinishActivity() {
// If WifiManager#getCurrentNetwork() returns null, then the network is neither connected
// nor connecting and WifiStateMachine has not reached L2ConnectedState.
when(mockWifiManager.getCurrentNetwork()).thenReturn(null);
displayAndResume();
verify(mockActivity).finish();
}
@Test
public void noCurrentNetwork_shouldNotFinishActivityForConnectedNetwork() {
// For new feature for display detail page for saved network for disconnected network,
@@ -1306,16 +1261,6 @@ public class WifiDetailPreferenceControllerTest {
verify(mockWifiManager, times(2)).getConnectionInfo();
}
@Test
public void networkDisconnectedState_shouldFinishActivity() {
displayAndResume();
when(mockConnectivityManager.getNetworkInfo(any(Network.class))).thenReturn(null);
mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
verify(mockActivity).finish();
}
@Test
public void networkDisconnectedState_shouldNotFinishActivityForConnectedNetwork() {
setUpForConnectedNetwork();
@@ -1328,15 +1273,6 @@ public class WifiDetailPreferenceControllerTest {
verify(mockActivity, never()).finish();
}
@Test
public void networkOnLost_shouldFinishActivity() {
displayAndResume();
mCallbackCaptor.getValue().onLost(mockNetwork);
verify(mockActivity).finish();
}
@Test
public void networkOnLost_shouldNotFinishActivityForConnectedNetwork() {
setUpForConnectedNetwork();
@@ -1428,23 +1364,25 @@ public class WifiDetailPreferenceControllerTest {
}
@Test
public void testRefreshRssiViews_shouldNotUpdateIfLevelIsSame() {
public void testRefreshRssiViews_shouldNotUpdateIfLevelIsSameForConnectedNetwork() {
setUpForConnectedNetwork();
displayAndResume();
mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
verify(mockAccessPoint, times(2)).getLevel();
verify(mockAccessPoint, times(3)).getLevel();
verify(mockIconInjector, times(1)).getIcon(anyInt());
}
@Test
public void testRefreshRssiViews_shouldUpdateOnLevelChange() {
public void testRefreshRssiViews_shouldUpdateOnLevelChangeForConnectedNetwork() {
setUpForConnectedNetwork();
displayAndResume();
when(mockAccessPoint.getLevel()).thenReturn(0);
mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
verify(mockAccessPoint, times(2)).getLevel();
verify(mockAccessPoint, times(4)).getLevel();
verify(mockIconInjector, times(2)).getIcon(anyInt());
}

View File

@@ -17,46 +17,22 @@
package com.android.settings.wifi.savedaccesspoints;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.core.FeatureFlags;
import com.android.settings.development.featureflags.FeatureFlagPersistent;
import com.android.settings.wifi.WifiConfigController;
import com.android.settings.wifi.WifiDialog;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.wifi.AccessPoint;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
public class SavedAccessPointsWifiSettingsTest {
@Mock
private WifiManager mWifiManager;
@Mock
private WifiDialog mWifiDialog;
@Mock
private WifiConfigController mConfigController;
@Mock
private WifiConfiguration mWifiConfiguration;
@Mock
private AccessPoint mAccessPoint;
@Mock
private SubscribedAccessPointsPreferenceController mSubscribedApController;
@Mock
@@ -73,45 +49,6 @@ public class SavedAccessPointsWifiSettingsTest {
.use(SubscribedAccessPointsPreferenceController.class);
doReturn(mSavedApController).when(mSettings)
.use(SavedAccessPointsPreferenceController.class);
ReflectionHelpers.setField(mSettings, "mWifiManager", mWifiManager);
when(mWifiDialog.getController()).thenReturn(mConfigController);
when(mConfigController.getConfig()).thenReturn(mWifiConfiguration);
}
@Test
public void onForget_isPasspointConfig_shouldRefreshAPList() {
FeatureFlagPersistent.setEnabled(RuntimeEnvironment.application,
FeatureFlags.NETWORK_INTERNET_V2, false);
when(mAccessPoint.isPasspointConfig()).thenReturn(true);
ReflectionHelpers.setField(mSettings, "mSelectedAccessPoint", mAccessPoint);
mSettings.onForget(null);
verify(mSavedApController).postRefreshSavedAccessPoints();
}
@Test
public void onForget_isPasspointConfig_shouldRefreshSubscribedAPList() {
FeatureFlagPersistent.setEnabled(RuntimeEnvironment.application,
FeatureFlags.NETWORK_INTERNET_V2, true);
when(mAccessPoint.isPasspointConfig()).thenReturn(true);
ReflectionHelpers.setField(mSettings, "mSelectedAccessPoint", mAccessPoint);
mSettings.onForget(null);
verify(mSubscribedApController).postRefreshSubscribedAccessPoints();
}
@Test
public void onForget_shouldInvokeForgetApi() {
ReflectionHelpers.setField(mSettings, "mSelectedAccessPoint", mAccessPoint);
when(mAccessPoint.getConfig()).thenReturn(mWifiConfiguration);
mSettings.onForget(mWifiDialog);
verify(mWifiManager).forget(mWifiConfiguration.networkId, mSavedApController);
}
@Test