DataDog / dd-sdk-android

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

RUM-4320 improve masking arch #2011

Closed xgouchet closed 4 months ago

xgouchet commented 4 months ago

What does this PR do?

This PR improves the overall way we deal with privacy settings in the SR modules.

Motivation

The way we used to do thing made things difficult as it implied:

Additional Notes

This PR uses the existing MappingContext that is passed to mappers during the snapshot creation to pass in the current privacy setting. This means each mapper deals with the privacy at snapshot time, and have all the logic in one place, instead of split in two or three classes. Also it means that the privacy could be changed dynamically without effort (e.g. with remote config).

codecov-commenter commented 4 months ago

Codecov Report

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

Project coverage is 83.42%. Comparing base (0c3e683) to head (3c7446f). Report is 2 commits behind head on develop.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## develop #2011 +/- ## =========================================== - Coverage 83.76% 83.42% -0.34% =========================================== Files 488 478 -10 Lines 17779 17546 -233 Branches 2667 2666 -1 =========================================== - Hits 14892 14637 -255 - Misses 2174 2184 +10 - Partials 713 725 +12 ``` | [Files](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?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/2011?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/2011?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% <100.00%> (-0.07%)` | :arrow_down: | | [...ndroid/sessionreplay/SessionReplayConfiguration.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?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%> (ø)` | | | [...adog/android/sessionreplay/SessionReplayPrivacy.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2FSessionReplayPrivacy.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9TZXNzaW9uUmVwbGF5UHJpdmFjeS5rdA==) | `100.00% <100.00%> (ø)` | | | [...oid/sessionreplay/internal/NoOpExtensionSupport.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?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% <ø> (ø)` | | | [...oid/sessionreplay/internal/SessionReplayFeature.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?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==) | `100.00% <100.00%> (ø)` | | | [.../sessionreplay/internal/recorder/MappingContext.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Frecorder%2FMappingContext.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZWNvcmRlci9NYXBwaW5nQ29udGV4dC5rdA==) | `100.00% <100.00%> (ø)` | | | [...essionreplay/internal/recorder/SnapshotProducer.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Frecorder%2FSnapshotProducer.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZWNvcmRlci9TbmFwc2hvdFByb2R1Y2VyLmt0) | `87.88% <100.00%> (ø)` | | | [...nreplay/internal/recorder/ViewOnDrawInterceptor.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Frecorder%2FViewOnDrawInterceptor.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZWNvcmRlci9WaWV3T25EcmF3SW50ZXJjZXB0b3Iua3Q=) | `90.48% <100.00%> (+0.23%)` | :arrow_up: | | [...lay/internal/recorder/WindowCallbackInterceptor.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Frecorder%2FWindowCallbackInterceptor.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZWNvcmRlci9XaW5kb3dDYWxsYmFja0ludGVyY2VwdG9yLmt0) | `100.00% <100.00%> (ø)` | | | ... and [10 more](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | | ... and [30 files with indirect coverage changes](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2011/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog)