Refine Wi-Fi privacy settings

- When changing two configurations, the configuration must be refreshed before modifying the second configuration to prevent the first configuration from being rolled back by the old configuration.

Fix: 360313149
Flag: EXEMPT bugfix
Test: Manual testing
atest -c WifiPrivacyPageProviderTest

Change-Id: If0e2c2b6a708fa59929b23409aff1254c6566fef
This commit is contained in:
Weng Su
2024-08-21 15:32:14 +08:00
parent 8cd5a449dd
commit 739fa3f4c3

View File

@@ -17,7 +17,6 @@
package com.android.settings.wifi.details2
import android.content.Context
import android.net.wifi.WifiConfiguration
import android.net.wifi.WifiManager
import android.os.Bundle
import android.os.Handler
@@ -114,19 +113,19 @@ fun WifiPrivacyPage(wifiEntry: WifiEntry) {
}
})
wifiEntry.wifiConfiguration?.let {
DeviceNameSwitchPreference(it)
DeviceNameSwitchPreference(wifiEntry)
}
}
}
}
@Composable
fun DeviceNameSwitchPreference(wifiConfiguration: WifiConfiguration){
fun DeviceNameSwitchPreference(wifiEntry: WifiEntry) {
Spacer(modifier = Modifier.width(SettingsDimension.itemDividerHeight))
CategoryTitle(title = stringResource(R.string.wifi_privacy_device_name_settings))
Spacer(modifier = Modifier.width(SettingsDimension.itemDividerHeight))
var checked by remember {
mutableStateOf(wifiConfiguration.isSendDhcpHostnameEnabled)
mutableStateOf(wifiEntry.wifiConfiguration?.isSendDhcpHostnameEnabled)
}
val context = LocalContext.current
val wifiManager = context.getSystemService(WifiManager::class.java)!!
@@ -143,9 +142,11 @@ fun DeviceNameSwitchPreference(wifiConfiguration: WifiConfiguration){
}
override val checked = { checked }
override val onCheckedChange: (Boolean) -> Unit = { newChecked ->
wifiConfiguration.isSendDhcpHostnameEnabled = newChecked
wifiManager.save(wifiConfiguration, null /* listener */)
checked = newChecked
wifiEntry.wifiConfiguration?.let {
it.isSendDhcpHostnameEnabled = newChecked
wifiManager.save(it, null /* listener */)
checked = newChecked
}
}
})
}