Add dhcp in advanced settings toggle.
Test: Unit Test Fix: 329002870 Change-Id: I5c57deb1e8ed0dd59a7699b56f5eb99ca29876b8
This commit is contained in:
@@ -708,6 +708,13 @@
|
||||
style="@style/wifi_item_spinner"
|
||||
android:prompt="@string/wifi_privacy_settings"
|
||||
android:entries="@array/wifi_privacy_entries"/>
|
||||
|
||||
<Spinner android:id="@+id/dhcp_settings"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/wifi_item_spinner"
|
||||
android:prompt="@string/wifi_privacy_device_name_settings"
|
||||
android:entries="@array/wifi_dhcp_entries"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
@@ -1078,6 +1078,11 @@
|
||||
<item>Use device MAC</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="wifi_dhcp_entries">
|
||||
<item>Send device name to network</item>
|
||||
<item>Don\u0027t send device name to network</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="wifi_hidden_entries">
|
||||
<item>No</item>
|
||||
<item>Yes</item>
|
||||
|
@@ -72,6 +72,7 @@ import com.android.settings.ProxySelector;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.SubscriptionUtil;
|
||||
import com.android.settings.utils.AndroidKeystoreAliasLoader;
|
||||
import com.android.settings.wifi.details2.WifiPrivacyPreferenceController;
|
||||
import com.android.settings.wifi.dpp.WifiDppUtils;
|
||||
import com.android.settingslib.Utils;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
@@ -154,6 +155,10 @@ public class WifiConfigController implements TextWatcher,
|
||||
@VisibleForTesting static final int PRIVACY_SPINNER_INDEX_RANDOMIZED_MAC = 0;
|
||||
@VisibleForTesting static final int PRIVACY_SPINNER_INDEX_DEVICE_MAC = 1;
|
||||
|
||||
// Should be the same index value as wifi_dhcp_entries in arrays.xml
|
||||
@VisibleForTesting static final int DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_ENABLE = 0;
|
||||
@VisibleForTesting static final int DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_DISABLE = 1;
|
||||
|
||||
/* Phase2 methods supported by PEAP are limited */
|
||||
private ArrayAdapter<CharSequence> mPhase2PeapAdapter;
|
||||
/* Phase2 methods supported by TTLS are limited */
|
||||
@@ -194,6 +199,7 @@ public class WifiConfigController implements TextWatcher,
|
||||
private Spinner mMeteredSettingsSpinner;
|
||||
private Spinner mHiddenSettingsSpinner;
|
||||
private Spinner mPrivacySettingsSpinner;
|
||||
private Spinner mDhcpSettingsSpinner;
|
||||
private TextView mHiddenWarningView;
|
||||
private TextView mProxyHostView;
|
||||
private TextView mProxyPortView;
|
||||
@@ -291,6 +297,7 @@ public class WifiConfigController implements TextWatcher,
|
||||
mMeteredSettingsSpinner = mView.findViewById(R.id.metered_settings);
|
||||
mHiddenSettingsSpinner = mView.findViewById(R.id.hidden_settings);
|
||||
mPrivacySettingsSpinner = mView.findViewById(R.id.privacy_settings);
|
||||
mDhcpSettingsSpinner = mView.findViewById(R.id.dhcp_settings);
|
||||
if (mWifiManager.isConnectedMacRandomizationSupported()) {
|
||||
View privacySettingsLayout = mView.findViewById(R.id.privacy_settings_fields);
|
||||
privacySettingsLayout.setVisibility(View.VISIBLE);
|
||||
@@ -323,6 +330,12 @@ public class WifiConfigController implements TextWatcher,
|
||||
config.macRandomizationSetting == WifiConfiguration.RANDOMIZATION_PERSISTENT
|
||||
? PRIVACY_SPINNER_INDEX_RANDOMIZED_MAC : PRIVACY_SPINNER_INDEX_DEVICE_MAC);
|
||||
|
||||
mDhcpSettingsSpinner.setSelection(
|
||||
config.isSendDhcpHostnameEnabled()
|
||||
? DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_ENABLE :
|
||||
DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_DISABLE
|
||||
);
|
||||
|
||||
if (config.getIpConfiguration().getIpAssignment() == IpAssignment.STATIC) {
|
||||
mIpSettingsSpinner.setSelection(STATIC_IP);
|
||||
showAdvancedFields = true;
|
||||
@@ -841,6 +854,12 @@ public class WifiConfigController implements TextWatcher,
|
||||
: WifiConfiguration.RANDOMIZATION_NONE;
|
||||
}
|
||||
|
||||
if (mDhcpSettingsSpinner != null) {
|
||||
config.setSendDhcpHostnameEnabled(WifiPrivacyPreferenceController.Companion
|
||||
.translatePrefValueToSendDhcpHostnameEnabled(mDhcpSettingsSpinner
|
||||
.getSelectedItemPosition()));
|
||||
}
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
|
@@ -74,6 +74,7 @@ import com.android.settings.ProxySelector;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.SubscriptionUtil;
|
||||
import com.android.settings.utils.AndroidKeystoreAliasLoader;
|
||||
import com.android.settings.wifi.details2.WifiPrivacyPreferenceController;
|
||||
import com.android.settings.wifi.details2.WifiPrivacyPreferenceController2;
|
||||
import com.android.settings.wifi.dpp.WifiDppUtils;
|
||||
import com.android.settingslib.Utils;
|
||||
@@ -208,6 +209,8 @@ public class WifiConfigController2 implements TextWatcher,
|
||||
private Spinner mHiddenSettingsSpinner;
|
||||
@Nullable
|
||||
private Spinner mPrivacySettingsSpinner;
|
||||
@Nullable
|
||||
private Spinner mDhcpSettingsSpinner;
|
||||
private TextView mHiddenWarningView;
|
||||
private TextView mProxyHostView;
|
||||
private TextView mProxyPortView;
|
||||
@@ -308,6 +311,7 @@ public class WifiConfigController2 implements TextWatcher,
|
||||
mHiddenSettingsSpinner = mView.findViewById(R.id.hidden_settings);
|
||||
if (!mHideMeteredAndPrivacy && mWifiManager.isConnectedMacRandomizationSupported()) {
|
||||
mPrivacySettingsSpinner = mView.findViewById(R.id.privacy_settings);
|
||||
mDhcpSettingsSpinner = mView.findViewById(R.id.dhcp_settings);
|
||||
mView.findViewById(R.id.privacy_settings_fields).setVisibility(View.VISIBLE);
|
||||
}
|
||||
mHiddenSettingsSpinner.setOnItemSelectedListener(this);
|
||||
@@ -342,6 +346,13 @@ public class WifiConfigController2 implements TextWatcher,
|
||||
mPrivacySettingsSpinner.setSelection(prefMacValue);
|
||||
}
|
||||
|
||||
if (mDhcpSettingsSpinner != null) {
|
||||
final int prefDhcpValue = WifiPrivacyPreferenceController.Companion
|
||||
.translateSendDhcpHostnameEnabledToPrefValue(
|
||||
config.isSendDhcpHostnameEnabled());
|
||||
mDhcpSettingsSpinner.setSelection(prefDhcpValue);
|
||||
}
|
||||
|
||||
if (config.getIpConfiguration().getIpAssignment() == IpAssignment.STATIC) {
|
||||
mIpSettingsSpinner.setSelection(STATIC_IP);
|
||||
showAdvancedFields = true;
|
||||
@@ -854,6 +865,12 @@ public class WifiConfigController2 implements TextWatcher,
|
||||
.getSelectedItemPosition());
|
||||
}
|
||||
|
||||
if (mDhcpSettingsSpinner != null) {
|
||||
config.setSendDhcpHostnameEnabled(WifiPrivacyPreferenceController.Companion
|
||||
.translatePrefValueToSendDhcpHostnameEnabled(mDhcpSettingsSpinner
|
||||
.getSelectedItemPosition()));
|
||||
}
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
|
@@ -63,4 +63,32 @@ class WifiPrivacyPreferenceController(context: Context, preferenceKey: String) :
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val PREF_SEND_DHCP_HOST_NAME_ENABLE = 0
|
||||
private const val PREF_SEND_DHCP_HOST_NAME_DISABLE = 1
|
||||
|
||||
/**
|
||||
* Returns preference index value.
|
||||
*
|
||||
* @param isSendDhcpHostnameEnabled determines whether device name can be sent.
|
||||
* @return index value of preference
|
||||
*/
|
||||
fun translateSendDhcpHostnameEnabledToPrefValue(
|
||||
isSendDhcpHostnameEnabled: Boolean
|
||||
): Int {
|
||||
return if (isSendDhcpHostnameEnabled) PREF_SEND_DHCP_HOST_NAME_ENABLE
|
||||
else PREF_SEND_DHCP_HOST_NAME_DISABLE
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether device name can be sent.
|
||||
*
|
||||
* @param prefDhcpRandomized is preference index value
|
||||
* @return is send dhcp host name enabled
|
||||
*/
|
||||
fun translatePrefValueToSendDhcpHostnameEnabled(prefDhcpRandomized: Int): Boolean {
|
||||
return prefDhcpRandomized == PREF_SEND_DHCP_HOST_NAME_ENABLE
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import static com.android.settings.wifi.WifiConfigController.DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_DISABLE;
|
||||
import static com.android.settings.wifi.WifiConfigController2.DEFAULT_ANONYMOUS_ID;
|
||||
import static com.android.settings.wifi.WifiConfigController2.WIFI_EAP_METHOD_SIM;
|
||||
|
||||
@@ -56,6 +57,7 @@ import android.widget.TextView;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.SubscriptionUtil;
|
||||
import com.android.settings.utils.AndroidKeystoreAliasLoader;
|
||||
import com.android.settings.wifi.details2.WifiPrivacyPreferenceController;
|
||||
import com.android.settings.wifi.details2.WifiPrivacyPreferenceController2;
|
||||
import com.android.wifitrackerlib.WifiEntry;
|
||||
|
||||
@@ -512,6 +514,42 @@ public class WifiConfigController2Test {
|
||||
assertThat(config.macRandomizationSetting).isEqualTo(WifiConfiguration.RANDOMIZATION_NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadSavedDhcpValue_true() {
|
||||
checkSavedDhcpValue(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadSavedDhcpValue_false() {
|
||||
checkSavedDhcpValue(false);
|
||||
}
|
||||
|
||||
private void checkSavedDhcpValue(boolean dhcpValue) {
|
||||
when(mWifiEntry.isSaved()).thenReturn(true);
|
||||
final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class);
|
||||
when(mockWifiConfig.getIpConfiguration()).thenReturn(mock(IpConfiguration.class));
|
||||
when(mockWifiConfig.isSendDhcpHostnameEnabled()).thenReturn(dhcpValue);
|
||||
when(mWifiEntry.getWifiConfiguration()).thenReturn(mockWifiConfig);
|
||||
createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
|
||||
final Spinner dhcpSetting = mView.findViewById(R.id.dhcp_settings);
|
||||
final int expectedPrefValue =
|
||||
WifiPrivacyPreferenceController.Companion
|
||||
.translateSendDhcpHostnameEnabledToPrefValue(dhcpValue);
|
||||
|
||||
assertThat(dhcpSetting.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
assertThat(dhcpSetting.getSelectedItemPosition()).isEqualTo(expectedPrefValue);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveDhcpValue_changedToFalse() {
|
||||
createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
|
||||
final Spinner privacySetting = mView.findViewById(R.id.dhcp_settings);
|
||||
privacySetting.setSelection(DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_DISABLE);
|
||||
|
||||
WifiConfiguration config = mController.getConfig();
|
||||
assertThat(config.isSendDhcpHostnameEnabled()).isEqualTo(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void replaceTtsString_whenTargetMatched_shouldSuccess() {
|
||||
createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
|
||||
|
@@ -18,6 +18,8 @@ package com.android.settings.wifi;
|
||||
|
||||
import static com.android.settings.wifi.WifiConfigController.PRIVACY_SPINNER_INDEX_DEVICE_MAC;
|
||||
import static com.android.settings.wifi.WifiConfigController.PRIVACY_SPINNER_INDEX_RANDOMIZED_MAC;
|
||||
import static com.android.settings.wifi.WifiConfigController.DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_ENABLE;
|
||||
import static com.android.settings.wifi.WifiConfigController.DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_DISABLE;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@@ -450,6 +452,41 @@ public class WifiConfigControllerTest {
|
||||
assertThat(config.macRandomizationSetting).isEqualTo(WifiConfiguration.RANDOMIZATION_NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadSavedDhcpValue_true() {
|
||||
checkSavedDhcpValue(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadSavedDhcpValue_false() {
|
||||
checkSavedDhcpValue(false);
|
||||
}
|
||||
|
||||
private void checkSavedDhcpValue(boolean dhcpValue) {
|
||||
when(mAccessPoint.isSaved()).thenReturn(true);
|
||||
final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class);
|
||||
when(mockWifiConfig.getIpConfiguration()).thenReturn(mock(IpConfiguration.class));
|
||||
when(mockWifiConfig.isSendDhcpHostnameEnabled()).thenReturn(dhcpValue);
|
||||
when(mAccessPoint.getConfig()).thenReturn(mockWifiConfig);
|
||||
mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint,
|
||||
WifiConfigUiBase.MODE_CONNECT);
|
||||
final Spinner dhcpSetting = mView.findViewById(R.id.dhcp_settings);
|
||||
|
||||
assertThat(dhcpSetting.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
assertThat(dhcpSetting.getSelectedItemPosition()).isEqualTo(
|
||||
dhcpValue ? DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_ENABLE :
|
||||
DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_DISABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveDhcpValue_changedToFalse() {
|
||||
final Spinner privacySetting = mView.findViewById(R.id.dhcp_settings);
|
||||
privacySetting.setSelection(DHCP_SPINNER_INDEX_SEND_DHCP_HOST_NAME_DISABLE);
|
||||
|
||||
WifiConfiguration config = mController.getConfig();
|
||||
assertThat(config.isSendDhcpHostnameEnabled()).isEqualTo(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void replaceTtsString_whenTargetMatched_shouldSuccess() {
|
||||
final CharSequence[] display = {"PEAP", "AKA1", "AKA2'"};
|
||||
|
Reference in New Issue
Block a user