Skip to content

Commit 82404ff

Browse files
committed
Cleanup
Linter / formatting / tests / comments
1 parent e449369 commit 82404ff

File tree

6 files changed

+160
-126
lines changed

6 files changed

+160
-126
lines changed

sentry-android-replay/src/main/java/io/sentry/android/replay/DefaultReplayBreadcrumbConverter.kt

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,9 @@ public open class DefaultReplayBreadcrumbConverter : ReplayBreadcrumbConverter {
4242
)
4343
private var userBeforeBreadcrumbCallback: BeforeBreadcrumbCallback? = null
4444

45-
// TODO: If user provided a new Breadcrumb object via their BeforeBreadcrumbCallback, is that reflected in the `Breadcrumb`s passed in here?
4645
override fun convert(breadcrumb: Breadcrumb): RRWebEvent? {
4746
var breadcrumbMessage: String? = null
48-
var breadcrumbCategory: String?
47+
val breadcrumbCategory: String?
4948
var breadcrumbLevel: SentryLevel? = null
5049
val breadcrumbData = mutableMapOf<String, Any?>()
5150
when {
@@ -142,35 +141,43 @@ public open class DefaultReplayBreadcrumbConverter : ReplayBreadcrumbConverter {
142141
this.userBeforeBreadcrumbCallback = beforeBreadcrumbCallback
143142
}
144143

145-
/**
146-
* Delegate to user-provided callback (if exists) to provide the final breadcrumb to process.
147-
*/
144+
/** Delegate to user-provided callback (if exists) to provide the final breadcrumb to process. */
148145
override fun execute(breadcrumb: Breadcrumb, hint: Hint): Breadcrumb? {
149146
val callback = userBeforeBreadcrumbCallback
150-
val result = if (callback != null) {
151-
callback.execute(breadcrumb, hint)
152-
} else {
153-
breadcrumb
154-
}
147+
val result =
148+
if (callback != null) {
149+
callback.execute(breadcrumb, hint)
150+
} else {
151+
breadcrumb
152+
}
155153

156154
result?.let { finalBreadcrumb ->
157155
extractNetworkRequestDataFromHint(finalBreadcrumb, hint)?.let { networkData ->
158156
httpNetworkDetails[finalBreadcrumb] = networkData
159157
}
160158
}
161159

162-
Log.d("SentryNetwork", "SentryNetwork: BeforeBreadcrumbCallback - Hint: $hint, Breadcrumb: $result")
160+
Log.d(
161+
"SentryNetwork",
162+
"SentryNetwork: BeforeBreadcrumbCallback - Hint: $hint, Breadcrumb: $result",
163+
)
163164
return result
164165
}
165166

166-
private fun extractNetworkRequestDataFromHint(breadcrumb: Breadcrumb, breadcrumbHint: Hint): NetworkRequestData? {
167+
private fun extractNetworkRequestDataFromHint(
168+
breadcrumb: Breadcrumb,
169+
breadcrumbHint: Hint,
170+
): NetworkRequestData? {
167171
if (breadcrumb.type != "http" && breadcrumb.category != "http") {
168172
return null
169173
}
170174

171175
val networkDetails = breadcrumbHint.get("replay:networkDetails") as? NetworkRequestData
172176
if (networkDetails != null) {
173-
Log.d("SentryNetwork", "SentryNetwork: Found structured NetworkRequestData in hint: $networkDetails")
177+
Log.d(
178+
"SentryNetwork",
179+
"SentryNetwork: Found structured NetworkRequestData in hint: $networkDetails",
180+
)
174181
return networkDetails
175182
}
176183

@@ -191,9 +198,12 @@ public open class DefaultReplayBreadcrumbConverter : ReplayBreadcrumbConverter {
191198
if (!hasStartTimestamp) reasons.add("missing start timestamp")
192199
if (!hasEndTimestamp) reasons.add("missing end timestamp")
193200

194-
Log.d("SentryReplay", "Breadcrumb RRWeb span validation: ${if (isValid) "VALID" else "INVALID"}" +
195-
if (!isValid) " (${reasons.joinToString(", ")})" else "" +
196-
" - URL: ${url ?: "null"}, Category: ${category}")
201+
Log.d(
202+
"SentryReplay",
203+
"Breadcrumb RRWeb span validation: ${if (isValid) "VALID" else "INVALID"}" +
204+
if (!isValid) " (${reasons.joinToString(", ")})"
205+
else "" + " - URL: ${url ?: "null"}, Category: ${category}",
206+
)
197207

198208
return isValid
199209
}
@@ -267,7 +277,6 @@ public open class DefaultReplayBreadcrumbConverter : ReplayBreadcrumbConverter {
267277
}
268278
}
269279
// Original breadcrumb http data
270-
// TODO: Remove if superceded by more detailed data (above).
271280
for ((key, value) in breadcrumb.data) {
272281
if (key in supportedNetworkData) {
273282
breadcrumbData[

sentry-android-replay/src/test/java/io/sentry/android/replay/DefaultReplayBreadcrumbConverterTest.kt

Lines changed: 98 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -331,10 +331,11 @@ class DefaultReplayBreadcrumbConverterTest {
331331
@Test
332332
fun `returned breadcrumb is not modified when no user BeforeBreadcrumbCallback is provided`() {
333333
val converter = fixture.getSut()
334-
val breadcrumb = Breadcrumb(Date()).apply {
335-
message = "test message"
336-
category = "test.category"
337-
}
334+
val breadcrumb =
335+
Breadcrumb(Date()).apply {
336+
message = "test message"
337+
category = "test.category"
338+
}
338339
val hint = Hint()
339340

340341
converter.setUserBeforeBreadcrumbCallback(null)
@@ -347,17 +348,20 @@ class DefaultReplayBreadcrumbConverterTest {
347348
@Test
348349
fun `returned breadcrumb is modified according to user provided BeforeBreadcrumbCallback`() {
349350
val converter = fixture.getSut()
350-
val originalBreadcrumb = Breadcrumb(Date()).apply {
351-
message = "original message"
352-
category = "original.category"
353-
}
354-
val userModifiedBreadcrumb = Breadcrumb(Date()).apply {
355-
message = "modified message"
356-
category = "modified.category"
357-
}
351+
val originalBreadcrumb =
352+
Breadcrumb(Date()).apply {
353+
message = "original message"
354+
category = "original.category"
355+
}
356+
val userModifiedBreadcrumb =
357+
Breadcrumb(Date()).apply {
358+
message = "modified message"
359+
category = "modified.category"
360+
}
358361
val hint = Hint()
359362

360-
val userBeforeBreadcrumbCallback = SentryOptions.BeforeBreadcrumbCallback { _, _ -> userModifiedBreadcrumb }
363+
val userBeforeBreadcrumbCallback =
364+
SentryOptions.BeforeBreadcrumbCallback { _, _ -> userModifiedBreadcrumb }
361365
converter.setUserBeforeBreadcrumbCallback(userBeforeBreadcrumbCallback)
362366

363367
val result = converter.execute(originalBreadcrumb, hint)
@@ -368,10 +372,11 @@ class DefaultReplayBreadcrumbConverterTest {
368372
@Test
369373
fun `returns null when user BeforeBreadcrumbCallback returns null`() {
370374
val converter = fixture.getSut()
371-
val breadcrumb = Breadcrumb(Date()).apply {
372-
message = "test message"
373-
category = "test.category"
374-
}
375+
val breadcrumb =
376+
Breadcrumb(Date()).apply {
377+
message = "test message"
378+
category = "test.category"
379+
}
375380
val hint = Hint()
376381

377382
val userCallback = SentryOptions.BeforeBreadcrumbCallback { _, _ -> null }
@@ -385,20 +390,22 @@ class DefaultReplayBreadcrumbConverterTest {
385390
@Test
386391
fun `network data is extracted from hint for http breadcrumbs with user callback`() {
387392
val converter = fixture.getSut()
388-
val httpBreadcrumb = Breadcrumb(Date()).apply {
389-
type = "http"
390-
category = "http"
391-
data["url"] = "https://example.com"
392-
}
393-
394-
val networkData = NetworkRequestData(
395-
"GET",
396-
200,
397-
100L,
398-
500L,
399-
ReplayNetworkRequestOrResponse(100L, null, mapOf("Content-Type" to "application/json")),
400-
ReplayNetworkRequestOrResponse(500L, null, mapOf("Content-Type" to "application/json"))
401-
)
393+
val httpBreadcrumb =
394+
Breadcrumb(Date()).apply {
395+
type = "http"
396+
category = "http"
397+
data["url"] = "https://example.com"
398+
}
399+
400+
val networkData =
401+
NetworkRequestData(
402+
"GET",
403+
200,
404+
100L,
405+
500L,
406+
ReplayNetworkRequestOrResponse(100L, null, mapOf("Content-Type" to "application/json")),
407+
ReplayNetworkRequestOrResponse(500L, null, mapOf("Content-Type" to "application/json")),
408+
)
402409
val hint = Hint()
403410
hint.set("replay:networkDetails", networkData)
404411

@@ -408,26 +415,35 @@ class DefaultReplayBreadcrumbConverterTest {
408415
val result = converter.execute(httpBreadcrumb, hint)
409416

410417
assertSame(httpBreadcrumb, result)
411-
// Network data should be stored internally for later conversion
412418
}
413419

414420
@Test
415421
fun `network data is extracted from hint for http breadcrumbs without user callback`() {
416422
val converter = fixture.getSut()
417-
val httpBreadcrumb = Breadcrumb(Date()).apply {
418-
type = "http"
419-
category = "http"
420-
data["url"] = "https://example.com"
421-
}
422-
423-
val networkData = NetworkRequestData(
424-
"POST",
425-
201,
426-
200L,
427-
400L,
428-
ReplayNetworkRequestOrResponse(200L, NetworkBody.JsonObject(mapOf("body" to "request")), mapOf()),
429-
ReplayNetworkRequestOrResponse(400L, NetworkBody.JsonObject(mapOf("body" to "response")), mapOf())
430-
)
423+
val httpBreadcrumb =
424+
Breadcrumb(Date()).apply {
425+
type = "http"
426+
category = "http"
427+
data["url"] = "https://example.com"
428+
}
429+
430+
val networkData =
431+
NetworkRequestData(
432+
"POST",
433+
201,
434+
200L,
435+
400L,
436+
ReplayNetworkRequestOrResponse(
437+
200L,
438+
NetworkBody.fromJsonObject(mapOf("body" to "request")),
439+
mapOf(),
440+
),
441+
ReplayNetworkRequestOrResponse(
442+
400L,
443+
NetworkBody.fromJsonObject(mapOf("body" to "response")),
444+
mapOf(),
445+
),
446+
)
431447
val hint = Hint()
432448
hint.set("replay:networkDetails", networkData)
433449

@@ -445,19 +461,21 @@ class DefaultReplayBreadcrumbConverterTest {
445461
val hint = Hint()
446462

447463
// First callback modifies the message
448-
val firstCallback = SentryOptions.BeforeBreadcrumbCallback { b, _ ->
449-
b.message = "modified by first"
450-
b
451-
}
464+
val firstCallback =
465+
SentryOptions.BeforeBreadcrumbCallback { b, _ ->
466+
b.message = "modified by first"
467+
b
468+
}
452469
converter.setUserBeforeBreadcrumbCallback(firstCallback)
453470
var result = converter.execute(breadcrumb, hint)
454471
assertEquals("modified by first", result?.message)
455472

456473
// Second callback modifies differently
457-
val secondCallback = SentryOptions.BeforeBreadcrumbCallback { b, _ ->
458-
b.message = "modified by second"
459-
b
460-
}
474+
val secondCallback =
475+
SentryOptions.BeforeBreadcrumbCallback { b, _ ->
476+
b.message = "modified by second"
477+
b
478+
}
461479
converter.setUserBeforeBreadcrumbCallback(secondCallback)
462480

463481
breadcrumb.message = "test" // Reset
@@ -474,11 +492,12 @@ class DefaultReplayBreadcrumbConverterTest {
474492
var capturedBreadcrumb: Breadcrumb? = null
475493
var capturedHint: Hint? = null
476494

477-
val capturingCallback = SentryOptions.BeforeBreadcrumbCallback { b, h ->
478-
capturedBreadcrumb = b
479-
capturedHint = h
480-
b
481-
}
495+
val capturingCallback =
496+
SentryOptions.BeforeBreadcrumbCallback { b, h ->
497+
capturedBreadcrumb = b
498+
capturedHint = h
499+
b
500+
}
482501
converter.setUserBeforeBreadcrumbCallback(capturingCallback)
483502

484503
converter.execute(breadcrumb, hint)
@@ -490,10 +509,11 @@ class DefaultReplayBreadcrumbConverterTest {
490509
@Test
491510
fun `non-http breadcrumbs do not extract network data`() {
492511
val converter = fixture.getSut()
493-
val navigationBreadcrumb = Breadcrumb(Date()).apply {
494-
type = "navigation"
495-
category = "navigation"
496-
}
512+
val navigationBreadcrumb =
513+
Breadcrumb(Date()).apply {
514+
type = "navigation"
515+
category = "navigation"
516+
}
497517
val hint = Hint()
498518
hint.set("replay:networkDetails", NetworkRequestData("GET", 200, null, null, null, null))
499519

@@ -511,20 +531,22 @@ class DefaultReplayBreadcrumbConverterTest {
511531
val breadcrumb = Breadcrumb(Date()).apply { message = "original" }
512532
val hint = Hint()
513533

514-
val firstCallback = SentryOptions.BeforeBreadcrumbCallback { b, h ->
515-
b.message = "modified by first"
516-
b
517-
}
518-
519-
val secondCallback = SentryOptions.BeforeBreadcrumbCallback { b, h ->
520-
// This simulates what happens when ReplayBreadcrumbConverter
521-
// wraps a user's callback
522-
val result = firstCallback.execute(b, h)
523-
result?.let {
524-
it.message = "${it.message} and second"
525-
it
534+
val firstCallback =
535+
SentryOptions.BeforeBreadcrumbCallback { b, h ->
536+
b.message = "modified by first"
537+
b
538+
}
539+
540+
val secondCallback =
541+
SentryOptions.BeforeBreadcrumbCallback { b, h ->
542+
// This simulates what happens when ReplayBreadcrumbConverter
543+
// wraps a user's callback
544+
val result = firstCallback.execute(b, h)
545+
result?.let {
546+
it.message = "${it.message} and second"
547+
it
548+
}
526549
}
527-
}
528550

529551
converter.setUserBeforeBreadcrumbCallback(secondCallback)
530552

sentry/src/main/java/io/sentry/rrweb/RRWebOptionsEvent.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ public RRWebOptionsEvent(final @NotNull SentryOptions options) {
5252
optionsPayload.put("quality", replayOptions.getQuality().serializedName());
5353
optionsPayload.put("maskedViewClasses", replayOptions.getMaskViewClasses());
5454
optionsPayload.put("unmaskedViewClasses", replayOptions.getUnmaskViewClasses());
55-
optionsPayload.put("networkDetailHasUrls", true);
5655
}
5756

5857
@NotNull

0 commit comments

Comments
 (0)