11package io .sentry ;
22
3+ import static io .sentry .util .IntegrationUtils .addIntegrationToSdkVersion ;
4+
35import io .sentry .protocol .SdkVersion ;
46import io .sentry .util .SampleRateUtils ;
57import java .util .ArrayList ;
1618
1719public final class SentryReplayOptions {
1820
21+ private static final String CUSTOM_MASKING_INTEGRATION_NAME = "ReplayCustomMasking" ;
22+
1923 public static final String TEXT_VIEW_CLASS_NAME = "android.widget.TextView" ;
2024 public static final String IMAGE_VIEW_CLASS_NAME = "android.widget.ImageView" ;
2125 public static final String WEB_VIEW_CLASS_NAME = "android.webkit.WebView" ;
@@ -209,8 +213,9 @@ public enum SentryReplayQuality {
209213
210214 public SentryReplayOptions (final boolean empty , final @ Nullable SdkVersion sdkVersion ) {
211215 if (!empty ) {
212- setMaskAllText (true );
213- setMaskAllImages (true );
216+ // Add default mask classes directly without setting usingCustomMasking flag
217+ maskViewClasses .add (TEXT_VIEW_CLASS_NAME );
218+ maskViewClasses .add (IMAGE_VIEW_CLASS_NAME );
214219 maskViewClasses .add (WEB_VIEW_CLASS_NAME );
215220 maskViewClasses .add (VIDEO_VIEW_CLASS_NAME );
216221 maskViewClasses .add (ANDROIDX_MEDIA_VIEW_CLASS_NAME );
@@ -275,11 +280,12 @@ public void setSessionSampleRate(final @Nullable Double sessionSampleRate) {
275280 * <p>Default is enabled.
276281 */
277282 public void setMaskAllText (final boolean maskAllText ) {
283+ addIntegrationToSdkVersion (CUSTOM_MASKING_INTEGRATION_NAME );
278284 if (maskAllText ) {
279- addMaskViewClass (TEXT_VIEW_CLASS_NAME );
285+ maskViewClasses . add (TEXT_VIEW_CLASS_NAME );
280286 unmaskViewClasses .remove (TEXT_VIEW_CLASS_NAME );
281287 } else {
282- addUnmaskViewClass (TEXT_VIEW_CLASS_NAME );
288+ unmaskViewClasses . add (TEXT_VIEW_CLASS_NAME );
283289 maskViewClasses .remove (TEXT_VIEW_CLASS_NAME );
284290 }
285291 }
@@ -293,11 +299,12 @@ public void setMaskAllText(final boolean maskAllText) {
293299 * <p>Default is enabled.
294300 */
295301 public void setMaskAllImages (final boolean maskAllImages ) {
302+ addIntegrationToSdkVersion (CUSTOM_MASKING_INTEGRATION_NAME );
296303 if (maskAllImages ) {
297- addMaskViewClass (IMAGE_VIEW_CLASS_NAME );
304+ maskViewClasses . add (IMAGE_VIEW_CLASS_NAME );
298305 unmaskViewClasses .remove (IMAGE_VIEW_CLASS_NAME );
299306 } else {
300- addUnmaskViewClass (IMAGE_VIEW_CLASS_NAME );
307+ unmaskViewClasses . add (IMAGE_VIEW_CLASS_NAME );
301308 maskViewClasses .remove (IMAGE_VIEW_CLASS_NAME );
302309 }
303310 }
@@ -308,6 +315,7 @@ public Set<String> getMaskViewClasses() {
308315 }
309316
310317 public void addMaskViewClass (final @ NotNull String className ) {
318+ addIntegrationToSdkVersion (CUSTOM_MASKING_INTEGRATION_NAME );
311319 this .maskViewClasses .add (className );
312320 }
313321
@@ -317,6 +325,7 @@ public Set<String> getUnmaskViewClasses() {
317325 }
318326
319327 public void addUnmaskViewClass (final @ NotNull String className ) {
328+ addIntegrationToSdkVersion (CUSTOM_MASKING_INTEGRATION_NAME );
320329 this .unmaskViewClasses .add (className );
321330 }
322331
@@ -351,12 +360,14 @@ public long getSessionDuration() {
351360
352361 @ ApiStatus .Internal
353362 public void setMaskViewContainerClass (@ NotNull String containerClass ) {
354- addMaskViewClass (containerClass );
363+ addIntegrationToSdkVersion (CUSTOM_MASKING_INTEGRATION_NAME );
364+ maskViewClasses .add (containerClass );
355365 maskViewContainerClass = containerClass ;
356366 }
357367
358368 @ ApiStatus .Internal
359369 public void setUnmaskViewContainerClass (@ NotNull String containerClass ) {
370+ addIntegrationToSdkVersion (CUSTOM_MASKING_INTEGRATION_NAME );
360371 unmaskViewContainerClass = containerClass ;
361372 }
362373
0 commit comments