Merge "[Passpointv2] Implement confirm dialog for passpoint forget button"
This commit is contained in:
committed by
Android (Google) Code Review
commit
a9308663c3
@@ -10710,4 +10710,7 @@
|
||||
<string name="media_output_panel_title">Switch output</string>
|
||||
<!-- Summary for represent which device is playing media [CHAR LIMIT=NONE] -->
|
||||
<string name="media_output_panel_summary_of_playing_device">Currently playing on <xliff:g id="device_name" example="Bose headphone">%1$s</xliff:g></string>
|
||||
|
||||
<!-- Message for forget passpoint dialog [CHAR LIMIT=none] -->
|
||||
<string name="forget_passpoint_dialog_message">Your subscription with this provider may be cancelled. Recurring subscriptions will not be cancelled. For more information, check with your provider.</string>
|
||||
</resources>
|
||||
|
@@ -20,6 +20,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.KeyguardManager;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.BroadcastReceiver;
|
||||
@@ -45,7 +46,6 @@ import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.util.FeatureFlagUtils;
|
||||
import android.util.Log;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
@@ -61,6 +61,7 @@ import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.development.featureflags.FeatureFlagPersistent;
|
||||
import com.android.settings.widget.EntityHeaderController;
|
||||
import com.android.settings.wifi.WifiDialog;
|
||||
import com.android.settings.wifi.WifiDialog.WifiDialogListener;
|
||||
@@ -568,6 +569,12 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
||||
mWifiManager.disableEphemeralNetwork(mWifiInfo.getSSID());
|
||||
} else if (mWifiConfig != null) {
|
||||
if (mWifiConfig.isPasspoint()) {
|
||||
// Post a dialog to confirm if user really want to forget the passpoint network.
|
||||
if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) {
|
||||
showConfirmForgetDialog();
|
||||
return;
|
||||
}
|
||||
|
||||
mWifiManager.removePasspointConfiguration(mWifiConfig.FQDN);
|
||||
} else {
|
||||
mWifiManager.forget(mWifiConfig.networkId, null /* action listener */);
|
||||
@@ -578,6 +585,22 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
||||
mFragment.getActivity().finish();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
protected void showConfirmForgetDialog() {
|
||||
final AlertDialog dialog = new AlertDialog.Builder(mContext)
|
||||
.setPositiveButton(R.string.forget, ((dialog1, which) -> {
|
||||
mWifiManager.removePasspointConfiguration(mWifiConfig.FQDN);
|
||||
mMetricsFeatureProvider.action(
|
||||
mFragment.getActivity(), SettingsEnums.ACTION_WIFI_FORGET);
|
||||
mFragment.getActivity().finish();
|
||||
}))
|
||||
.setNegativeButton(R.string.cancel, null /* listener */)
|
||||
.setTitle(R.string.wifi_forget_dialog_title)
|
||||
.setMessage(R.string.forget_passpoint_dialog_message)
|
||||
.create();
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show QR code to share the network represented by this preference.
|
||||
*/
|
||||
|
@@ -65,6 +65,8 @@ import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.development.featureflags.FeatureFlagPersistent;
|
||||
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
|
||||
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
|
||||
import com.android.settings.widget.EntityHeaderController;
|
||||
@@ -755,6 +757,36 @@ public class WifiDetailPreferenceControllerTest {
|
||||
.action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forgetNetwork_Passpoint() {
|
||||
mockWifiConfig.networkId = 5;
|
||||
when(mockWifiConfig.isPasspoint()).thenReturn(true);
|
||||
|
||||
mController.displayPreference(mockScreen);
|
||||
mForgetClickListener.getValue().onClick(null);
|
||||
|
||||
verify(mockWifiManager).removePasspointConfiguration(mockWifiConfig.FQDN);
|
||||
verify(mockMetricsFeatureProvider)
|
||||
.action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void forgetNetwork_PasspointV2_shouldShowDialog() {
|
||||
final WifiDetailPreferenceController spyController = spy(mController);
|
||||
|
||||
mockWifiConfig.networkId = 5;
|
||||
when(mockWifiConfig.isPasspoint()).thenReturn(true);
|
||||
FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
|
||||
|
||||
spyController.displayPreference(mockScreen);
|
||||
mForgetClickListener.getValue().onClick(null);
|
||||
|
||||
verify(mockWifiManager, times(0)).removePasspointConfiguration(mockWifiConfig.FQDN);
|
||||
verify(mockMetricsFeatureProvider, times(0))
|
||||
.action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
|
||||
verify(spyController).showConfirmForgetDialog();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void networkStateChangedIntent_shouldRefetchInfo() {
|
||||
displayAndResume();
|
||||
|
Reference in New Issue
Block a user