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

Commit a3b4d0d9 authored by Jernej Virag's avatar Jernej Virag Committed by Android (Google) Code Review
Browse files

Merge "Fix nullability issues in SettingsProxy classes" into main

parents 3eff26a9 d26385e0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ constructor(
            .map {
                secureSettings.getIntForUser(
                    name = Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
                    def = 0,
                    default = 0,
                    userHandle = UserHandle.USER_CURRENT,
                ) == 1
            }
+15 −16
Original line number Diff line number Diff line
@@ -336,7 +336,7 @@ interface SettingsProxy {
     * @param name to look up in the table
     * @return the corresponding value, or null if not present
     */
    fun getString(name: String): String
    fun getString(name: String): String?

    /**
     * Store a name/value pair into the database.
@@ -385,15 +385,15 @@ interface SettingsProxy {
     * an integer.
     *
     * @param name The name of the setting to retrieve.
     * @param def Value to return if the setting is not defined.
     * @return The setting's current value, or 'def' if it is not defined or not a valid integer.
     * @param default Value to return if the setting is not defined.
     * @return The setting's current value, or default if it is not defined or not a valid integer.
     */
    fun getInt(name: String, def: Int): Int {
    fun getInt(name: String, default: Int): Int {
        val v = getString(name)
        return try {
            v.toInt()
            v?.toInt() ?: default
        } catch (e: NumberFormatException) {
            def
            default
        }
    }

@@ -412,7 +412,7 @@ interface SettingsProxy {
     */
    @Throws(SettingNotFoundException::class)
    fun getInt(name: String): Int {
        val v = getString(name)
        val v = getString(name) ?: throw SettingNotFoundException(name)
        return try {
            v.toInt()
        } catch (e: NumberFormatException) {
@@ -441,11 +441,11 @@ interface SettingsProxy {
     * boolean.
     *
     * @param name The name of the setting to retrieve.
     * @param def Value to return if the setting is not defined.
     * @return The setting's current value, or 'def' if it is not defined or not a valid boolean.
     * @param default Value to return if the setting is not defined.
     * @return The setting's current value, or default if it is not defined or not a valid boolean.
     */
    fun getBool(name: String, def: Boolean): Boolean {
        return getInt(name, if (def) 1 else 0) != 0
    fun getBool(name: String, default: Boolean): Boolean {
        return getInt(name, if (default) 1 else 0) != 0
    }

    /**
@@ -579,13 +579,12 @@ interface SettingsProxy {
    companion object {
        /** Convert a string to a long, or uses a default if the string is malformed or null */
        @JvmStatic
        fun parseLongOrUseDefault(valString: String, def: Long): Long {
            val value: Long
            value =
        fun parseLongOrUseDefault(valString: String?, default: Long): Long {
            val value: Long =
                try {
                    valString.toLong()
                    valString?.toLong() ?: default
                } catch (e: NumberFormatException) {
                    def
                    default
                }
            return value
        }
+8 −8
Original line number Diff line number Diff line
@@ -354,12 +354,12 @@ interface UserSettingsProxy : SettingsProxy {
     * @param name to look up in the table
     * @return the corresponding value, or null if not present
     */
    override fun getString(name: String): String {
    override fun getString(name: String): String? {
        return getStringForUser(name, userId)
    }

    /** See [getString]. */
    fun getStringForUser(name: String, userHandle: Int): String
    fun getStringForUser(name: String, userHandle: Int): String?

    /**
     * Store a name/value pair into the database. Values written by this method will be overridden
@@ -388,17 +388,17 @@ interface UserSettingsProxy : SettingsProxy {
        overrideableByRestore: Boolean
    ): Boolean

    override fun getInt(name: String, def: Int): Int {
        return getIntForUser(name, def, userId)
    override fun getInt(name: String, default: Int): Int {
        return getIntForUser(name, default, userId)
    }

    /** Similar implementation to [getInt] for the specified [userHandle]. */
    fun getIntForUser(name: String, def: Int, userHandle: Int): Int {
    fun getIntForUser(name: String, default: Int, userHandle: Int): Int {
        val v = getStringForUser(name, userHandle)
        return try {
            v.toInt()
            v?.toInt() ?: default
        } catch (e: NumberFormatException) {
            def
            default
        }
    }

@@ -408,7 +408,7 @@ interface UserSettingsProxy : SettingsProxy {
    /** Similar implementation to [getInt] for the specified [userHandle]. */
    @Throws(SettingNotFoundException::class)
    fun getIntForUser(name: String, userHandle: Int): Int {
        val v = getStringForUser(name, userHandle)
        val v = getStringForUser(name, userHandle) ?: throw SettingNotFoundException(name)
        return try {
            v.toInt()
        } catch (e: NumberFormatException) {
+36 −0
Original line number Diff line number Diff line
@@ -274,6 +274,18 @@ class SettingsProxyTest : SysuiTestCase() {
        assertThat(mSettings.getInt(TEST_SETTING, 5)).isEqualTo(5)
    }

    @Test
    fun getInt_keyMalformed_returnDefaultValue() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThat(mSettings.getInt(TEST_SETTING, 5)).isEqualTo(5)
    }

    @Test
    fun getInt_keyMalformed_throwException() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThrows(SettingNotFoundException::class.java) { mSettings.getInt(TEST_SETTING) }
    }

    @Test
    fun getBool_keyPresent_returnValidValue() {
        mSettings.putBool(TEST_SETTING, true)
@@ -322,6 +334,18 @@ class SettingsProxyTest : SysuiTestCase() {
        assertThat(mSettings.getLong(TEST_SETTING, 2L)).isEqualTo(2L)
    }

    @Test
    fun getLong_keyMalformed_throwException() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThrows(SettingNotFoundException::class.java) { mSettings.getLong(TEST_SETTING) }
    }

    @Test
    fun getLong_keyMalformed_returnDefaultValue() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThat(mSettings.getLong(TEST_SETTING, 2L)).isEqualTo(2L)
    }

    @Test
    fun getFloat_keyPresent_returnValidValue() {
        mSettings.putFloat(TEST_SETTING, 2.5F)
@@ -346,6 +370,18 @@ class SettingsProxyTest : SysuiTestCase() {
        assertThat(mSettings.getFloat(TEST_SETTING, 2.5F)).isEqualTo(2.5F)
    }

    @Test
    fun getFloat_keyMalformed_throwException() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThrows(SettingNotFoundException::class.java) { mSettings.getFloat(TEST_SETTING) }
    }

    @Test
    fun getFloat_keyMalformed_returnDefaultValue() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThat(mSettings.getFloat(TEST_SETTING, 2.5F)).isEqualTo(2.5F)
    }

    private class FakeSettingsProxy(val testDispatcher: CoroutineDispatcher) : SettingsProxy {

        private val mContentResolver = mock(ContentResolver::class.java)
+37 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.net.Uri
import android.os.Handler
import android.os.Looper
import android.provider.Settings
import android.provider.Settings.SettingNotFoundException
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -432,6 +433,18 @@ class UserSettingsProxyTest : SysuiTestCase() {
        assertThat(mSettings.getInt(TEST_SETTING, 5)).isEqualTo(5)
    }

    @Test
    fun getInt_keyMalformed_returnDefaultValue() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThat(mSettings.getInt(TEST_SETTING, 5)).isEqualTo(5)
    }

    @Test
    fun getInt_keyMalformed_throwException() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThrows(SettingNotFoundException::class.java) { mSettings.getInt(TEST_SETTING) }
    }

    @Test
    fun getIntForUser_multipleUsers__validResult() {
        mSettings.putIntForUser(TEST_SETTING, 1, MAIN_USER_ID)
@@ -500,6 +513,18 @@ class UserSettingsProxyTest : SysuiTestCase() {
        assertThat(mSettings.getLong(TEST_SETTING, 2L)).isEqualTo(2L)
    }

    @Test
    fun getLong_keyMalformed_throwException() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThrows(SettingNotFoundException::class.java) { mSettings.getLong(TEST_SETTING) }
    }

    @Test
    fun getLong_keyMalformed_returnDefaultValue() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThat(mSettings.getLong(TEST_SETTING, 2L)).isEqualTo(2L)
    }

    @Test
    fun getLongForUser_multipleUsers__validResult() {
        mSettings.putLongForUser(TEST_SETTING, 1L, MAIN_USER_ID)
@@ -534,6 +559,18 @@ class UserSettingsProxyTest : SysuiTestCase() {
        assertThat(mSettings.getFloat(TEST_SETTING, 2.5F)).isEqualTo(2.5F)
    }

    @Test
    fun getFloat_keyMalformed_throwException() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThrows(SettingNotFoundException::class.java) { mSettings.getFloat(TEST_SETTING) }
    }

    @Test
    fun getFloat_keyMalformed_returnDefaultValue() {
        mSettings.putString(TEST_SETTING, "nan")
        assertThat(mSettings.getFloat(TEST_SETTING, 2.5F)).isEqualTo(2.5F)
    }

    @Test
    fun getFloatForUser_multipleUsers__validResult() {
        mSettings.putFloatForUser(TEST_SETTING, 1F, MAIN_USER_ID)
Loading