Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db3b6ee0 authored by Jacky Wang's avatar Jacky Wang
Browse files

Simplify settings datastore calls

NO_IFTTT=Code refactor

Bug: 364899400
Flag: EXEMPT test
Test: atest DialPadTonePreferenceTest
Change-Id: Ifb4ab11e07b37952dfb3cc78d25383d563d5749d
parent 4d19f455
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -22,12 +22,12 @@ 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)
+10 −11
Original line number Diff line number Diff line
@@ -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)