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

Commit f0cf72c9 authored by Jernej Virag's avatar Jernej Virag
Browse files

Have async FakeSettings methods advance the dispatcher

This avoids having to write a lot of testScope.runCurrent invocations after the underlying code runs async/suspend functions.
It makes testing significantly easier for users.

Bug: 327558308
Flag: TEST_ONLY
Test: atest SystemUITests FakeSettingsTest
Change-Id: I1b4140e11f578f7320a3867346f2718568d07aee
parent 872ecd29
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -42,28 +42,31 @@ class GlobalSettingsImpl implements GlobalSettings {
        mBgDispatcher = bgDispatcher;
    }

    @NonNull
    @Override
    public ContentResolver getContentResolver() {
        return mContentResolver;
    }

    @NonNull
    @Override
    public Uri getUriFor(String name) {
    public Uri getUriFor(@NonNull String name) {
        return Settings.Global.getUriFor(name);
    }

    @NonNull
    @Override
    public CoroutineDispatcher getBackgroundDispatcher() {
        return mBgDispatcher;
    }

    @Override
    public String getString(String name) {
    public String getString(@NonNull String name) {
        return Settings.Global.getString(mContentResolver, name);
    }

    @Override
    public boolean putString(String name, String value) {
    public boolean putString(@NonNull String name, String value) {
        return Settings.Global.putString(mContentResolver, name, value);
    }

+11 −8
Original line number Diff line number Diff line
@@ -16,12 +16,11 @@

package com.android.systemui.util.settings;

import android.annotation.NonNull;
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.Settings;

import androidx.annotation.NonNull;

import com.android.systemui.util.kotlin.SettingsSingleThreadBackground;

import kotlinx.coroutines.CoroutineDispatcher;
@@ -43,46 +42,50 @@ class SecureSettingsImpl implements SecureSettings {
        mBgDispatcher = bgDispatcher;
    }

    @NonNull
    @Override
    public ContentResolver getContentResolver() {
        return mContentResolver;
    }

    @NonNull
    @Override
    public CurrentUserIdProvider getCurrentUserProvider() {
        return mCurrentUserProvider;
    }

    @NonNull
    @Override
    public Uri getUriFor(String name) {
    public Uri getUriFor(@NonNull String name) {
        return Settings.Secure.getUriFor(name);
    }

    @NonNull
    @Override
    public CoroutineDispatcher getBackgroundDispatcher() {
        return mBgDispatcher;
    }

    @Override
    public String getStringForUser(String name, int userHandle) {
    public String getStringForUser(@NonNull String name, int userHandle) {
        return Settings.Secure.getStringForUser(mContentResolver, name,
                getRealUserHandle(userHandle));
    }

    @Override
    public boolean putString(String name, String value, boolean overrideableByRestore) {
    public boolean putString(@NonNull String name, String value, boolean overrideableByRestore) {
        return Settings.Secure.putString(mContentResolver, name, value, overrideableByRestore);
    }

    @Override
    public boolean putStringForUser(String name, String value, int userHandle) {
    public boolean putStringForUser(@NonNull String name, String value, int userHandle) {
        return Settings.Secure.putStringForUser(mContentResolver, name, value,
                getRealUserHandle(userHandle));
    }

    @Override
    public boolean putStringForUser(String name, String value, String tag, boolean makeDefault,
            int userHandle, boolean overrideableByRestore) {
    public boolean putStringForUser(@NonNull String name, String value, String tag,
            boolean makeDefault, int userHandle, boolean overrideableByRestore) {
        return Settings.Secure.putStringForUser(
                mContentResolver, name, value, tag, makeDefault, getRealUserHandle(userHandle),
                overrideableByRestore);
+2 −2
Original line number Diff line number Diff line
@@ -346,7 +346,7 @@ interface SettingsProxy {
     * @param value to associate with the name
     * @return true if the value was set, false on database errors
     */
    fun putString(name: String, value: String): Boolean
    fun putString(name: String, value: String?): Boolean

    /**
     * Store a name/value pair into the database.
@@ -377,7 +377,7 @@ interface SettingsProxy {
     * @return true if the value was set, false on database errors.
     * @see .resetToDefaults
     */
    fun putString(name: String, value: String, tag: String, makeDefault: Boolean): Boolean
    fun putString(name: String, value: String?, tag: String?, makeDefault: Boolean): Boolean

    /**
     * Convenience function for retrieving a single secure settings value as an integer. Note that
+11 −8
Original line number Diff line number Diff line
@@ -16,12 +16,11 @@

package com.android.systemui.util.settings;

import android.annotation.NonNull;
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.Settings;

import androidx.annotation.NonNull;

import com.android.systemui.util.kotlin.SettingsSingleThreadBackground;

import kotlinx.coroutines.CoroutineDispatcher;
@@ -42,46 +41,50 @@ class SystemSettingsImpl implements SystemSettings {
        mBgCoroutineDispatcher = bgDispatcher;
    }

    @NonNull
    @Override
    public ContentResolver getContentResolver() {
        return mContentResolver;
    }

    @NonNull
    @Override
    public CurrentUserIdProvider getCurrentUserProvider() {
        return mCurrentUserProvider;
    }

    @NonNull
    @Override
    public Uri getUriFor(String name) {
    public Uri getUriFor(@NonNull String name) {
        return Settings.System.getUriFor(name);
    }

    @NonNull
    @Override
    public CoroutineDispatcher getBackgroundDispatcher() {
        return mBgCoroutineDispatcher;
    }

    @Override
    public String getStringForUser(String name, int userHandle) {
    public String getStringForUser(@NonNull String name, int userHandle) {
        return Settings.System.getStringForUser(mContentResolver, name,
                getRealUserHandle(userHandle));
    }

    @Override
    public boolean putString(String name, String value, boolean overrideableByRestore) {
    public boolean putString(@NonNull String name, String value, boolean overrideableByRestore) {
        return Settings.System.putString(mContentResolver, name, value, overrideableByRestore);
    }

    @Override
    public boolean putStringForUser(String name, String value, int userHandle) {
    public boolean putStringForUser(@NonNull String name, String value, int userHandle) {
        return Settings.System.putStringForUser(mContentResolver, name, value,
                getRealUserHandle(userHandle));
    }

    @Override
    public boolean putStringForUser(String name, String value, String tag, boolean makeDefault,
            int userHandle, boolean overrideableByRestore) {
    public boolean putStringForUser(@NonNull String name, String value, String tag,
            boolean makeDefault, int userHandle, boolean overrideableByRestore) {
        throw new UnsupportedOperationException(
                "This method only exists publicly for Settings.Secure and Settings.Global");
    }
+4 −4
Original line number Diff line number Diff line
@@ -368,19 +368,19 @@ interface UserSettingsProxy : SettingsProxy {
     * @param value to associate with the name
     * @return true if the value was set, false on database errors
     */
    fun putString(name: String, value: String, overrideableByRestore: Boolean): Boolean
    fun putString(name: String, value: String?, overrideableByRestore: Boolean): Boolean

    override fun putString(name: String, value: String): Boolean {
    override fun putString(name: String, value: String?): Boolean {
        return putStringForUser(name, value, userId)
    }

    /** Similar implementation to [putString] for the specified [userHandle]. */
    fun putStringForUser(name: String, value: String, userHandle: Int): Boolean
    fun putStringForUser(name: String, value: String?, userHandle: Int): Boolean

    /** Similar implementation to [putString] for the specified [userHandle]. */
    fun putStringForUser(
        name: String,
        value: String,
        value: String?,
        tag: String?,
        makeDefault: Boolean,
        @UserIdInt userHandle: Int,
Loading