Skip to content

Commit cf41629

Browse files
authored
Merge pull request #2965 from DataDog/jmoskovich/rum-5445/make-instrumentation-tests-behavioral
RUM-5445: Revive Session Replay instrumentation tests
2 parents f786365 + 35dcb23 commit cf41629

File tree

89 files changed

+2508
-3619
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+2508
-3619
lines changed

features/dd-sdk-android-session-replay/api/apiSurface

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ data class com.datadog.android.sessionreplay.MapperTypeWrapper<T: android.view.V
1313
fun getUnsafeMapper(): com.datadog.android.sessionreplay.recorder.mapper.WireframeMapper<android.view.View>
1414
override fun equals(Any?): Boolean
1515
override fun hashCode(): Int
16+
const val RECORD_TYPE_META: Long
17+
const val RECORD_TYPE_FOCUS: Long
18+
const val RECORD_TYPE_VIEW_END: Long
19+
const val RECORD_TYPE_VISUAL_VIEWPORT: Long
20+
const val RECORD_TYPE_FULL_SNAPSHOT: Long
21+
const val RECORD_TYPE_INCREMENTAL_SNAPSHOT: Long
22+
const val WIREFRAME_TYPE_SHAPE: String
23+
const val WIREFRAME_TYPE_TEXT: String
24+
const val WIREFRAME_TYPE_IMAGE: String
25+
const val WIREFRAME_TYPE_PLACEHOLDER: String
26+
const val WIREFRAME_TYPE_WEBVIEW: String
27+
const val IMAGE_DIMEN_CONSIDERED_PII_IN_DP: Int
1628
interface com.datadog.android.sessionreplay.PrivacyLevel
1729
fun android.view.View.setSessionReplayHidden(Boolean)
1830
fun android.view.View.setSessionReplayImagePrivacy(ImagePrivacy?)

features/dd-sdk-android-session-replay/api/dd-sdk-android-session-replay.api

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,24 @@ public final class com/datadog/android/sessionreplay/MapperTypeWrapper {
2424
public fun toString ()Ljava/lang/String;
2525
}
2626

27+
public final class com/datadog/android/sessionreplay/MobileSegmentConstantsKt {
28+
public static final field RECORD_TYPE_FOCUS J
29+
public static final field RECORD_TYPE_FULL_SNAPSHOT J
30+
public static final field RECORD_TYPE_INCREMENTAL_SNAPSHOT J
31+
public static final field RECORD_TYPE_META J
32+
public static final field RECORD_TYPE_VIEW_END J
33+
public static final field RECORD_TYPE_VISUAL_VIEWPORT J
34+
public static final field WIREFRAME_TYPE_IMAGE Ljava/lang/String;
35+
public static final field WIREFRAME_TYPE_PLACEHOLDER Ljava/lang/String;
36+
public static final field WIREFRAME_TYPE_SHAPE Ljava/lang/String;
37+
public static final field WIREFRAME_TYPE_TEXT Ljava/lang/String;
38+
public static final field WIREFRAME_TYPE_WEBVIEW Ljava/lang/String;
39+
}
40+
41+
public final class com/datadog/android/sessionreplay/PrivacyConstantsKt {
42+
public static final field IMAGE_DIMEN_CONSIDERED_PII_IN_DP I
43+
}
44+
2745
public abstract interface class com/datadog/android/sessionreplay/PrivacyLevel {
2846
}
2947

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2016-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.android.sessionreplay
8+
9+
/**
10+
* Constants for MobileSegment record and wireframe types.
11+
*/
12+
13+
/**
14+
* MetaRecord type.
15+
* @see com.datadog.android.sessionreplay.model.MobileSegment.MobileRecord.MetaRecord
16+
*/
17+
const val RECORD_TYPE_META: Long = 4L
18+
19+
/**
20+
* FocusRecord type.
21+
* @see com.datadog.android.sessionreplay.model.MobileSegment.MobileRecord.FocusRecord
22+
*/
23+
const val RECORD_TYPE_FOCUS: Long = 6L
24+
25+
/**
26+
* ViewEndRecord type.
27+
* @see com.datadog.android.sessionreplay.model.MobileSegment.MobileRecord.ViewEndRecord
28+
*/
29+
const val RECORD_TYPE_VIEW_END: Long = 7L
30+
31+
/**
32+
* VisualViewportRecord type.
33+
* @see com.datadog.android.sessionreplay.model.MobileSegment.MobileRecord.VisualViewportRecord
34+
*/
35+
const val RECORD_TYPE_VISUAL_VIEWPORT: Long = 8L
36+
37+
/**
38+
* MobileFullSnapshotRecord type.
39+
* @see com.datadog.android.sessionreplay.model.MobileSegment.MobileRecord.MobileFullSnapshotRecord
40+
*/
41+
const val RECORD_TYPE_FULL_SNAPSHOT: Long = 10L
42+
43+
/**
44+
* MobileIncrementalSnapshotRecord type.
45+
* @see com.datadog.android.sessionreplay.model.MobileSegment.MobileRecord.MobileIncrementalSnapshotRecord
46+
*/
47+
const val RECORD_TYPE_INCREMENTAL_SNAPSHOT: Long = 11L
48+
49+
/**
50+
* ShapeWireframe type.
51+
* @see com.datadog.android.sessionreplay.model.MobileSegment.Wireframe.ShapeWireframe
52+
*/
53+
const val WIREFRAME_TYPE_SHAPE: String = "shape"
54+
55+
/**
56+
* TextWireframe type.
57+
* @see com.datadog.android.sessionreplay.model.MobileSegment.Wireframe.TextWireframe
58+
*/
59+
const val WIREFRAME_TYPE_TEXT: String = "text"
60+
61+
/**
62+
* ImageWireframe type.
63+
* @see com.datadog.android.sessionreplay.model.MobileSegment.Wireframe.ImageWireframe
64+
*/
65+
const val WIREFRAME_TYPE_IMAGE: String = "image"
66+
67+
/**
68+
* PlaceholderWireframe type.
69+
* @see com.datadog.android.sessionreplay.model.MobileSegment.Wireframe.PlaceholderWireframe
70+
*/
71+
const val WIREFRAME_TYPE_PLACEHOLDER: String = "placeholder"
72+
73+
/**
74+
* WebviewWireframe type.
75+
* @see com.datadog.android.sessionreplay.model.MobileSegment.Wireframe.WebviewWireframe
76+
*/
77+
const val WIREFRAME_TYPE_WEBVIEW: String = "webview"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2016-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.android.sessionreplay
8+
9+
/**
10+
* Image dimension threshold in DP for determining if an image should be masked.
11+
* Images >= this size are considered content/PII when using MASK_LARGE_ONLY privacy mode.
12+
* Material design icon size is up to 48x48, but 100dp is used to match more images.
13+
*/
14+
const val IMAGE_DIMEN_CONSIDERED_PII_IN_DP: Int = 100

features/dd-sdk-android-session-replay/src/main/kotlin/com/datadog/android/sessionreplay/internal/net/BatchesToSegmentsMapper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package com.datadog.android.sessionreplay.internal.net
88

99
import com.datadog.android.api.InternalLogger
1010
import com.datadog.android.api.context.DatadogContext
11+
import com.datadog.android.sessionreplay.RECORD_TYPE_FULL_SNAPSHOT
1112
import com.datadog.android.sessionreplay.internal.gson.safeGetAsJsonArray
1213
import com.datadog.android.sessionreplay.internal.gson.safeGetAsJsonObject
1314
import com.datadog.android.sessionreplay.internal.gson.safeGetAsLong
@@ -186,7 +187,7 @@ internal class BatchesToSegmentsMapper(private val internalLogger: InternalLogge
186187

187188
companion object {
188189

189-
private const val FULL_SNAPSHOT_RECORD_TYPE_MOBILE = 10L
190+
private const val FULL_SNAPSHOT_RECORD_TYPE_MOBILE = RECORD_TYPE_FULL_SNAPSHOT
190191
private const val FULL_SNAPSHOT_RECORD_TYPE_BROWSER = 2L
191192

192193
internal const val RECORDS_KEY = "records"

features/dd-sdk-android-session-replay/src/main/kotlin/com/datadog/android/sessionreplay/internal/recorder/resources/ImageTypeResolver.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ package com.datadog.android.sessionreplay.internal.recorder.resources
88

99
import android.graphics.drawable.Drawable
1010
import android.graphics.drawable.GradientDrawable
11-
import androidx.annotation.VisibleForTesting
1211
import com.datadog.android.internal.utils.densityNormalized
12+
import com.datadog.android.sessionreplay.IMAGE_DIMEN_CONSIDERED_PII_IN_DP
1313

1414
internal class ImageTypeResolver {
1515
fun isDrawablePII(drawable: Drawable, density: Float): Boolean {
@@ -24,9 +24,4 @@ internal class ImageTypeResolver {
2424
val isGreaterThan = width >= IMAGE_DIMEN_CONSIDERED_PII_IN_DP || height >= IMAGE_DIMEN_CONSIDERED_PII_IN_DP
2525
return isGreaterThan
2626
}
27-
28-
internal companion object {
29-
// material design icon size is up to 48x48, but use 100 to match more images
30-
@VisibleForTesting internal const val IMAGE_DIMEN_CONSIDERED_PII_IN_DP = 100
31-
}
3227
}

features/dd-sdk-android-session-replay/src/test/kotlin/com/datadog/android/sessionreplay/internal/recorder/resources/DefaultImageWireframeHelperTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import android.util.DisplayMetrics
1919
import android.view.View
2020
import android.widget.TextView
2121
import com.datadog.android.api.InternalLogger
22+
import com.datadog.android.sessionreplay.IMAGE_DIMEN_CONSIDERED_PII_IN_DP
2223
import com.datadog.android.sessionreplay.ImagePrivacy
2324
import com.datadog.android.sessionreplay.forge.ForgeConfigurator
2425
import com.datadog.android.sessionreplay.internal.recorder.ViewUtilsInternal
2526
import com.datadog.android.sessionreplay.internal.recorder.resources.DefaultImageWireframeHelper.Companion.APPLICATION_CONTEXT_NULL_ERROR
2627
import com.datadog.android.sessionreplay.internal.recorder.resources.DefaultImageWireframeHelper.Companion.RESOURCES_NULL_ERROR
27-
import com.datadog.android.sessionreplay.internal.recorder.resources.ImageTypeResolver.Companion.IMAGE_DIMEN_CONSIDERED_PII_IN_DP
2828
import com.datadog.android.sessionreplay.model.MobileSegment
2929
import com.datadog.android.sessionreplay.recorder.MappingContext
3030
import com.datadog.android.sessionreplay.recorder.SystemInformation

features/dd-sdk-android-session-replay/src/test/kotlin/com/datadog/android/sessionreplay/internal/recorder/resources/ImageTypeResolverTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ package com.datadog.android.sessionreplay.internal.recorder.resources
88

99
import android.graphics.drawable.BitmapDrawable
1010
import android.graphics.drawable.GradientDrawable
11+
import com.datadog.android.sessionreplay.IMAGE_DIMEN_CONSIDERED_PII_IN_DP
1112
import com.datadog.android.sessionreplay.forge.ForgeConfigurator
12-
import com.datadog.android.sessionreplay.internal.recorder.resources.ImageTypeResolver.Companion.IMAGE_DIMEN_CONSIDERED_PII_IN_DP
1313
import fr.xgouchet.elmyr.annotation.IntForgery
1414
import fr.xgouchet.elmyr.junit5.ForgeConfiguration
1515
import fr.xgouchet.elmyr.junit5.ForgeExtension

instrumented/integration/src/androidTest/assets/session_replay_payloads/consent_granted_sr_test_payload.json

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)