Skip to content

Commit 800f7d8

Browse files
authored
Merge pull request #2367 from DataDog/yl/sr-mnt/fix-resource-resolver
Fix resolveResourceId not correctly calling job finished when drawable cloning failed
2 parents 2383221 + 525cd65 commit 800f7d8

File tree

2 files changed

+32
-1
lines changed
  • features/dd-sdk-android-session-replay/src

2 files changed

+32
-1
lines changed

features/dd-sdk-android-session-replay/src/main/kotlin/com/datadog/android/sessionreplay/internal/recorder/resources/ResourceResolver.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ internal class ResourceResolver(
6262
return
6363
}
6464

65-
val copiedDrawable = drawableCopier.copy(originalDrawable, resources) ?: return
65+
val copiedDrawable = drawableCopier.copy(originalDrawable, resources)
66+
if (copiedDrawable == null) {
67+
resourceResolverCallback.onFailure()
68+
return
69+
}
6670

6771
val bitmapFromDrawable =
6872
if (copiedDrawable is BitmapDrawable && shouldUseDrawableBitmap(copiedDrawable)) {

features/dd-sdk-android-session-replay/src/test/kotlin/com/datadog/android/sessionreplay/internal/recorder/resources/ResourceResolverTest.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import org.mockito.junit.jupiter.MockitoExtension
3434
import org.mockito.junit.jupiter.MockitoSettings
3535
import org.mockito.kotlin.any
3636
import org.mockito.kotlin.anyOrNull
37+
import org.mockito.kotlin.doReturn
3738
import org.mockito.kotlin.eq
3839
import org.mockito.kotlin.mock
3940
import org.mockito.kotlin.never
@@ -269,6 +270,32 @@ internal class ResourceResolverTest {
269270
verify(mockSerializerCallback).onFailure()
270271
}
271272

273+
@Test
274+
fun `M call onFailure W copy bitmap return null`() {
275+
// Given
276+
whenever(
277+
mockDrawableCopier.copy(
278+
originalDrawable = mockDrawable,
279+
resources = mockResources
280+
)
281+
).doReturn(null)
282+
283+
// When
284+
testedResourceResolver.resolveResourceId(
285+
resources = mockResources,
286+
applicationContext = mockApplicationContext,
287+
displayMetrics = mockDisplayMetrics,
288+
originalDrawable = mockDrawable,
289+
drawableCopier = mockDrawableCopier,
290+
drawableWidth = mockDrawable.intrinsicWidth,
291+
drawableHeight = mockDrawable.intrinsicHeight,
292+
resourceResolverCallback = mockSerializerCallback
293+
)
294+
295+
// Then
296+
verify(mockSerializerCallback).onFailure()
297+
}
298+
272299
@Test
273300
fun `M calculate resourceId W resolveResourceId() { cache miss }`() {
274301
// Given

0 commit comments

Comments
 (0)