Merge "[Mac Randomization] Fix MAC randomization option does not work when ephemeral newtork"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7eb8efe..365bda8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2102,6 +2102,8 @@
<string name="wifi_ip_settings">IP settings</string>
<!-- Label for the spinner to show Wifi MAC randomization [CHAR LIMIT=25] -->
<string name="wifi_privacy_settings">Privacy</string>
+ <!-- Summary for Wifi MAC randomization option when it is ephemeral network [CHAR LIMIT=25] -->
+ <string name="wifi_privacy_settings_ephemeral_summary">Randomized MAC</string>
<!-- Title for the fragment to add a device into the wifi network [CHAR LIMIT=50] -->
<string name="wifi_dpp_add_device_to_network">Add a device</string>
<!-- Hint for the user to center another device's QR code in the below camera window [CHAR LIMIT=120] -->
diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
index ec43b0f..225ddbc 100644
--- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
+++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
@@ -141,6 +141,7 @@
WifiPrivacyPreferenceController preferenceController = new WifiPrivacyPreferenceController(
context);
preferenceController.setWifiConfiguration(mAccessPoint.getConfig());
+ preferenceController.setIsEphemeral(mAccessPoint.isEphemeral());
controllers.add(preferenceController);
return controllers;
diff --git a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
index a20adc9..b79f2d4 100644
--- a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
@@ -25,6 +25,7 @@
import androidx.preference.DropDownPreference;
import androidx.preference.Preference;
+import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.FeatureFlags;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -39,6 +40,7 @@
private static final String KEY_WIFI_PRIVACY = "privacy";
private WifiConfiguration mWifiConfiguration;
private WifiManager mWifiManager;
+ private boolean mIsEphemeral = false;
public WifiPrivacyPreferenceController(Context context) {
super(context, KEY_WIFI_PRIVACY);
@@ -50,6 +52,10 @@
mWifiConfiguration = wifiConfiguration;
}
+ public void setIsEphemeral(boolean isEphemeral) {
+ mIsEphemeral = isEphemeral;
+ }
+
@Override
public int getAvailabilityStatus() {
return FeatureFlagUtils.isEnabled(mContext, FeatureFlags.WIFI_MAC_RANDOMIZATION)
@@ -62,6 +68,12 @@
final int randomizationLevel = getRandomizationValue();
dropDownPreference.setValue(Integer.toString(randomizationLevel));
updateSummary(dropDownPreference, randomizationLevel);
+
+ // Makes preference not selectable, when this is a ephemeral network.
+ if (mIsEphemeral) {
+ preference.setSelectable(false);
+ dropDownPreference.setSummary(R.string.wifi_privacy_settings_ephemeral_summary);
+ }
}
@Override
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiPrivacyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiPrivacyPreferenceControllerTest.java
index 1e2e718..a1af8bf 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiPrivacyPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiPrivacyPreferenceControllerTest.java
@@ -93,4 +93,20 @@
mPreferenceController.getRandomizationValue();
mPreferenceController.onPreferenceChange(mDropDownPreference, "1");
}
+
+ @Test
+ public void testUpdateState_isNotEphemeralNetwork_shouldBeSelectable() {
+ mPreferenceController.setIsEphemeral(false);
+ mPreferenceController.updateState(mDropDownPreference);
+
+ assertThat(mDropDownPreference.isSelectable()).isTrue();
+ }
+
+ @Test
+ public void testUpdateState_isEphemeralNetwork_shouldNotSelectable() {
+ mPreferenceController.setIsEphemeral(true);
+ mPreferenceController.updateState(mDropDownPreference);
+
+ assertThat(mDropDownPreference.isSelectable()).isFalse();
+ }
}