diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/network/UserAgent.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/network/UserAgent.kt index 0e8010c9c2..bfb0551334 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/network/UserAgent.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/network/UserAgent.kt @@ -2,6 +2,7 @@ package org.wordpress.android.fluxc.network import android.content.Context import android.webkit.WebSettings +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -9,9 +10,10 @@ import org.wordpress.android.util.AppLog import org.wordpress.android.util.PackageUtils @Suppress("MemberNameEqualsClassName") -class UserAgent( +class UserAgent @JvmOverloads constructor( private val appContext: Context?, - private val appName: String + private val appName: String, + bgDispatcher: CoroutineDispatcher = Dispatchers.Default ) { /** * User-Agent string when making HTTP connections, for both API traffic and WebViews. @@ -24,7 +26,7 @@ class UserAgent( var userAgent: String = getAppNameVersion() private set - private val coroutineScope = CoroutineScope(Dispatchers.Default) + private val coroutineScope = CoroutineScope(bgDispatcher) init { coroutineScope.launch { diff --git a/fluxc/src/test/java/org/wordpress/android/fluxc/network/UserAgentTest.kt b/fluxc/src/test/java/org/wordpress/android/fluxc/network/UserAgentTest.kt index 755b61740e..dc261f30e5 100644 --- a/fluxc/src/test/java/org/wordpress/android/fluxc/network/UserAgentTest.kt +++ b/fluxc/src/test/java/org/wordpress/android/fluxc/network/UserAgentTest.kt @@ -1,6 +1,7 @@ package org.wordpress.android.fluxc.network import android.webkit.WebSettings +import kotlinx.coroutines.Dispatchers import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mockStatic @@ -22,7 +23,8 @@ class UserAgentTest { fun testUserAgent() = withMockedPackageUtils { mockStatic(WebSettings::class.java).use { whenever(WebSettings.getDefaultUserAgent(context)).thenReturn(USER_AGENT) - val result = UserAgent(context, APP_NAME) + // Use the Unconfined dispatcher to allow the test to run synchronously + val result = UserAgent(context, APP_NAME, bgDispatcher = Dispatchers.Unconfined) assertEquals("$USER_AGENT $APP_NAME/$APP_VERSION", result.toString()) } } @@ -31,7 +33,8 @@ class UserAgentTest { fun testDefaultUserAgentFailure() = withMockedPackageUtils { mockStatic(WebSettings::class.java).use { whenever(WebSettings.getDefaultUserAgent(context)).thenThrow(RuntimeException("")) - val result = UserAgent(context, APP_NAME) + // Use the Unconfined dispatcher to allow the test to run synchronously + val result = UserAgent(context, APP_NAME, bgDispatcher = Dispatchers.Unconfined) assertEquals("$APP_NAME/$APP_VERSION", result.toString()) } }