From e4b3844d0bdf5179ce3775abfe30441b0a3016ba Mon Sep 17 00:00:00 2001 From: cosmohsieh Date: Tue, 26 Mar 2019 14:14:52 +0800 Subject: [PATCH] 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 --- res/values/strings.xml | 3 +++ .../WifiDetailPreferenceController.java | 20 ++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index dd6d7a3b0f8..d0a19b6906a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -11030,4 +11030,7 @@ Automatically capture system heap dumps Automatically capture a heap dump for Android System when it uses too much memory + + + Disconnect diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java index 955525dd859..11ebf371b16 100644 --- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java @@ -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());