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,12 +22,12 @@ import com.android.settings.Utils
import com.android.settingslib.datastore.SettingsSystemStore import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.SwitchPreference import com.android.settingslib.metadata.SwitchPreference
import com.android.settingslib.preference.SwitchPreferenceBinding
// LINT.IfChange // LINT.IfChange
class DialPadTonePreference : class DialPadTonePreference :
SwitchPreference(DTMF_TONE_WHEN_DIALING, R.string.dial_pad_tones_title), SwitchPreference(DTMF_TONE_WHEN_DIALING, R.string.dial_pad_tones_title),
SwitchPreferenceBinding, PreferenceAvailabilityProvider { PreferenceAvailabilityProvider {
override fun storage(context: Context) = SettingsSystemStore.get(context) override fun storage(context: Context) = SettingsSystemStore.get(context)
override fun isAvailable(context: Context) = Utils.isVoiceCapable(context) override fun isAvailable(context: Context) = Utils.isVoiceCapable(context)

View File

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