From 3472f80fc0b258e0962ff1966255d5284e2a40d1 Mon Sep 17 00:00:00 2001 From: Sam Judd Date: Sat, 2 Sep 2023 21:29:47 -0700 Subject: [PATCH] Avoid duplicating Modifiers in GlideModifer --- ...DrawBehind_drawsImageOnTopOfBackground.png | Bin 0 -> 10416 bytes ...deImage_withPadding_appliesPaddingOnce.png | Bin 0 -> 32888 bytes ...osition_withPadding_appliesPaddingOnce.png | Bin 0 -> 2131 bytes .../integration/compose/GlideImageTest.kt | 57 ++++++++++++++- .../compose/GlideSubcompositionTest.kt | 69 +++++++++++++++++- .../java/com/bumptech/glide/test/goldens.kt | 5 ++ .../integration/compose/GlideModifier.kt | 14 ++-- 7 files changed, 131 insertions(+), 14 deletions(-) create mode 100644 integration/compose/src/androidTest/assets/glideImage_withDrawBehind_drawsImageOnTopOfBackground.png create mode 100644 integration/compose/src/androidTest/assets/glideImage_withPadding_appliesPaddingOnce.png create mode 100644 integration/compose/src/androidTest/assets/glideSubcomposition_withPadding_appliesPaddingOnce.png diff --git a/integration/compose/src/androidTest/assets/glideImage_withDrawBehind_drawsImageOnTopOfBackground.png b/integration/compose/src/androidTest/assets/glideImage_withDrawBehind_drawsImageOnTopOfBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..e6da9a36a8bec0771c67f25156271ca3093cb8ee GIT binary patch literal 10416 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 literal 0 HcmV?d00001 diff --git a/integration/compose/src/androidTest/assets/glideImage_withPadding_appliesPaddingOnce.png b/integration/compose/src/androidTest/assets/glideImage_withPadding_appliesPaddingOnce.png new file mode 100644 index 0000000000000000000000000000000000000000..2fbf3bc474b0b271d0cde681070779d235450048 GIT binary patch literal 32888 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�Rp!Imt%@vW=tLJdzQ1JdoFa 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

#3R=A^gPW? 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 literal 0 HcmV?d00001 diff --git a/integration/compose/src/androidTest/assets/glideSubcomposition_withPadding_appliesPaddingOnce.png b/integration/compose/src/androidTest/assets/glideSubcomposition_withPadding_appliesPaddingOnce.png new file mode 100644 index 0000000000000000000000000000000000000000..be29ef15e30728ed68b0079f0ad3d45d6afe9b47 GIT binary patch literal 2131 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKL9Be?5hW%z|fD~hKkh>GZx^prwfgF}%C(jTL zAgJL;>0n@B|Lf`E7*a9k?cKAD(yfvW56`=lUt;uT_hc=zTEJ{A`XHoXr9uGXGG?oU zmkoT6yx)~Pka6pt>-ziqx({zW&KF<&C-dxb>ixMtRnBgn`G4R1nKN(N|M_RZzOUYl z!N7R)?3-uLe%$fTn2|AIBmapr|Jxr0c-X0_Fg(vQ|2(~a-(GDQh7CV76do}i`1{r_ zrf*kO$xp6^-EY(Eq`Qk4e1 z`+GJ&J%S*DInl?qdW57 z>;Gv>AJ=cT-xnTUIE$sl_(NLSKjYKZ`|Vqw|9-spr_1r?QVtIFC%774)u=+G3l@_R@unO!wJSjqJwXZ>wYi{ZyfTmfxr4)v73;6bJvia__GbYfOG|H+p|SpTxknyx z=RVaWM6 Image( + imageVector = Icons.Default.Email, + contentDescription = "placeholder", + modifier = Modifier.width(400.pxToDp()) + ) + RequestState.Loading -> Spacer(modifier = Modifier.size(100.pxToDp())) + is RequestState.Success -> Image(painter = painter, contentDescription = null) + } + } + } + glideComposeRule.waitForIdle() + glideComposeRule.onNodeWithContentDescription("test") + .captureToImage() + .compareToGolden(testName.methodName) + } } + diff --git a/integration/compose/src/androidTest/java/com/bumptech/glide/test/goldens.kt b/integration/compose/src/androidTest/java/com/bumptech/glide/test/goldens.kt index 346345c359..8f59e09aec 100644 --- a/integration/compose/src/androidTest/java/com/bumptech/glide/test/goldens.kt +++ b/integration/compose/src/androidTest/java/com/bumptech/glide/test/goldens.kt @@ -4,8 +4,10 @@ import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Environment +import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.toPixelMap +import androidx.compose.ui.platform.LocalDensity import androidx.test.core.app.ApplicationProvider import java.io.BufferedOutputStream import java.io.File @@ -18,6 +20,9 @@ import java.lang.IllegalStateException const val GENERATED_FILES_DIR = "compose_goldens" const val EXTENSION = "png" +@Composable +fun Int.pxToDp() = with(LocalDensity.current) { toDp() } + fun ImageBitmap.compareToGolden(testName: String) { val bitmap = toBitmap() val existingGolden = readExistingGolden(testName) diff --git a/integration/compose/src/main/java/com/bumptech/glide/integration/compose/GlideModifier.kt b/integration/compose/src/main/java/com/bumptech/glide/integration/compose/GlideModifier.kt index 2e175b17ed..12c5232e17 100644 --- a/integration/compose/src/main/java/com/bumptech/glide/integration/compose/GlideModifier.kt +++ b/integration/compose/src/main/java/com/bumptech/glide/integration/compose/GlideModifier.kt @@ -89,16 +89,14 @@ internal fun Modifier.glideNode( requestListener, draw, transitionFactory, - ) then - clipToBounds() then + ) + .clipToBounds() + .semantics { if (contentDescription != null) { - semantics { - this@semantics.contentDescription = contentDescription - role = Role.Image - } - } else { - Modifier + this@semantics.contentDescription = contentDescription } + role = Role.Image + } } @ExperimentalGlideComposeApi