Loading src/com/android/settings/wifi/WifiConfigController.java +11 −4 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settings.ProxySelector; import com.android.settings.R; import com.android.settings.wifi.details.WifiPrivacyPreferenceController; import com.android.settingslib.Utils; import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.wifi.AccessPoint; Loading Loading @@ -251,8 +252,6 @@ public class WifiConfigController implements TextWatcher, com.android.settings.core.FeatureFlags.WIFI_MAC_RANDOMIZATION)) { View privacySettingsLayout = mView.findViewById(R.id.privacy_settings_fields); privacySettingsLayout.setVisibility(View.VISIBLE); // Set default value mPrivacySettingsSpinner.setSelection(WifiConfiguration.RANDOMIZATION_PERSISTENT); } mHiddenSettingsSpinner.setOnItemSelectedListener(this); mHiddenWarningView = mView.findViewById(R.id.hidden_settings_warning); Loading Loading @@ -281,7 +280,12 @@ public class WifiConfigController implements TextWatcher, mHiddenSettingsSpinner.setSelection(config.hiddenSSID ? HIDDEN_NETWORK : NOT_HIDDEN_NETWORK); mPrivacySettingsSpinner.setSelection(config.macRandomizationSetting); final int prefMacValue = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( config.macRandomizationSetting); mPrivacySettingsSpinner.setSelection(prefMacValue); if (config.getIpAssignment() == IpAssignment.STATIC) { mIpSettingsSpinner.setSelection(STATIC_IP); showAdvancedFields = true; Loading Loading @@ -766,7 +770,10 @@ public class WifiConfigController implements TextWatcher, } if (mPrivacySettingsSpinner != null) { config.macRandomizationSetting = mPrivacySettingsSpinner.getSelectedItemPosition(); final int macValue = WifiPrivacyPreferenceController.translatePrefValueToMacRandomizedValue( mPrivacySettingsSpinner.getSelectedItemPosition()); config.macRandomizationSetting = macValue; } return config; Loading src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java +23 −9 Original line number Diff line number Diff line Loading @@ -85,15 +85,29 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im return WifiConfiguration.RANDOMIZATION_PERSISTENT; } private final int PREF_RANDOMIZATION_PERSISTENT = 0; private final int PREF_RANDOMIZATION_NONE = 1; @VisibleForTesting protected int translateMacRandomizedValueToPrefValue(int macRandomized) { if (macRandomized == WifiConfiguration.RANDOMIZATION_PERSISTENT) { return PREF_RANDOMIZATION_PERSISTENT; } else { return PREF_RANDOMIZATION_NONE; private static final int PREF_RANDOMIZATION_PERSISTENT = 0; private static final int PREF_RANDOMIZATION_NONE = 1; /** * Returns preference index value. * * @param macRandomized is mac randomized value * @return index value of preference */ public static int translateMacRandomizedValueToPrefValue(int macRandomized) { return (macRandomized == WifiConfiguration.RANDOMIZATION_PERSISTENT) ? PREF_RANDOMIZATION_PERSISTENT : PREF_RANDOMIZATION_NONE; } /** * Returns mac randomized value. * * @param prefMacRandomized is preference index value * @return mac randomized value */ public static int translatePrefValueToMacRandomizedValue(int prefMacRandomized) { return (prefMacRandomized == PREF_RANDOMIZATION_PERSISTENT) ? WifiConfiguration.RANDOMIZATION_PERSISTENT : WifiConfiguration.RANDOMIZATION_NONE; } private void updateSummary(DropDownPreference preference, int macRandomized) { Loading tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +59 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.ServiceSpecificException; import android.security.KeyStore; Loading @@ -39,6 +40,7 @@ import android.widget.TextView; import com.android.settings.R; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.wifi.details.WifiPrivacyPreferenceController; import com.android.settingslib.wifi.AccessPoint; import org.junit.Before; Loading Loading @@ -386,4 +388,61 @@ public class WifiConfigControllerTest { @Override KeyStore getKeyStore() { return mKeyStore; } } @Test public void loadMacRandomizedValue_shouldPersistentAsDefault() { final Spinner privacySetting = mView.findViewById(R.id.privacy_settings); final int prefPersist = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( WifiConfiguration.RANDOMIZATION_PERSISTENT); assertThat(privacySetting.getVisibility()).isEqualTo(View.VISIBLE); assertThat(privacySetting.getSelectedItemPosition()).isEqualTo(prefPersist); } @Test public void loadSavedMacRandomizedPersistentValue_shouldCorrectMacValue() { checkSavedMacRandomizedValue(WifiConfiguration.RANDOMIZATION_PERSISTENT); } @Test public void loadSavedMacRandomizedNoneValue_shouldCorrectMacValue() { checkSavedMacRandomizedValue(WifiConfiguration.RANDOMIZATION_NONE); } private void checkSavedMacRandomizedValue(int macRandomizedValue) { when(mAccessPoint.isSaved()).thenReturn(true); final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class); when(mAccessPoint.getConfig()).thenReturn(mockWifiConfig); mockWifiConfig.macRandomizationSetting = macRandomizedValue; mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint, WifiConfigUiBase.MODE_CONNECT); final Spinner privacySetting = mView.findViewById(R.id.privacy_settings); final int expectedPrefValue = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( macRandomizedValue); assertThat(privacySetting.getVisibility()).isEqualTo(View.VISIBLE); assertThat(privacySetting.getSelectedItemPosition()).isEqualTo(expectedPrefValue); } @Test public void saveMacRandomizedValue_noChanged_shouldPersistentAsDefault() { WifiConfiguration config = mController.getConfig(); assertThat(config.macRandomizationSetting).isEqualTo( WifiConfiguration.RANDOMIZATION_PERSISTENT); } @Test public void saveMacRandomizedValue_ChangedToNone_shouldGetNone() { final Spinner privacySetting = mView.findViewById(R.id.privacy_settings); final int prefMacNone = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( WifiConfiguration.RANDOMIZATION_NONE); privacySetting.setSelection(prefMacNone); WifiConfiguration config = mController.getConfig(); assertThat(config.macRandomizationSetting).isEqualTo(WifiConfiguration.RANDOMIZATION_NONE); } } Loading
src/com/android/settings/wifi/WifiConfigController.java +11 −4 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settings.ProxySelector; import com.android.settings.R; import com.android.settings.wifi.details.WifiPrivacyPreferenceController; import com.android.settingslib.Utils; import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.wifi.AccessPoint; Loading Loading @@ -251,8 +252,6 @@ public class WifiConfigController implements TextWatcher, com.android.settings.core.FeatureFlags.WIFI_MAC_RANDOMIZATION)) { View privacySettingsLayout = mView.findViewById(R.id.privacy_settings_fields); privacySettingsLayout.setVisibility(View.VISIBLE); // Set default value mPrivacySettingsSpinner.setSelection(WifiConfiguration.RANDOMIZATION_PERSISTENT); } mHiddenSettingsSpinner.setOnItemSelectedListener(this); mHiddenWarningView = mView.findViewById(R.id.hidden_settings_warning); Loading Loading @@ -281,7 +280,12 @@ public class WifiConfigController implements TextWatcher, mHiddenSettingsSpinner.setSelection(config.hiddenSSID ? HIDDEN_NETWORK : NOT_HIDDEN_NETWORK); mPrivacySettingsSpinner.setSelection(config.macRandomizationSetting); final int prefMacValue = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( config.macRandomizationSetting); mPrivacySettingsSpinner.setSelection(prefMacValue); if (config.getIpAssignment() == IpAssignment.STATIC) { mIpSettingsSpinner.setSelection(STATIC_IP); showAdvancedFields = true; Loading Loading @@ -766,7 +770,10 @@ public class WifiConfigController implements TextWatcher, } if (mPrivacySettingsSpinner != null) { config.macRandomizationSetting = mPrivacySettingsSpinner.getSelectedItemPosition(); final int macValue = WifiPrivacyPreferenceController.translatePrefValueToMacRandomizedValue( mPrivacySettingsSpinner.getSelectedItemPosition()); config.macRandomizationSetting = macValue; } return config; Loading
src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java +23 −9 Original line number Diff line number Diff line Loading @@ -85,15 +85,29 @@ public class WifiPrivacyPreferenceController extends BasePreferenceController im return WifiConfiguration.RANDOMIZATION_PERSISTENT; } private final int PREF_RANDOMIZATION_PERSISTENT = 0; private final int PREF_RANDOMIZATION_NONE = 1; @VisibleForTesting protected int translateMacRandomizedValueToPrefValue(int macRandomized) { if (macRandomized == WifiConfiguration.RANDOMIZATION_PERSISTENT) { return PREF_RANDOMIZATION_PERSISTENT; } else { return PREF_RANDOMIZATION_NONE; private static final int PREF_RANDOMIZATION_PERSISTENT = 0; private static final int PREF_RANDOMIZATION_NONE = 1; /** * Returns preference index value. * * @param macRandomized is mac randomized value * @return index value of preference */ public static int translateMacRandomizedValueToPrefValue(int macRandomized) { return (macRandomized == WifiConfiguration.RANDOMIZATION_PERSISTENT) ? PREF_RANDOMIZATION_PERSISTENT : PREF_RANDOMIZATION_NONE; } /** * Returns mac randomized value. * * @param prefMacRandomized is preference index value * @return mac randomized value */ public static int translatePrefValueToMacRandomizedValue(int prefMacRandomized) { return (prefMacRandomized == PREF_RANDOMIZATION_PERSISTENT) ? WifiConfiguration.RANDOMIZATION_PERSISTENT : WifiConfiguration.RANDOMIZATION_NONE; } private void updateSummary(DropDownPreference preference, int macRandomized) { Loading
tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +59 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.ServiceSpecificException; import android.security.KeyStore; Loading @@ -39,6 +40,7 @@ import android.widget.TextView; import com.android.settings.R; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.wifi.details.WifiPrivacyPreferenceController; import com.android.settingslib.wifi.AccessPoint; import org.junit.Before; Loading Loading @@ -386,4 +388,61 @@ public class WifiConfigControllerTest { @Override KeyStore getKeyStore() { return mKeyStore; } } @Test public void loadMacRandomizedValue_shouldPersistentAsDefault() { final Spinner privacySetting = mView.findViewById(R.id.privacy_settings); final int prefPersist = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( WifiConfiguration.RANDOMIZATION_PERSISTENT); assertThat(privacySetting.getVisibility()).isEqualTo(View.VISIBLE); assertThat(privacySetting.getSelectedItemPosition()).isEqualTo(prefPersist); } @Test public void loadSavedMacRandomizedPersistentValue_shouldCorrectMacValue() { checkSavedMacRandomizedValue(WifiConfiguration.RANDOMIZATION_PERSISTENT); } @Test public void loadSavedMacRandomizedNoneValue_shouldCorrectMacValue() { checkSavedMacRandomizedValue(WifiConfiguration.RANDOMIZATION_NONE); } private void checkSavedMacRandomizedValue(int macRandomizedValue) { when(mAccessPoint.isSaved()).thenReturn(true); final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class); when(mAccessPoint.getConfig()).thenReturn(mockWifiConfig); mockWifiConfig.macRandomizationSetting = macRandomizedValue; mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint, WifiConfigUiBase.MODE_CONNECT); final Spinner privacySetting = mView.findViewById(R.id.privacy_settings); final int expectedPrefValue = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( macRandomizedValue); assertThat(privacySetting.getVisibility()).isEqualTo(View.VISIBLE); assertThat(privacySetting.getSelectedItemPosition()).isEqualTo(expectedPrefValue); } @Test public void saveMacRandomizedValue_noChanged_shouldPersistentAsDefault() { WifiConfiguration config = mController.getConfig(); assertThat(config.macRandomizationSetting).isEqualTo( WifiConfiguration.RANDOMIZATION_PERSISTENT); } @Test public void saveMacRandomizedValue_ChangedToNone_shouldGetNone() { final Spinner privacySetting = mView.findViewById(R.id.privacy_settings); final int prefMacNone = WifiPrivacyPreferenceController.translateMacRandomizedValueToPrefValue( WifiConfiguration.RANDOMIZATION_NONE); privacySetting.setSelection(prefMacNone); WifiConfiguration config = mController.getConfig(); assertThat(config.macRandomizationSetting).isEqualTo(WifiConfiguration.RANDOMIZATION_NONE); } }