diff --git a/res/values/strings.xml b/res/values/strings.xml index 92819794fd1..110fe472ea6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2102,6 +2102,8 @@ IP settings Privacy + + Randomized MAC Add a device diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java index ec43b0ffb24..225ddbcf77c 100644 --- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java @@ -141,6 +141,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { 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 a20adc9b2ee..b79f2d49749 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.annotation.VisibleForTesting; 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 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im 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 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im 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 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im 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 1e2e718a1dd..a1af8bf272c 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 @@ public class WifiPrivacyPreferenceControllerTest { 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(); + } }