Skip to content

Commit d592f5e

Browse files
authored
Merge pull request #2808 from DataDog/jmoskovich/rum-9016/drawableutil-improvements
RUM-9016: DrawableUtils performance improvement
2 parents bed3c33 + 8292b7a commit d592f5e

File tree

4 files changed

+25
-1
lines changed

4 files changed

+25
-1
lines changed

dd-sdk-android-internal/src/testFixtures/kotlin/com/datadog/android/internal/tests/elmyr/InternalTelemetryEventForgeryFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import fr.xgouchet.elmyr.ForgeryFactory
1212

1313
class InternalTelemetryEventForgeryFactory : ForgeryFactory<InternalTelemetryEvent> {
1414

15+
@Suppress("MagicNumber")
1516
override fun getForgery(forge: Forge): InternalTelemetryEvent {
1617
val random = forge.anInt(min = 0, max = 6)
1718
return when (random) {

features/dd-sdk-android-session-replay/src/main/kotlin/com/datadog/android/sessionreplay/internal/utils/DrawableUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ internal class DrawableUtils(
112112
} else {
113113
// erase the canvas
114114
// needed because overdrawing an already used bitmap causes unusual visual artifacts
115-
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.MULTIPLY)
115+
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR)
116116

117117
drawable.setBounds(0, 0, canvas.width, canvas.height)
118118

features/dd-sdk-android-session-replay/src/test/kotlin/com/datadog/android/sessionreplay/internal/utils/DrawableUtilsTest.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ package com.datadog.android.sessionreplay.internal.utils
99
import android.content.res.Resources
1010
import android.graphics.Bitmap
1111
import android.graphics.Canvas
12+
import android.graphics.Color
13+
import android.graphics.PorterDuff
1214
import android.graphics.drawable.Drawable
1315
import android.graphics.drawable.Drawable.ConstantState
1416
import android.util.AndroidRuntimeException
@@ -38,6 +40,7 @@ import org.mockito.kotlin.any
3840
import org.mockito.kotlin.anyOrNull
3941
import org.mockito.kotlin.argumentCaptor
4042
import org.mockito.kotlin.doAnswer
43+
import org.mockito.kotlin.eq
4144
import org.mockito.kotlin.mock
4245
import org.mockito.kotlin.verify
4346
import org.mockito.kotlin.whenever
@@ -425,6 +428,25 @@ internal class DrawableUtilsTest {
425428
)
426429
}
427430

431+
@Test
432+
fun `M use CLEAR mode W createBitmapOfApproxSizeFromDrawable() { when drawing on canvas }`() {
433+
// Given
434+
whenever(mockDrawable.intrinsicWidth).thenReturn(10)
435+
whenever(mockDrawable.intrinsicHeight).thenReturn(10)
436+
437+
// When
438+
testedDrawableUtils.createBitmapOfApproxSizeFromDrawable(
439+
drawable = mockDrawable,
440+
drawableWidth = mockDrawable.intrinsicWidth,
441+
drawableHeight = mockDrawable.intrinsicHeight,
442+
displayMetrics = mockDisplayMetrics,
443+
bitmapCreationCallback = mockBitmapCreationCallback
444+
)
445+
446+
// Then
447+
verify(mockCanvas).drawColor(eq(Color.TRANSPARENT), eq(PorterDuff.Mode.CLEAR))
448+
}
449+
428450
companion object {
429451
@JvmStatic
430452
fun exceptionTypes(): Stream<RuntimeException> {

reliability/stub-core/src/main/kotlin/com/datadog/android/core/stub/StubInternalLogger.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ internal class StubInternalLogger : InternalLogger {
1616

1717
val telemetryEventsWritten = mutableListOf<StubTelemetryEvent>()
1818

19+
@Suppress("MagicNumber")
1920
override fun log(
2021
level: InternalLogger.Level,
2122
target: InternalLogger.Target,

0 commit comments

Comments
 (0)