diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1058c2825ec..cb0f02700fe 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10710,4 +10710,7 @@
Switch output
Currently playing on %1$s
+
+
+ Your subscription with this provider may be cancelled. Recurring subscriptions will not be cancelled. For more information, check with your provider.
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 53b1530e004..bc33f4f03c3 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -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.
*/
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
index 3944f84072e..640c426fb68 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -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();