DataDog / dd-sdk-android

Datadog SDK for Android (Compatible with Kotlin and Java)
Apache License 2.0
146 stars 59 forks source link

RUM-4342 simplify generic type in mappers #2015

Closed xgouchet closed 4 months ago

xgouchet commented 4 months ago

What does this PR do?

On SR mappers, we added a generic type argument to tell the type of wireframe we output. In practice, this became useless as the map method returns a list of wireframe, more often than not of different types, meaning almost every implementation uses the most generic type as an argument (MobileSegment.Wireframe instead of ImageWireframe or TextWireframe), and the actual type is never used in calling methods.

In addition, we have to use some unchecked casts when creating the list of mappers, e.g.:

@Suppress("UNCHECKED_CAST")
val sliderWireframeMapper = SliderWireframeMapper(…) as WireframeMapper<View, *>

This PR aims at simplifying this part.

codecov-commenter commented 4 months ago

Codecov Report

Attention: Patch coverage is 93.87755% with 3 lines in your changes are missing coverage. Please review.

Project coverage is 83.48%. Comparing base (1434002) to head (0e77e6c).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## develop #2015 +/- ## =========================================== - Coverage 83.53% 83.48% -0.05% =========================================== Files 478 478 Lines 17531 17578 +47 Branches 2661 2672 +11 =========================================== + Hits 14643 14674 +31 - Misses 2164 2177 +13 - Partials 724 727 +3 ``` | [Files](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | Coverage Δ | | |---|---|---| | [...sessionreplay/material/MaterialExtensionSupport.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay-material%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Fmaterial%2FMaterialExtensionSupport.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXktbWF0ZXJpYWwvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9tYXRlcmlhbC9NYXRlcmlhbEV4dGVuc2lvblN1cHBvcnQua3Q=) | `100.00% <100.00%> (ø)` | | | [...id/sessionreplay/material/SliderWireframeMapper.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay-material%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Fmaterial%2FSliderWireframeMapper.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXktbWF0ZXJpYWwvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9tYXRlcmlhbC9TbGlkZXJXaXJlZnJhbWVNYXBwZXIua3Q=) | `97.40% <ø> (ø)` | | | [...droid/sessionreplay/material/TabWireframeMapper.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay-material%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Fmaterial%2FTabWireframeMapper.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXktbWF0ZXJpYWwvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9tYXRlcmlhbC9UYWJXaXJlZnJhbWVNYXBwZXIua3Q=) | `98.33% <100.00%> (ø)` | | | [...datadog/android/sessionreplay/MapperTypeWrapper.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2FMapperTypeWrapper.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9NYXBwZXJUeXBlV3JhcHBlci5rdA==) | `100.00% <100.00%> (ø)` | | | [...ndroid/sessionreplay/SessionReplayConfiguration.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2FSessionReplayConfiguration.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9TZXNzaW9uUmVwbGF5Q29uZmlndXJhdGlvbi5rdA==) | `100.00% <100.00%> (ø)` | | | [.../sessionreplay/internal/DefaultRecorderProvider.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2FDefaultRecorderProvider.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9EZWZhdWx0UmVjb3JkZXJQcm92aWRlci5rdA==) | `85.59% <100.00%> (+0.71%)` | :arrow_up: | | [...oid/sessionreplay/internal/NoOpExtensionSupport.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2FNoOpExtensionSupport.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9Ob09wRXh0ZW5zaW9uU3VwcG9ydC5rdA==) | `100.00% <100.00%> (ø)` | | | [...oid/sessionreplay/internal/SessionReplayFeature.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2FSessionReplayFeature.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9TZXNzaW9uUmVwbGF5RmVhdHVyZS5rdA==) | `99.08% <ø> (-0.92%)` | :arrow_down: | | [...ssionreplay/internal/recorder/TreeViewTraversal.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Frecorder%2FTreeViewTraversal.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZWNvcmRlci9UcmVlVmlld1RyYXZlcnNhbC5rdA==) | `100.00% <100.00%> (ø)` | | | [...order/mapper/BaseAsyncBackgroundWireframeMapper.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Frecorder%2Fmapper%2FBaseAsyncBackgroundWireframeMapper.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZWNvcmRlci9tYXBwZXIvQmFzZUFzeW5jQmFja2dyb3VuZFdpcmVmcmFtZU1hcHBlci5rdA==) | `95.08% <100.00%> (ø)` | | | ... and [12 more](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | | ... and [25 files with indirect coverage changes](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2015/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog)