diff --git a/.github/workflows/instrumentation.yml b/.github/workflows/instrumentation.yml deleted file mode 100644 index 41f4d5c252..0000000000 --- a/.github/workflows/instrumentation.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: Instrumentation Tests - -on: - push: - pull_request: - -jobs: - test: - runs-on: macos-latest - strategy: - matrix: - include: - - api-level: 22 - arch: x86 - target: default - - api-level: 23 - arch: x86 - target: default - - api-level: 31 - arch: x86_64 - target: google_apis - steps: - - name: checkout - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'zulu' - - name: Gradle cache - uses: gradle/gradle-build-action@v2 - - - name: AVD cache - uses: actions/cache@v3 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - key: avd-${{ matrix.api-level }}-${{ matrix.arch }}-${{ matrix.target }} - - - name: create AVD and generate snapshot for caching - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.api-level }} - arch: ${{ matrix.arch }} - target: ${{ matrix.target }} - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: false - ram-size: 4096M - emulator-boot-timeout: 12000 - script: echo "Generated AVD snapshot for caching." - - - name: run tests - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.api-level }} - arch: ${{ matrix.arch }} - target: ${{ matrix.target }} - force-avd-creation: false - emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: true - ram-size: 4096M - emulator-boot-timeout: 12000 - script: ./gradlew :instrumentation:connectedCheck :integration:compose:connectedCheck \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 508322917b..4e86b92707 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/instrumentation/build.gradle b/instrumentation/build.gradle index a46e98b8a6..b1c8699a1c 100644 --- a/instrumentation/build.gradle +++ b/instrumentation/build.gradle @@ -27,8 +27,6 @@ dependencies { // Not totally clear why this is required, but it seems to be missing when tests are run on // 4.1.2 and 4.2.0 emulators. androidTestImplementation libs.findbugs.jsr305 - - coreLibraryDesugaring libs.android.tools.desugar } android { @@ -47,7 +45,6 @@ android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 - coreLibraryDesugaringEnabled true } buildTypes { diff --git a/integration/compose/src/androidTest/java/com/bumptech/glide/integration/compose/GlideImageTest.kt b/integration/compose/src/androidTest/java/com/bumptech/glide/integration/compose/GlideImageTest.kt index 7873de4e23..46e351a475 100644 --- a/integration/compose/src/androidTest/java/com/bumptech/glide/integration/compose/GlideImageTest.kt +++ b/integration/compose/src/androidTest/java/com/bumptech/glide/integration/compose/GlideImageTest.kt @@ -5,13 +5,18 @@ import android.graphics.drawable.Drawable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.material.Text import androidx.compose.material.TextButton import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.testTag import androidx.compose.ui.test.assert @@ -372,4 +377,18 @@ class GlideImageTest { .assert(expectDisplayedDrawable(drawable)) } } + + // See #5256 + @Test + fun glideImage_withZeroSize_doesNotCrash() { + glideComposeRule.setContent { + GlideImage( + model = android.R.drawable.star_big_on, + contentDescription = null, + modifier = Modifier.width(IntrinsicSize.Min), + contentScale = ContentScale.Crop + ) + } + glideComposeRule.waitForIdle() + } } 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 e480fe6f34..d61fc1cb59 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 @@ -20,6 +20,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.Measurable import androidx.compose.ui.layout.MeasureResult import androidx.compose.ui.layout.MeasureScope +import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.layout.times import androidx.compose.ui.node.DrawModifierNode import androidx.compose.ui.node.LayoutModifierNode @@ -477,10 +478,13 @@ internal class GlideNode : DrawModifierNode, LayoutModifierNode, SemanticsModifi val constrainedHeight = constraints.constrainHeight(intrinsicHeight) val srcSize = Size(intrinsicWidth.toFloat(), intrinsicHeight.toFloat()) - val scaledSize = - srcSize * contentScale.computeScaleFactor( + val scaleFactor = contentScale.computeScaleFactor( srcSize, Size(constrainedWidth.toFloat(), constrainedHeight.toFloat()) ) + if (scaleFactor == ScaleFactor.Unspecified) { + return constraints + } + val scaledSize = srcSize * scaleFactor val minWidth = constraints.constrainWidth(scaledSize.width.roundToInt()) val minHeight = constraints.constrainHeight(scaledSize.height.roundToInt()) diff --git a/renovate.json b/renovate.json index 1649a8d4f1..3e936818e8 100644 --- a/renovate.json +++ b/renovate.json @@ -18,14 +18,8 @@ "allowedVersions": "<1.6.0" }, { - "matchPackageNames": [ - "androidx.appcompat:appcompat" - ], + "matchPackageNames": ["androidx.appcompat:appcompat"], "allowedVersions": "<1.4.0" - }, - { - "matchPackageNames": ["com.android.tools:desugar_jdk_libs"], - "matchPackageNames": ["!/1\.2\.3/"] } ] } diff --git a/settings.gradle b/settings.gradle index c8974729e3..2d425d86ef 100644 --- a/settings.gradle +++ b/settings.gradle @@ -72,8 +72,6 @@ dependencyResolutionManagement { library('autoservice', 'com.google.auto.service:auto-service:1.0-rc3') library('autoservice.annotations', 'com.google.auto.service:auto-service-annotations:1.0.1') library('android-gradle', 'com.android.tools.build:gradle:7.3.0') - // 1.2.3 seems broken: https://issuetracker.google.com/issues/290507059 - library('android-tools-desugar', 'com.android.tools:desugar_jdk_libs:1.2.2') library('androidx-cardview', 'androidx.cardview:cardview:1.0.0') library('androidx-core', 'androidx.core:core:1.6.0') // 1.6.0 seems to introduce: @@ -146,7 +144,7 @@ dependencyResolutionManagement { library('retrofit-rxjava', 'com.squareup.retrofit2', 'adapter-rxjava').versionRef('retrofit') library('robolectric', 'org.robolectric:robolectric:4.8.1') library('rx-android', 'io.reactivex:rxandroid:1.2.1') - library('rx-java', 'io.reactivex:rxjava:1.3.4') + library('rx-java', 'io.reactivex:rxjava:1.3.8') library('svg', 'com.caverock:androidsvg:1.2.1') library('truth', 'com.google.truth:truth:1.1.5') library('violations', 'se.bjurr.violations:violations-gradle-plugin:1.8') diff --git a/testutil/src/main/java/com/bumptech/glide/testutil/ConcurrencyHelper.java b/testutil/src/main/java/com/bumptech/glide/testutil/ConcurrencyHelper.java index ba43e0c588..971297d276 100644 --- a/testutil/src/main/java/com/bumptech/glide/testutil/ConcurrencyHelper.java +++ b/testutil/src/main/java/com/bumptech/glide/testutil/ConcurrencyHelper.java @@ -31,7 +31,7 @@ /** Helper for running sections of code on the main thread in emulator tests. */ public class ConcurrencyHelper { private final Handler handler = new Handler(Looper.getMainLooper()); - private static final long TIMEOUT_SECONDS = 20; + private static final long TIMEOUT_SECONDS = 10; private static final TimeUnit TIMEOUT_UNIT = TimeUnit.SECONDS; public T get(final Future future) {