Add dhcp in advanced settings toggle.

Test: Unit Test
Fix: 329002870
Change-Id: I5c57deb1e8ed0dd59a7699b56f5eb99ca29876b8
This commit is contained in:
Charlotte Lu
2024-03-11 11:28:41 +08:00
parent 46369353ed
commit 08f8f0ce9e
7 changed files with 151 additions and 0 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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
}
}
}