Skip to content

Commit 17d6c5d

Browse files
committed
match unit test
1 parent 01304bf commit 17d6c5d

7 files changed

Lines changed: 380 additions & 79 deletions

File tree

sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/ReplayOptions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ data class ReplayOptions(
2323
sealed class CompressionMethod {
2424
data object ScreenImage : CompressionMethod()
2525
data class OverlayTiles(
26-
val layers: Int = 10,
26+
val layers: Int = 15,
2727
val backtracking: Boolean = true,
2828
) : CompressionMethod()
2929
}

sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/capture/ExportDiffManager.kt

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,39 +46,35 @@ class ExportDiffManager(
4646
removes = currentImages.subList(lastKeyNodeIdx + 1, currentImages.size).toMutableList()
4747
currentImages.subList(lastKeyNodeIdx + 1, currentImages.size).clear()
4848

49-
// Keep only signatures that still point into the retained prefix.
5049
val filtered = currentImagesIndex.filterValues { value -> value <= lastKeyNodeIdx }
5150
currentImagesIndex.clear()
5251
currentImagesIndex.putAll(filtered)
5352
} else {
54-
for ((tileIdx, tile) in tiledFrame.tiles.withIndex()) {
55-
val tileSignature = signature.tileSignatures.getOrNull(tileIdx)
53+
for (tile in tiledFrame.tiles) {
5654
val addImage =
57-
tile.bitmap.asExportedImage(format = format, rect = tile.rect, tileSignature = tileSignature)
55+
tile.bitmap.asExportedImage(format = format, rect = tile.rect, imageSignature = signature)
5856
?: return null
5957
adds.add(addImage)
60-
if (tileSignature != null) {
61-
currentImages.add(
62-
ExportFrame.RemoveImage(
63-
keyFrameId = keyFrameId,
64-
tileSignature = tileSignature,
65-
)
58+
currentImages.add(
59+
ExportFrame.RemoveImage(
60+
keyFrameId = keyFrameId,
61+
imageSignature = signature,
6662
)
67-
}
63+
)
6864
}
6965
currentImagesIndex[signature] = currentImages.size - 1
7066
}
7167
} else {
72-
for ((tileIdx, tile) in tiledFrame.tiles.withIndex()) {
73-
val tileSignature = signature?.tileSignatures?.getOrNull(tileIdx)
74-
val addImage = tile.bitmap.asExportedImage(format = format, rect = tile.rect, tileSignature = tileSignature)
68+
for (tile in tiledFrame.tiles) {
69+
val imageSignature = tiledFrame.imageSignature
70+
val addImage = tile.bitmap.asExportedImage(format = format, rect = tile.rect, imageSignature = imageSignature)
7571
?: return null
7672
adds.add(addImage)
77-
if (tileSignature != null) {
73+
if (imageSignature != null) {
7874
currentImages.add(
7975
ExportFrame.RemoveImage(
8076
keyFrameId = keyFrameId,
81-
tileSignature = tileSignature,
77+
imageSignature = imageSignature,
8278
)
8379
)
8480
}
@@ -114,7 +110,7 @@ class ExportDiffManager(
114110
private fun Bitmap.asExportedImage(
115111
format: ExportFrame.ExportFormat,
116112
rect: IntRect,
117-
tileSignature: TileSignature?,
113+
imageSignature: ImageSignature?,
118114
): ExportFrame.AddImage? {
119115
val outputStream = ByteArrayOutputStream()
120116
return try {
@@ -138,7 +134,7 @@ private fun Bitmap.asExportedImage(
138134
ExportFrame.AddImage(
139135
imageBase64 = compressedImage,
140136
rect = rect,
141-
tileSignature = tileSignature,
137+
imageSignature = imageSignature,
142138
)
143139
} finally {
144140
outputStream.close()

sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/capture/ExportFrame.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ data class ExportFrame(
2828
AddImage(
2929
imageBase64 = imageBase64,
3030
rect = IntRect(left = 0, top = 0, width = origWidth, height = origHeight),
31-
tileSignature = null
31+
imageSignature = null
3232
)
3333
),
3434
removeImages = null,
@@ -44,13 +44,13 @@ data class ExportFrame(
4444

4545
data class RemoveImage(
4646
val keyFrameId: Int,
47-
val tileSignature: TileSignature,
47+
val imageSignature: ImageSignature,
4848
)
4949

5050
data class AddImage(
5151
val imageBase64: String,
5252
val rect: IntRect,
53-
val tileSignature: TileSignature?,
53+
val imageSignature: ImageSignature?,
5454
)
5555

5656
sealed class ExportFormat {

sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/exporter/RRWebEventGenerator.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import com.launchdarkly.observability.replay.RRWebCustomDataTag
1515
import com.launchdarkly.observability.replay.RRWebIncrementalSource
1616
import com.launchdarkly.observability.replay.RRWebMouseInteraction
1717
import com.launchdarkly.observability.replay.capture.ExportFrame
18-
import com.launchdarkly.observability.replay.capture.TileSignature
18+
import com.launchdarkly.observability.replay.capture.ImageSignature
1919
import kotlinx.serialization.json.JsonPrimitive
2020
import kotlinx.serialization.json.buildJsonArray
2121
import kotlinx.serialization.json.buildJsonObject
@@ -57,7 +57,7 @@ class RRWebEventGenerator(
5757
private var imageNodeId: Int? = null
5858
private var bodyNodeId: Int? = null
5959
private var knownKeyFrameId: Int? = null
60-
private val nodeIds = mutableMapOf<TileSignature, Int>()
60+
private val nodeIds = mutableMapOf<ImageSignature, Int>()
6161

6262
data class State(
6363
val lastSid: Int = 0,
@@ -66,7 +66,7 @@ class RRWebEventGenerator(
6666
val imageNodeId: Int? = null,
6767
val bodyNodeId: Int? = null,
6868
val knownKeyFrameId: Int? = null,
69-
val nodeIds: Map<TileSignature, Int> = emptyMap(),
69+
val nodeIds: Map<ImageSignature, Int> = emptyMap(),
7070
)
7171

7272
private fun nextSid(): Int {
@@ -88,7 +88,7 @@ class RRWebEventGenerator(
8888

8989
private fun tileNode(exportFrame: ExportFrame, image: ExportFrame.AddImage): Pair<EventNode, Int> {
9090
val tileCanvasId = nextNodeId()
91-
image.tileSignature?.let { nodeIds[it] = tileCanvasId }
91+
image.imageSignature?.let { nodeIds[it] = tileCanvasId }
9292
val dataUrl = "data:${imageMimeType(exportFrame.format)};base64,${image.imageBase64}"
9393
val node = EventNode(
9494
id = tileCanvasId,
@@ -110,7 +110,7 @@ class RRWebEventGenerator(
110110

111111
var totalCanvasSize = 0
112112
val removes = exportFrame.removeImages?.mapNotNull { removal ->
113-
nodeIds[removal.tileSignature]?.let { nodeId ->
113+
nodeIds[removal.imageSignature]?.let { nodeId ->
114114
Removal(parentId = bodyId, id = nodeId)
115115
}
116116
} ?: emptyList()

0 commit comments

Comments
 (0)