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();