summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-11-16 09:28:39 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-11-16 09:28:39 +0000
commit4044f94dea79bbffaccc1c5fd8be8259fce6b194 (patch)
tree0060e2c76ac8880cb7bc6a5851a31dbfa14c4156
parented1117385223afc36499db86f9cec15ad9ea820e (diff)
parentf33c358436e874fa39113ef1a8846221454b06f4 (diff)
Merge changes from topic "settings-proxy-coroutinescope" into main
* changes: Cache CoroutineScope for settings APIs Apply new code formatting to SettingsProxy
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt26
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt82
-rw-r--r--packages/SystemUI/pods/com/android/systemui/util/settings/GlobalSettingsImpl.java12
-rw-r--r--packages/SystemUI/pods/com/android/systemui/util/settings/SecureSettingsImpl.java12
-rw-r--r--packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt57
-rw-r--r--packages/SystemUI/pods/com/android/systemui/util/settings/SystemSettingsImpl.java12
-rw-r--r--packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt58
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/kotlin/SysUICoroutinesModule.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettings.java17
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettingsKosmos.kt9
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.kt54
11 files changed, 193 insertions, 169 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt
index 2e6d0fc847bb..e25bf13c41f2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt
@@ -27,7 +27,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -57,7 +57,7 @@ class SettingsProxyTest : SysuiTestCase() {
@Before
fun setUp() {
testScope = TestScope(testDispatcher)
- mSettings = FakeSettingsProxy(testDispatcher)
+ mSettings = FakeSettingsProxy(testScope)
mContentObserver = object : ContentObserver(Handler(Looper.getMainLooper())) {}
}
@@ -92,7 +92,7 @@ class SettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserverSync(
TEST_SETTING,
notifyForDescendants = true,
- mContentObserver
+ mContentObserver,
)
verify(mSettings.getContentResolver())
.registerContentObserver(eq(TEST_SETTING_URI), eq(true), eq(mContentObserver))
@@ -104,7 +104,7 @@ class SettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserver(
TEST_SETTING,
notifyForDescendants = true,
- mContentObserver
+ mContentObserver,
)
verify(mSettings.getContentResolver())
.registerContentObserver(eq(TEST_SETTING_URI), eq(true), eq(mContentObserver))
@@ -116,7 +116,7 @@ class SettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserverAsync(
TEST_SETTING,
notifyForDescendants = true,
- mContentObserver
+ mContentObserver,
)
testScope.advanceUntilIdle()
verify(mSettings.getContentResolver())
@@ -154,7 +154,7 @@ class SettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserverSync(
TEST_SETTING_URI,
notifyForDescendants = true,
- mContentObserver
+ mContentObserver,
)
verify(mSettings.getContentResolver())
.registerContentObserver(eq(TEST_SETTING_URI), eq(true), eq(mContentObserver))
@@ -166,7 +166,7 @@ class SettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserver(
TEST_SETTING_URI,
notifyForDescendants = true,
- mContentObserver
+ mContentObserver,
)
verify(mSettings.getContentResolver())
.registerContentObserver(eq(TEST_SETTING_URI), eq(true), eq(mContentObserver))
@@ -178,7 +178,7 @@ class SettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserverAsync(
TEST_SETTING_URI,
notifyForDescendants = true,
- mContentObserver
+ mContentObserver,
)
testScope.advanceUntilIdle()
verify(mSettings.getContentResolver())
@@ -202,7 +202,7 @@ class SettingsProxyTest : SysuiTestCase() {
TEST_SETTING_URI,
false,
mContentObserver,
- it
+ it,
)
}
}
@@ -382,15 +382,15 @@ class SettingsProxyTest : SysuiTestCase() {
assertThat(mSettings.getFloat(TEST_SETTING, 2.5F)).isEqualTo(2.5F)
}
- private class FakeSettingsProxy(val testDispatcher: CoroutineDispatcher) : SettingsProxy {
+ private class FakeSettingsProxy(val testScope: CoroutineScope) : SettingsProxy {
private val mContentResolver = mock(ContentResolver::class.java)
private val settingToValueMap: MutableMap<String, String?> = mutableMapOf()
override fun getContentResolver() = mContentResolver
- override val backgroundDispatcher: CoroutineDispatcher
- get() = testDispatcher
+ override val settingsScope: CoroutineScope
+ get() = testScope
override fun getUriFor(name: String) =
Uri.parse(StringBuilder().append("content://settings/").append(name).toString())
@@ -408,7 +408,7 @@ class SettingsProxyTest : SysuiTestCase() {
name: String,
value: String?,
tag: String?,
- makeDefault: Boolean
+ makeDefault: Boolean,
): Boolean {
settingToValueMap[name] = value
return true
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt
index 00b8cd04bdaf..5787f7dfc61f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt
@@ -28,7 +28,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -36,7 +36,6 @@ import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertThrows
-import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.mock
@@ -51,14 +50,9 @@ class UserSettingsProxyTest : SysuiTestCase() {
private var userId = MAIN_USER_ID
private val testDispatcher = StandardTestDispatcher()
- private var mSettings: UserSettingsProxy = FakeUserSettingsProxy({ userId }, testDispatcher)
+ private val testScope = TestScope(testDispatcher)
+ private var mSettings: UserSettingsProxy = FakeUserSettingsProxy({ userId }, testScope)
private var mContentObserver = object : ContentObserver(Handler(Looper.getMainLooper())) {}
- private lateinit var testScope: TestScope
-
- @Before
- fun setUp() {
- testScope = TestScope(testDispatcher)
- }
@Test
fun registerContentObserverForUser_inputString_success() =
@@ -69,7 +63,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -82,7 +76,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -96,7 +90,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -107,14 +101,14 @@ class UserSettingsProxyTest : SysuiTestCase() {
TEST_SETTING,
notifyForDescendants = true,
mContentObserver,
- userId
+ userId,
)
verify(mSettings.getContentResolver())
.registerContentObserver(
eq(TEST_SETTING_URI),
eq(true),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -125,16 +119,14 @@ class UserSettingsProxyTest : SysuiTestCase() {
TEST_SETTING,
notifyForDescendants = true,
mContentObserver,
- userId
+ userId,
)
verify(mSettings.getContentResolver())
.registerContentObserver(
eq(TEST_SETTING_URI),
- eq(
- true,
- ),
+ eq(true),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -145,7 +137,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
TEST_SETTING,
notifyForDescendants = true,
mContentObserver,
- userId
+ userId,
)
testScope.advanceUntilIdle()
verify(mSettings.getContentResolver())
@@ -153,7 +145,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(true),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -166,7 +158,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -179,7 +171,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -189,7 +181,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserverForUserAsync(
TEST_SETTING_URI,
mContentObserver,
- userId
+ userId,
)
testScope.advanceUntilIdle()
@@ -198,7 +190,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -213,7 +205,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
TEST_SETTING_URI,
mContentObserver,
userId,
- runnable
+ runnable,
)
testScope.advanceUntilIdle()
assertThat(callbackCalled).isTrue()
@@ -226,14 +218,14 @@ class UserSettingsProxyTest : SysuiTestCase() {
TEST_SETTING_URI,
notifyForDescendants = true,
mContentObserver,
- userId
+ userId,
)
verify(mSettings.getContentResolver())
.registerContentObserver(
eq(TEST_SETTING_URI),
eq(true),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -244,14 +236,14 @@ class UserSettingsProxyTest : SysuiTestCase() {
TEST_SETTING_URI,
notifyForDescendants = true,
mContentObserver,
- userId
+ userId,
)
verify(mSettings.getContentResolver())
.registerContentObserver(
eq(TEST_SETTING_URI),
eq(true),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -262,7 +254,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
TEST_SETTING_URI,
notifyForDescendants = true,
mContentObserver,
- userId
+ userId,
)
testScope.advanceUntilIdle()
verify(mSettings.getContentResolver())
@@ -270,7 +262,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(true),
eq(mContentObserver),
- eq(MAIN_USER_ID)
+ eq(MAIN_USER_ID),
)
}
@@ -283,7 +275,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(0)
+ eq(0),
)
}
@@ -296,7 +288,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(0)
+ eq(0),
)
}
@@ -309,7 +301,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(0)
+ eq(0),
)
}
}
@@ -320,14 +312,14 @@ class UserSettingsProxyTest : SysuiTestCase() {
mSettings.registerContentObserverSync(
TEST_SETTING_URI,
notifyForDescendants = true,
- mContentObserver
+ mContentObserver,
)
verify(mSettings.getContentResolver())
.registerContentObserver(
eq(TEST_SETTING_URI),
eq(true),
eq(mContentObserver),
- eq(0)
+ eq(0),
)
}
@@ -340,7 +332,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(0)
+ eq(0),
)
}
@@ -354,7 +346,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
eq(TEST_SETTING_URI),
eq(false),
eq(mContentObserver),
- eq(0)
+ eq(0),
)
}
}
@@ -557,7 +549,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
*/
private class FakeUserSettingsProxy(
override val currentUserProvider: SettingsProxy.CurrentUserIdProvider,
- val testDispatcher: CoroutineDispatcher
+ val testScope: CoroutineScope,
) : UserSettingsProxy {
private val mContentResolver = mock(ContentResolver::class.java)
@@ -569,8 +561,8 @@ class UserSettingsProxyTest : SysuiTestCase() {
override fun getUriFor(name: String) =
Uri.parse(StringBuilder().append(URI_PREFIX).append(name).toString())
- override val backgroundDispatcher: CoroutineDispatcher
- get() = testDispatcher
+ override val settingsScope: CoroutineScope
+ get() = testScope
override fun getStringForUser(name: String, userHandle: Int) =
userIdToSettingsValueMap[userHandle]?.get(name) ?: ""
@@ -578,7 +570,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
override fun putString(
name: String,
value: String?,
- overrideableByRestore: Boolean
+ overrideableByRestore: Boolean,
): Boolean {
userIdToSettingsValueMap[DEFAULT_USER_ID]?.put(name, value)
return true
@@ -588,7 +580,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
name: String,
value: String?,
tag: String?,
- makeDefault: Boolean
+ makeDefault: Boolean,
): Boolean {
putStringForUser(name, value, DEFAULT_USER_ID)
return true
@@ -605,7 +597,7 @@ class UserSettingsProxyTest : SysuiTestCase() {
tag: String?,
makeDefault: Boolean,
userHandle: Int,
- overrideableByRestore: Boolean
+ overrideableByRestore: Boolean,
): Boolean {
userIdToSettingsValueMap[userHandle]?.set(name, value)
return true
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/GlobalSettingsImpl.java b/packages/SystemUI/pods/com/android/systemui/util/settings/GlobalSettingsImpl.java
index d68501f69bc0..6b909529e33a 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/GlobalSettingsImpl.java
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/GlobalSettingsImpl.java
@@ -25,7 +25,7 @@ import android.provider.Settings;
import com.android.systemui.util.settings.SettingsSingleThreadBackground;
-import kotlinx.coroutines.CoroutineDispatcher;
+import kotlinx.coroutines.CoroutineScope;
import javax.inject.Inject;
@@ -33,13 +33,13 @@ import javax.inject.Inject;
@SuppressLint("StaticSettingsProvider")
class GlobalSettingsImpl implements GlobalSettings {
private final ContentResolver mContentResolver;
- private final CoroutineDispatcher mBgDispatcher;
+ private final CoroutineScope mSettingsScope;
@Inject
GlobalSettingsImpl(ContentResolver contentResolver,
- @SettingsSingleThreadBackground CoroutineDispatcher bgDispatcher) {
+ @SettingsSingleThreadBackground CoroutineScope settingsScope) {
mContentResolver = contentResolver;
- mBgDispatcher = bgDispatcher;
+ mSettingsScope = settingsScope;
}
@NonNull
@@ -56,8 +56,8 @@ class GlobalSettingsImpl implements GlobalSettings {
@NonNull
@Override
- public CoroutineDispatcher getBackgroundDispatcher() {
- return mBgDispatcher;
+ public CoroutineScope getSettingsScope() {
+ return mSettingsScope;
}
@Override
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/SecureSettingsImpl.java b/packages/SystemUI/pods/com/android/systemui/util/settings/SecureSettingsImpl.java
index 211a6f48e475..ae89a5f021c2 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/SecureSettingsImpl.java
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/SecureSettingsImpl.java
@@ -23,23 +23,23 @@ import android.provider.Settings;
import com.android.systemui.util.settings.SettingsSingleThreadBackground;
-import kotlinx.coroutines.CoroutineDispatcher;
+import kotlinx.coroutines.CoroutineScope;
import javax.inject.Inject;
class SecureSettingsImpl implements SecureSettings {
private final ContentResolver mContentResolver;
private final CurrentUserIdProvider mCurrentUserProvider;
- private final CoroutineDispatcher mBgDispatcher;
+ private final CoroutineScope mSettingsScope;
@Inject
SecureSettingsImpl(
ContentResolver contentResolver,
CurrentUserIdProvider currentUserProvider,
- @SettingsSingleThreadBackground CoroutineDispatcher bgDispatcher) {
+ @SettingsSingleThreadBackground CoroutineScope settingsScope) {
mContentResolver = contentResolver;
mCurrentUserProvider = currentUserProvider;
- mBgDispatcher = bgDispatcher;
+ mSettingsScope = settingsScope;
}
@NonNull
@@ -62,8 +62,8 @@ class SecureSettingsImpl implements SecureSettings {
@NonNull
@Override
- public CoroutineDispatcher getBackgroundDispatcher() {
- return mBgDispatcher;
+ public CoroutineScope getSettingsScope() {
+ return mSettingsScope;
}
@Override
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt
index 5d0b0d55e1f6..154d3cc9eda1 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt
@@ -23,10 +23,12 @@ import android.provider.Settings.SettingNotFoundException
import androidx.annotation.AnyThread
import androidx.annotation.WorkerThread
import com.android.app.tracing.TraceUtils.trace
-import com.android.systemui.coroutines.newTracingContext
+import com.android.app.tracing.coroutines.launchTraced as launch
+import com.android.app.tracing.coroutines.nameCoroutine
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.EmptyCoroutineContext
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
-import com.android.app.tracing.coroutines.launchTraced as launch
import kotlinx.coroutines.withContext
/**
@@ -47,11 +49,14 @@ interface SettingsProxy {
/** Returns the [ContentResolver] this instance was constructed with. */
fun getContentResolver(): ContentResolver
- /**
- * Returns the background [CoroutineDispatcher] that the async APIs will use for a specific
- * implementation.
- */
- val backgroundDispatcher: CoroutineDispatcher
+ /** Returns the [CoroutineScope] that the async APIs will use. */
+ val settingsScope: CoroutineScope
+
+ @OptIn(ExperimentalStdlibApi::class)
+ fun settingsDispatcherContext(name: String): CoroutineContext {
+ return (settingsScope.coroutineContext[CoroutineDispatcher] ?: EmptyCoroutineContext) +
+ nameCoroutine(name)
+ }
/**
* Construct the content URI for a particular name/value pair, useful for monitoring changes
@@ -82,7 +87,7 @@ interface SettingsProxy {
* wish to synchronize execution.
*/
suspend fun registerContentObserver(name: String, settingsObserver: ContentObserver) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserver-A")) {
registerContentObserverSync(getUriFor(name), settingsObserver)
}
}
@@ -94,7 +99,7 @@ interface SettingsProxy {
*/
@AnyThread
fun registerContentObserverAsync(name: String, settingsObserver: ContentObserver) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-A")).launch {
+ settingsScope.launch("registerContentObserverAsync-A") {
registerContentObserverSync(getUriFor(name), settingsObserver)
}
@@ -111,7 +116,7 @@ interface SettingsProxy {
settingsObserver: ContentObserver,
@WorkerThread registered: Runnable,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-B")).launch {
+ settingsScope.launch("registerContentObserverAsync-B") {
registerContentObserverSync(getUriFor(name), settingsObserver)
registered.run()
}
@@ -134,7 +139,9 @@ interface SettingsProxy {
* wish to synchronize execution.
*/
suspend fun registerContentObserver(uri: Uri, settingsObserver: ContentObserver) {
- withContext(backgroundDispatcher) { registerContentObserverSync(uri, settingsObserver) }
+ withContext(settingsDispatcherContext("registerContentObserver-B")) {
+ registerContentObserverSync(uri, settingsObserver)
+ }
}
/**
@@ -144,7 +151,7 @@ interface SettingsProxy {
*/
@AnyThread
fun registerContentObserverAsync(uri: Uri, settingsObserver: ContentObserver) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-C")).launch {
+ settingsScope.launch("registerContentObserverAsync-C") {
registerContentObserverSync(uri, settingsObserver)
}
@@ -161,7 +168,7 @@ interface SettingsProxy {
settingsObserver: ContentObserver,
@WorkerThread registered: Runnable,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-D")).launch {
+ settingsScope.launch("registerContentObserverAsync-D") {
registerContentObserverSync(uri, settingsObserver)
registered.run()
}
@@ -188,9 +195,9 @@ interface SettingsProxy {
suspend fun registerContentObserver(
name: String,
notifyForDescendants: Boolean,
- settingsObserver: ContentObserver
+ settingsObserver: ContentObserver,
) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserver-C")) {
registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver)
}
}
@@ -206,7 +213,7 @@ interface SettingsProxy {
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-E")).launch {
+ settingsScope.launch("registerContentObserverAsync-E") {
registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver)
}
@@ -224,7 +231,7 @@ interface SettingsProxy {
settingsObserver: ContentObserver,
@WorkerThread registered: Runnable,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-F")).launch {
+ settingsScope.launch("registerContentObserverAsync-F") {
registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver)
registered.run()
}
@@ -239,7 +246,7 @@ interface SettingsProxy {
fun registerContentObserverSync(
uri: Uri,
notifyForDescendants: Boolean,
- settingsObserver: ContentObserver
+ settingsObserver: ContentObserver,
) {
trace({ "SP#registerObserver#[$uri]" }) {
getContentResolver()
@@ -257,9 +264,9 @@ interface SettingsProxy {
suspend fun registerContentObserver(
uri: Uri,
notifyForDescendants: Boolean,
- settingsObserver: ContentObserver
+ settingsObserver: ContentObserver,
) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserver-D")) {
registerContentObserverSync(uri, notifyForDescendants, settingsObserver)
}
}
@@ -275,7 +282,7 @@ interface SettingsProxy {
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-G")).launch {
+ settingsScope.launch("registerContentObserverAsync-G") {
registerContentObserverSync(uri, notifyForDescendants, settingsObserver)
}
@@ -293,7 +300,7 @@ interface SettingsProxy {
settingsObserver: ContentObserver,
@WorkerThread registered: Runnable,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-H")).launch {
+ settingsScope.launch("registerContentObserverAsync-H") {
registerContentObserverSync(uri, notifyForDescendants, settingsObserver)
registered.run()
}
@@ -319,7 +326,9 @@ interface SettingsProxy {
* async block if they wish to synchronize execution.
*/
suspend fun unregisterContentObserver(settingsObserver: ContentObserver) {
- withContext(backgroundDispatcher) { unregisterContentObserverSync(settingsObserver) }
+ withContext(settingsDispatcherContext("unregisterContentObserver")) {
+ unregisterContentObserverSync(settingsObserver)
+ }
}
/**
@@ -330,7 +339,7 @@ interface SettingsProxy {
*/
@AnyThread
fun unregisterContentObserverAsync(settingsObserver: ContentObserver) =
- CoroutineScope(backgroundDispatcher + newTracingContext("SettingsProxy-I")).launch {
+ settingsScope.launch("unregisterContentObserverAsync") {
unregisterContentObserver(settingsObserver)
}
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/SystemSettingsImpl.java b/packages/SystemUI/pods/com/android/systemui/util/settings/SystemSettingsImpl.java
index 1b3f74e0c983..65d1c276cbfa 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/SystemSettingsImpl.java
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/SystemSettingsImpl.java
@@ -23,22 +23,22 @@ import android.provider.Settings;
import com.android.systemui.util.settings.SettingsSingleThreadBackground;
-import kotlinx.coroutines.CoroutineDispatcher;
+import kotlinx.coroutines.CoroutineScope;
import javax.inject.Inject;
class SystemSettingsImpl implements SystemSettings {
private final ContentResolver mContentResolver;
private final CurrentUserIdProvider mCurrentUserProvider;
- private final CoroutineDispatcher mBgCoroutineDispatcher;
+ private final CoroutineScope mSettingsScope;
@Inject
SystemSettingsImpl(ContentResolver contentResolver,
CurrentUserIdProvider currentUserProvider,
- @SettingsSingleThreadBackground CoroutineDispatcher bgDispatcher) {
+ @SettingsSingleThreadBackground CoroutineScope settingsScope) {
mContentResolver = contentResolver;
mCurrentUserProvider = currentUserProvider;
- mBgCoroutineDispatcher = bgDispatcher;
+ mSettingsScope = settingsScope;
}
@NonNull
@@ -61,8 +61,8 @@ class SystemSettingsImpl implements SystemSettings {
@NonNull
@Override
- public CoroutineDispatcher getBackgroundDispatcher() {
- return mBgCoroutineDispatcher;
+ public CoroutineScope getSettingsScope() {
+ return mSettingsScope;
}
@Override
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt b/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt
index 4b03df6b0070..1a5517059ca4 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt
@@ -23,13 +23,11 @@ import android.net.Uri
import android.os.UserHandle
import android.provider.Settings.SettingNotFoundException
import com.android.app.tracing.TraceUtils.trace
-import com.android.systemui.coroutines.newTracingContext
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloat
import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloatOrThrow
import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrThrow
import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrUseDefault
-import kotlinx.coroutines.CoroutineScope
-import com.android.app.tracing.coroutines.launchTraced as launch
import kotlinx.coroutines.withContext
/**
@@ -73,13 +71,13 @@ interface UserSettingsProxy : SettingsProxy {
}
override suspend fun registerContentObserver(uri: Uri, settingsObserver: ContentObserver) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserver-A")) {
registerContentObserverForUserSync(uri, settingsObserver, userId)
}
}
override fun registerContentObserverAsync(uri: Uri, settingsObserver: ContentObserver) =
- CoroutineScope(backgroundDispatcher + newTracingContext("UserSettingsProxy-A")).launch {
+ settingsScope.launch("registerContentObserverAsync-A") {
registerContentObserverForUserSync(uri, settingsObserver, userId)
}
@@ -96,9 +94,9 @@ interface UserSettingsProxy : SettingsProxy {
override suspend fun registerContentObserver(
uri: Uri,
notifyForDescendants: Boolean,
- settingsObserver: ContentObserver
+ settingsObserver: ContentObserver,
) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserver-B")) {
registerContentObserverForUserSync(uri, notifyForDescendants, settingsObserver, userId)
}
}
@@ -113,7 +111,7 @@ interface UserSettingsProxy : SettingsProxy {
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("UserSettingsProxy-B")).launch {
+ settingsScope.launch("registerContentObserverAsync-B") {
registerContentObserverForUserSync(uri, notifyForDescendants, settingsObserver, userId)
}
@@ -126,7 +124,7 @@ interface UserSettingsProxy : SettingsProxy {
fun registerContentObserverForUserSync(
name: String,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
registerContentObserverForUserSync(getUriFor(name), settingsObserver, userHandle)
}
@@ -141,9 +139,9 @@ interface UserSettingsProxy : SettingsProxy {
suspend fun registerContentObserverForUser(
name: String,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserverForUser-A")) {
registerContentObserverForUserSync(name, settingsObserver, userHandle)
}
}
@@ -158,7 +156,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("UserSettingsProxy-C")).launch {
+ settingsScope.launch("registerContentObserverForUserAsync-A") {
registerContentObserverForUserSync(getUriFor(name), settingsObserver, userHandle)
}
@@ -167,7 +165,7 @@ interface UserSettingsProxy : SettingsProxy {
fun registerContentObserverForUserSync(
uri: Uri,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
registerContentObserverForUserSync(uri, false, settingsObserver, userHandle)
}
@@ -182,9 +180,9 @@ interface UserSettingsProxy : SettingsProxy {
suspend fun registerContentObserverForUser(
uri: Uri,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserverForUser-B")) {
registerContentObserverForUserSync(uri, settingsObserver, userHandle)
}
}
@@ -199,7 +197,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("UserSettingsProxy-D")).launch {
+ settingsScope.launch("registerContentObserverForUserAsync-B") {
registerContentObserverForUserSync(uri, settingsObserver, userHandle)
}
@@ -216,7 +214,7 @@ interface UserSettingsProxy : SettingsProxy {
userHandle: Int,
@WorkerThread registered: Runnable,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("UserSettingsProxy-E")).launch {
+ settingsScope.launch("registerContentObserverForUserAsync-C") {
registerContentObserverForUserSync(uri, settingsObserver, userHandle)
registered.run()
}
@@ -231,13 +229,13 @@ interface UserSettingsProxy : SettingsProxy {
name: String,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
registerContentObserverForUserSync(
getUriFor(name),
notifyForDescendants,
settingsObserver,
- userHandle
+ userHandle,
)
}
@@ -252,14 +250,14 @@ interface UserSettingsProxy : SettingsProxy {
name: String,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserverForUser-C")) {
registerContentObserverForUserSync(
name,
notifyForDescendants,
settingsObserver,
- userHandle
+ userHandle,
)
}
}
@@ -275,7 +273,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) {
- CoroutineScope(backgroundDispatcher + newTracingContext("UserSettingsProxy-F")).launch {
+ settingsScope.launch("registerContentObserverForUserAsync-D") {
registerContentObserverForUserSync(
getUriFor(name),
notifyForDescendants,
@@ -291,7 +289,7 @@ interface UserSettingsProxy : SettingsProxy {
uri: Uri,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
trace({ "USP#registerObserver#[$uri]" }) {
getContentResolver()
@@ -299,7 +297,7 @@ interface UserSettingsProxy : SettingsProxy {
uri,
notifyForDescendants,
settingsObserver,
- getRealUserHandle(userHandle)
+ getRealUserHandle(userHandle),
)
Unit
}
@@ -316,14 +314,14 @@ interface UserSettingsProxy : SettingsProxy {
uri: Uri,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
- withContext(backgroundDispatcher) {
+ withContext(settingsDispatcherContext("registerContentObserverForUser-D")) {
registerContentObserverForUserSync(
uri,
notifyForDescendants,
settingsObserver,
- getRealUserHandle(userHandle)
+ getRealUserHandle(userHandle),
)
}
}
@@ -339,7 +337,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) =
- CoroutineScope(backgroundDispatcher + newTracingContext("UserSettingsProxy-G")).launch {
+ settingsScope.launch("registerContentObserverForUserAsync-E") {
registerContentObserverForUserSync(
uri,
notifyForDescendants,
@@ -385,7 +383,7 @@ interface UserSettingsProxy : SettingsProxy {
tag: String?,
makeDefault: Boolean,
@UserIdInt userHandle: Int,
- overrideableByRestore: Boolean
+ overrideableByRestore: Boolean,
): Boolean
override fun getInt(name: String, default: Int): Int {
diff --git a/packages/SystemUI/src/com/android/systemui/util/kotlin/SysUICoroutinesModule.kt b/packages/SystemUI/src/com/android/systemui/util/kotlin/SysUICoroutinesModule.kt
index 2a9b1b97b48f..e5c1e7daa25a 100644
--- a/packages/SystemUI/src/com/android/systemui/util/kotlin/SysUICoroutinesModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/util/kotlin/SysUICoroutinesModule.kt
@@ -17,14 +17,16 @@
package com.android.systemui.util.kotlin
import android.os.Handler
+import com.android.systemui.coroutines.newTracingContext
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
-import com.android.systemui.dagger.qualifiers.Tracing
import com.android.systemui.dagger.qualifiers.UiBackground
import com.android.systemui.util.settings.SettingsSingleThreadBackground
import dagger.Module
import dagger.Provides
+import java.util.concurrent.Executor
+import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
@@ -33,8 +35,6 @@ import kotlinx.coroutines.android.asCoroutineDispatcher
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.newFixedThreadPoolContext
import kotlinx.coroutines.plus
-import java.util.concurrent.Executor
-import kotlin.coroutines.CoroutineContext
private const val LIMIT_BACKGROUND_DISPATCHER_THREADS = true
@@ -62,7 +62,7 @@ class SysUICoroutinesModule {
@Background
@Deprecated(
"Use @Background CoroutineContext instead",
- ReplaceWith("bgCoroutineContext()", "kotlin.coroutines.CoroutineContext")
+ ReplaceWith("bgCoroutineContext()", "kotlin.coroutines.CoroutineContext"),
)
fun bgDispatcher(): CoroutineDispatcher {
return if (LIMIT_BACKGROUND_DISPATCHER_THREADS) {
@@ -73,7 +73,7 @@ class SysUICoroutinesModule {
// code on those.
newFixedThreadPoolContext(
nThreads = Runtime.getRuntime().availableProcessors(),
- name = "SystemUIBg"
+ name = "SystemUIBg",
)
} else {
Dispatchers.IO
@@ -89,10 +89,17 @@ class SysUICoroutinesModule {
}
@Provides
+ @SysUISingleton
+ @SettingsSingleThreadBackground
+ fun settingsScope(@Background bgDispatcher: CoroutineDispatcher): CoroutineScope {
+ return CoroutineScope(bgDispatcher + newTracingContext("SettingsProxy"))
+ }
+
+ @Provides
@Background
@SysUISingleton
fun bgCoroutineContext(
- @Background bgCoroutineDispatcher: CoroutineDispatcher,
+ @Background bgCoroutineDispatcher: CoroutineDispatcher
): CoroutineContext {
return bgCoroutineDispatcher
}
@@ -103,7 +110,7 @@ class SysUICoroutinesModule {
@UiBackground
@Deprecated(
"Use @UiBackground CoroutineContext instead",
- ReplaceWith("uiBgCoroutineContext()", "kotlin.coroutines.CoroutineContext")
+ ReplaceWith("uiBgCoroutineContext()", "kotlin.coroutines.CoroutineContext"),
)
fun uiBgDispatcher(@UiBackground uiBgExecutor: Executor): CoroutineDispatcher =
uiBgExecutor.asCoroutineDispatcher()
@@ -112,7 +119,7 @@ class SysUICoroutinesModule {
@UiBackground
@SysUISingleton
fun uiBgCoroutineContext(
- @UiBackground uiBgCoroutineDispatcher: CoroutineDispatcher,
+ @UiBackground uiBgCoroutineDispatcher: CoroutineDispatcher
): CoroutineContext {
return uiBgCoroutineDispatcher
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettings.java b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettings.java
index 65f4122f773e..21a910b67dff 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettings.java
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettings.java
@@ -16,6 +16,8 @@
package com.android.systemui.util.settings;
+import static com.android.systemui.util.settings.JavaAdapter.newCoroutineScope;
+
import static kotlinx.coroutines.test.TestCoroutineDispatchersKt.StandardTestDispatcher;
import android.annotation.NonNull;
@@ -25,6 +27,7 @@ import android.database.ContentObserver;
import android.net.Uri;
import kotlinx.coroutines.CoroutineDispatcher;
+import kotlinx.coroutines.CoroutineScope;
import java.util.ArrayList;
import java.util.HashMap;
@@ -34,7 +37,7 @@ import java.util.Map;
public class FakeGlobalSettings implements GlobalSettings {
private final Map<String, String> mValues = new HashMap<>();
private final Map<String, List<ContentObserver>> mContentObserversAllUsers = new HashMap<>();
- private final CoroutineDispatcher mDispatcher;
+ private final CoroutineScope mSettingsScope;
public static final Uri CONTENT_URI = Uri.parse("content://settings/fake_global");
@@ -44,11 +47,15 @@ public class FakeGlobalSettings implements GlobalSettings {
*/
@Deprecated
public FakeGlobalSettings() {
- mDispatcher = StandardTestDispatcher(/* scheduler = */ null, /* name = */ null);
+ CoroutineDispatcher dispatcher = StandardTestDispatcher(
+ /* scheduler = */ null,
+ /* name = */ null
+ );
+ mSettingsScope = newCoroutineScope(dispatcher);
}
public FakeGlobalSettings(CoroutineDispatcher dispatcher) {
- mDispatcher = dispatcher;
+ mSettingsScope = newCoroutineScope(dispatcher);
}
@NonNull
@@ -61,8 +68,8 @@ public class FakeGlobalSettings implements GlobalSettings {
@NonNull
@Override
- public CoroutineDispatcher getBackgroundDispatcher() {
- return mDispatcher;
+ public CoroutineScope getSettingsScope() {
+ return mSettingsScope;
}
@Override
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettingsKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettingsKosmos.kt
index 35fa2af7639f..78b78ca86a8d 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettingsKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeGlobalSettingsKosmos.kt
@@ -19,5 +19,14 @@ package com.android.systemui.util.settings
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.kosmos.testDispatcher
+import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.CoroutineScope
val Kosmos.fakeGlobalSettings: FakeGlobalSettings by Fixture { FakeGlobalSettings(testDispatcher) }
+
+object JavaAdapter {
+ @JvmStatic
+ fun newCoroutineScope(context: CoroutineContext): CoroutineScope {
+ return CoroutineScope(context)
+ }
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.kt
index e5d113be7ca2..a3572754ab19 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.kt
@@ -24,6 +24,7 @@ import android.util.Pair
import androidx.annotation.VisibleForTesting
import com.android.systemui.util.settings.SettingsProxy.CurrentUserIdProvider
import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestDispatcher
@@ -33,7 +34,7 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
private val contentObservers = mutableMapOf<SettingsKey, MutableList<ContentObserver>>()
private val contentObserversAllUsers = mutableMapOf<String, MutableList<ContentObserver>>()
- override val backgroundDispatcher: CoroutineDispatcher
+ override val settingsScope: CoroutineScope
@UserIdInt override var userId = UserHandle.USER_CURRENT
override val currentUserProvider: CurrentUserIdProvider
@@ -43,17 +44,17 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
by main test scope."""
)
constructor() {
- backgroundDispatcher = StandardTestDispatcher(scheduler = null, name = null)
+ settingsScope = CoroutineScope(StandardTestDispatcher(scheduler = null, name = null))
currentUserProvider = CurrentUserIdProvider { userId }
}
constructor(dispatcher: CoroutineDispatcher) {
- backgroundDispatcher = dispatcher
+ settingsScope = CoroutineScope(dispatcher)
currentUserProvider = CurrentUserIdProvider { userId }
}
constructor(dispatcher: CoroutineDispatcher, currentUserProvider: CurrentUserIdProvider) {
- backgroundDispatcher = dispatcher
+ settingsScope = CoroutineScope(dispatcher)
this.currentUserProvider = currentUserProvider
}
@@ -77,7 +78,7 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
uri: Uri,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) {
if (userHandle == UserHandle.USER_ALL) {
contentObserversAllUsers
@@ -107,31 +108,31 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
override suspend fun registerContentObserver(
uri: Uri,
notifyForDescendants: Boolean,
- settingsObserver: ContentObserver
+ settingsObserver: ContentObserver,
) = suspendAdvanceDispatcher {
super<UserSettingsProxy>.registerContentObserver(
uri,
notifyForDescendants,
- settingsObserver
+ settingsObserver,
)
}
override fun registerContentObserverAsync(
uri: Uri,
notifyForDescendants: Boolean,
- settingsObserver: ContentObserver
+ settingsObserver: ContentObserver,
): Job = advanceDispatcher {
super<UserSettingsProxy>.registerContentObserverAsync(
uri,
notifyForDescendants,
- settingsObserver
+ settingsObserver,
)
}
override suspend fun registerContentObserverForUser(
name: String,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) = suspendAdvanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUser(name, settingsObserver, userHandle)
}
@@ -139,12 +140,12 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
override fun registerContentObserverForUserAsync(
name: String,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
): Job = advanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUserAsync(
name,
settingsObserver,
- userHandle
+ userHandle,
)
}
@@ -156,7 +157,7 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
override suspend fun registerContentObserverForUser(
uri: Uri,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) = suspendAdvanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUser(uri, settingsObserver, userHandle)
}
@@ -164,12 +165,12 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
override fun registerContentObserverForUserAsync(
uri: Uri,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
): Job = advanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUserAsync(
uri,
settingsObserver,
- userHandle
+ userHandle,
)
}
@@ -177,13 +178,13 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
uri: Uri,
settingsObserver: ContentObserver,
userHandle: Int,
- registered: Runnable
+ registered: Runnable,
): Job = advanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUserAsync(
uri,
settingsObserver,
userHandle,
- registered
+ registered,
)
}
@@ -191,13 +192,13 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
name: String,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) = suspendAdvanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUser(
name,
notifyForDescendants,
settingsObserver,
- userHandle
+ userHandle,
)
}
@@ -205,13 +206,13 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
name: String,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
) = advanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUserAsync(
name,
notifyForDescendants,
settingsObserver,
- userHandle
+ userHandle,
)
}
@@ -219,13 +220,13 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
uri: Uri,
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
- userHandle: Int
+ userHandle: Int,
): Job = advanceDispatcher {
super<UserSettingsProxy>.registerContentObserverForUserAsync(
uri,
notifyForDescendants,
settingsObserver,
- userHandle
+ userHandle,
)
}
@@ -259,7 +260,7 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
tag: String?,
makeDefault: Boolean,
userHandle: Int,
- overrideableByRestore: Boolean
+ overrideableByRestore: Boolean,
): Boolean {
val key = SettingsKey(userHandle, getUriFor(name).toString())
values[key] = value
@@ -275,7 +276,7 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
name: String,
value: String?,
tag: String?,
- makeDefault: Boolean
+ makeDefault: Boolean,
): Boolean {
return putString(name, value)
}
@@ -293,8 +294,9 @@ class FakeSettings : SecureSettings, SystemSettings, UserSettingsProxy {
return result
}
+ @OptIn(ExperimentalStdlibApi::class)
private fun testDispatcherRunCurrent() {
- val testDispatcher = backgroundDispatcher as? TestDispatcher
+ val testDispatcher = settingsScope.coroutineContext[CoroutineDispatcher] as? TestDispatcher
testDispatcher?.scheduler?.runCurrent()
}