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

Commit 9cb01915 authored by Priyanka Advani (xWF)'s avatar Priyanka Advani (xWF) Committed by Android (Google) Code Review
Browse files

Merge "Revert^2 "Fix nullability issues in SettingsProxy classes"" into main

parents c40aeb2f 0900ad67
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