Skip to content

Commit

Permalink
Update InternalCoroutineDispatcher implementation
Browse files Browse the repository at this point in the history
 -Cloned and refactored the original DispatchersTest for use
  with kotlinx-coroutines-test
 -Switched from limitedParallelism to a channel for sequential
  internal access (Dispatchers.Unconfined doesn't play nice
  with limitedParallelism experimental API)
 -Improved @Preview/Paparazzi integration by removing LayoutLibExecutorService requirement
  • Loading branch information
gamepro65 committed Jul 5, 2023
1 parent 1eff48c commit 349d451
Show file tree
Hide file tree
Showing 15 changed files with 1,388 additions and 576 deletions.
3 changes: 3 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[versions]
agp = '8.0.2'
coroutines = '1.7.2'
composeCompiler = '1.4.7'
composeUi = '1.4.3'
javaTarget = '1.8'
Expand All @@ -22,6 +23,8 @@ androidx-lifecycle = { module = 'androidx.lifecycle:lifecycle-common', version =
androidx-startup = { module = 'androidx.startup:startup-runtime', version = '1.1.1' }
androidx-testRunner = { module = 'androidx.test:runner', version = '1.5.2' }

coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = 'coroutines' }

composeUi = { module = 'androidx.compose.ui:ui', version.ref = 'composeUi' }
composeRuntime = { module = 'androidx.compose.runtime:runtime', version.ref = 'composeUi' }
composeUi-foundation = { module = 'androidx.compose.foundation:foundation', version.ref = 'composeUi' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import com.squareup.picasso3.Picasso
import com.squareup.picasso3.Picasso.LoadedFrom.MEMORY
import com.squareup.picasso3.Request
import com.squareup.picasso3.RequestHandler
import com.squareup.picasso3.layoutlib.LayoutlibExecutorService
import org.junit.Rule
import org.junit.Test
import kotlinx.coroutines.Dispatchers
Expand All @@ -35,8 +34,10 @@ class PicassoPaparazziTest {
fun loadsUrlIntoImageView() {
val picasso = Picasso.Builder(paparazzi.context)
.callFactory { throw AssertionError() } // Removes network
.executor(LayoutlibExecutorService())
.dispatcher(Dispatchers.Main)
.dispatchers(
mainDispatcher = Dispatchers.Unconfined,
backgroundDispatcher = Dispatchers.Unconfined
)
.addRequestHandler(FakeRequestHandler())
.build()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ import com.squareup.picasso3.Picasso.LoadedFrom.MEMORY
import com.squareup.picasso3.Request
import com.squareup.picasso3.RequestHandler
import com.squareup.picasso3.compose.rememberPainter
import com.squareup.picasso3.layoutlib.LayoutlibExecutorService
import kotlinx.coroutines.Dispatchers

class SampleComposeActivity : PicassoSampleActivity() {

Expand Down Expand Up @@ -241,7 +241,10 @@ private fun ContentPreview() {
picasso = remember {
Picasso.Builder(context)
.callFactory { throw AssertionError() } // Removes network
.executor(LayoutlibExecutorService()) // Synchronously execute RequestHandler
.dispatchers(
mainDispatcher = Dispatchers.Unconfined,
backgroundDispatcher = Dispatchers.Unconfined
)
.addRequestHandler(
object : RequestHandler() {
override fun canHandleRequest(data: Request) = data.uri?.toString()?.run(images::containsKey) == true
Expand Down
3 changes: 2 additions & 1 deletion picasso/api/picasso.api
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,8 @@ public final class com/squareup/picasso3/Picasso$Builder {
public final fun callFactory (Lokhttp3/Call$Factory;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun client (Lokhttp3/OkHttpClient;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun defaultBitmapConfig (Landroid/graphics/Bitmap$Config;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun dispatcher (Lkotlinx/coroutines/CoroutineDispatcher;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun dispatchers (Lkotlinx/coroutines/CoroutineDispatcher;Lkotlinx/coroutines/CoroutineDispatcher;)Lcom/squareup/picasso3/Picasso$Builder;
public static synthetic fun dispatchers$default (Lcom/squareup/picasso3/Picasso$Builder;Lkotlinx/coroutines/CoroutineDispatcher;Lkotlinx/coroutines/CoroutineDispatcher;ILjava/lang/Object;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun executor (Ljava/util/concurrent/ExecutorService;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun indicatorsEnabled (Z)Lcom/squareup/picasso3/Picasso$Builder;
public final fun listener (Lcom/squareup/picasso3/Picasso$Listener;)Lcom/squareup/picasso3/Picasso$Builder;
Expand Down
1 change: 1 addition & 0 deletions picasso/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ dependencies {
implementation libs.androidx.core
implementation libs.androidx.exifInterface

testImplementation libs.coroutines.test
testImplementation libs.junit
testImplementation libs.truth
testImplementation libs.robolectric
Expand Down
Loading

0 comments on commit 349d451

Please sign in to comment.