Simplify settings datastore calls

NO_IFTTT=Code refactor

Bug: 364899400
Flag: EXEMPT test
Test: atest DialPadTonePreferenceTest
Change-Id: Ifb4ab11e07b37952dfb3cc78d25383d563d5749d
This commit is contained in:
Jacky Wang
2024-10-16 22:24:28 +08:00
parent 4d19f45505
commit db3b6ee073
2 changed files with 13 additions and 14 deletions

View File

@@ -22,14 +22,14 @@ import com.android.settings.Utils
import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.SwitchPreference
import com.android.settingslib.preference.SwitchPreferenceBinding
// LINT.IfChange
class DialPadTonePreference :
SwitchPreference(DTMF_TONE_WHEN_DIALING, R.string.dial_pad_tones_title),
SwitchPreferenceBinding, PreferenceAvailabilityProvider {
PreferenceAvailabilityProvider {
override fun storage(context: Context) = SettingsSystemStore.get(context)
override fun isAvailable(context: Context) = Utils.isVoiceCapable(context)
}
// LINT.ThenChange(DialPadTonePreferenceController.java)
// LINT.ThenChange(DialPadTonePreferenceController.java)

View File

@@ -23,6 +23,7 @@ import androidx.preference.SwitchPreferenceCompat
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.preference.DefaultPreferenceBindingFactory
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
@@ -61,7 +62,7 @@ class DialPadTonePreferenceTest {
@Test
fun performClick_shouldPreferenceChangeToChecked() {
setDialPadToneEnabled(false)
enableDialPadTone(false)
val preference = getSwitchPreference().apply { performClick() }
@@ -70,7 +71,7 @@ class DialPadTonePreferenceTest {
@Test
fun performClick_shouldPreferenceChangeToUnchecked() {
setDialPadToneEnabled(true)
enableDialPadTone(true)
val preference = getSwitchPreference().apply { performClick() }
@@ -79,28 +80,26 @@ class DialPadTonePreferenceTest {
@Test
fun dialToneEnabled_shouldCheckedPreference() {
setDialPadToneEnabled(true)
enableDialPadTone(true)
assertThat(getSwitchPreference().isChecked).isTrue()
}
@Test
fun dialToneDisabled_shouldUncheckedPreference() {
setDialPadToneEnabled(false)
enableDialPadTone(false)
assertThat(getSwitchPreference().isChecked).isFalse()
}
private fun getSwitchPreference(): SwitchPreferenceCompat =
dialPadTonePreference.run {
DefaultPreferenceBindingFactory.getPreferenceBinding(dialPadTonePreference).run {
val preference = createWidget(context)
bind(preference, this)
bind(preference, dialPadTonePreference)
preference as SwitchPreferenceCompat
}
private fun setDialPadToneEnabled(enabled: Boolean) {
SettingsSystemStore.get(context)
.setValue(DTMF_TONE_WHEN_DIALING, Boolean::class.javaObjectType, enabled)
}
private fun enableDialPadTone(enabled: Boolean) =
SettingsSystemStore.get(context).setBoolean(DTMF_TONE_WHEN_DIALING, enabled)
}
// LINT.ThenChange(DialPadTonePreferenceControllerTest.java)
// LINT.ThenChange(DialPadTonePreferenceControllerTest.java)