Show "Disconnect" on forget button for ephemeral network

For app or carrier initiated wifi connections (i.e all "ephemeral networks"),
the detailed page of settings should show "Disconnect" instead of "Forget".

Bug: 123892605
Test: atest WifiDetailPreferenceControllerTest
Change-Id: I1ee7f45ea12fe2ab9ca35cab77de0b1d67efc1db
This commit is contained in:
cosmohsieh
2019-03-26 14:14:52 +08:00
parent bf5c7c362f
commit e4b3844d0b
2 changed files with 18 additions and 5 deletions

View File

@@ -158,6 +158,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private final WifiTracker mWifiTracker;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private boolean mIsOutOfRange;
private boolean mIsEphemeral;
private boolean mConnected;
private int mConnectingState;
private WifiManager.ActionListener mConnectListener;
@@ -248,12 +249,14 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
@Override
public void onLost(Network network) {
// If support detail page for saved network, should update as disconnect but not exit.
if (SavedAccessPointsWifiSettings.usingDetailsFragment(mContext)) {
return;
}
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) {
return;
}
if (network.equals(mNetwork)) {
exitActivity();
}
}
@@ -347,6 +350,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mWifiTracker = null;
}
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.
mIsEphemeral = mAccessPoint.isEphemeral();
mConnectingState = STATE_NONE;
mConnectListener = new WifiManager.ActionListener() {
@Override
@@ -687,6 +693,10 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
}
private void refreshButtons() {
// Ephemeral network won't be removed permanently, but be putted in blacklist.
mButtonsPref.setButton1Text(
mIsEphemeral ? R.string.wifi_disconnect_button_text : R.string.forget);
mButtonsPref.setButton1Visible(canForgetNetwork());
mButtonsPref.setButton2Visible(canSignIntoNetwork());
mButtonsPref.setButton3Visible(canConnectNetwork());