You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add HTTP Request Trigger to sentry-samples-android app
* [replay] Make DefaultReplayBreadcrumbConverter the default BeforeBreadcrumbCallback to extract NetworkRequestData from Hint
-> NetworkRequestData is landing on DefaultReplayBreadcrumbConverter via Hint.get(replay:networkDetails)
* [replay] Add data classes for NetworkDetails
These get set on the breadcrumb Hint, and then hang around in DefaultReplayBreadcrumbConverter until the replay segment has been sent off
See
https://github.com/getsentry/sentry-javascript/blob/632f0b953d99050c11b0edafb9f80b5f3ba88045/packages/replay-internal/src/types/performance.ts#L133-L140https://github.com/getsentry/sentry-javascript/blob/develop/packages/replay-internal/src/types/request.ts#L12
* [DNL] Force dashboard to show request/response bodies
Manually set networkDetailHasUrls to pass this check
https://github.com/getsentry/sentry-javascript/blob/d1646c8a281dd8795c5a6a3b8e18f2e7069e7fa9/packages/replay-internal/src/util/handleRecordingEmit.ts#L134https://github.com/getsentry/sentry/blob/master/static/app/views/replays/detail/network/details/getOutputType.tsx#L33https://github.com/getsentry/sentry/blob/master/static/app/views/replays/detail/network/details/content.tsx#L55-L56
* Move BeforeBreadcrumbCallback initialization to after user config
added some unit tests:
./gradlew :sentry-android-replay:testDebugUnitTest --tests="*DefaultReplayBreadcrumbConverterTest*"
* bugfix: Update Breadcrumb #hashcode to be consistent with #equals
Breadcrumb.java has several timestamp fields:
`timestamp: Date`, `timestampMs: Long`, `nanos: Long`
`hashcode` was relying solely on `timestamp`, which can be null depending on which constructor was used.
=> Change to use getTimestamp as 1. this is what equals does (consistency) 2. getTimestamp initialises timestamp if null.
* Initial NetworkDetails extraction logic
Entrypoint is NetworkDetailCaptureUtils (initializeForUrl) called from SentryOkHttpInterceptor
- common logic to handle checking sdk options.
- Accept data from http client via NetworkBodyExtractor, NetworkHeaderExtractor interfaces
that can be reused in future (if needed)
Placeholder impl for req/resp bodies.
From https://docs.sentry.io/platforms/javascript/session-replay/configuration/
- networkDetailAllowUrls, networkDetailDenyUrls,
- networkCaptureBodies
- networkRequestHeaders, networkResponseHeaders
These SDKOptions don't exist yet => impl acts as if they do, but have not been enabled.
* DefaultReplayBreadcrumbConverter properly manages NetworkRequestData entries
Removes entry when creating RRWebSpanEvent
Uses syncrhonized LinkedHashMap with impl to cap size of map (avoid
memory bloat)
* Extract bodies of okhttp requests/responses
Replaces previous placeholder logic.
Now NetworkBodyParser uses io.sentry.JsonObjectReader
to extract body into JSONObject, JSONArray, with fallback to plain-text String (or nothing)
* Check-in sentry-android-replay.api
* Add additional http request types to sentry-samples app for testing
One-shot bodies
Form bodies
plain text bodies
binary bodies
* Add body too large http request types to sentry-samples app
* Properly handle content bodies that are too large
based on cursor[bot] feedback -
https://github.com/getsentry/sentry-java/pull/4796/files#r2466871208
* Disable Network Detail extraction
Initialize the values in FAKE_OPTIONS so that implementation acts as if dev never turned it on.
Leaves in the FAKE_OPTIONS variable to be easy to update reference to real `options` later on.
* Modify ReplayBreadcrumbConverter API to avoid breaking flutter/RN SDKs
use composition via optional constructor on DefaultReplayBreadcrumbConverter
Instead of modifying the parent interface ReplayBreadcrumbConverter to force all subclasses to implement BeforeBreadcrumbCallback (breaking / harder to manage change)
* Move ReplayBreadcrumbConverter initialization after SDKOptions initialization
DefaultReplayBreadcrumbConverter depends on SDKOptions as it now
needs to delegate to any user-provided BeforeBreadcrumbCallback
* Custom #equals/#hashcode for http breadcrumbs
review thread - https://github.com/getsentry/sentry-java/pull/4796/files#r2461102218
* ./gradlew apiDump
---------
Co-authored-by: Sentry Github Bot <[email protected]>
0 commit comments