Skip to content

Conversation

@abelonogov-ld
Copy link
Contributor

@abelonogov-ld abelonogov-ld commented Dec 2, 2025

Summary

  1. Refactored to use recursive collection to allow to gather Matrix transformations and hierarchical privacy options
  2. Use AbstractComposeView as the base for compose to catch non-standard ComposeViews
  3. Filter out AndroidComposeViews, they are always internal
  4. 0 warning state of SR code
image

How did you test this change?

Are there any deployment considerations?


Note

Switches to a recursive mask collection using a new Mask model, updates capture to draw masks across windows, and improves window inspection on Q+.

  • Masking:
    • Introduces Mask model and new recursive MaskCollector that traverses native and Compose (AbstractComposeView) hierarchies; filters internal AndroidComposeView.
    • Updates ComposeMaskTarget/NativeMaskTarget to return Mask; adds stronger password detection via InputType checks.
    • Removes SensitiveAreasCollector and maskRect API in favor of mask().
  • Capture:
    • CaptureSource now collects Masks and draws them; bases capture on lowest visible window and composites additional windows with translations.
    • Refactors bitmap creation (createBitmap), adds @RequiresApi to pixelCopy, simplifies canvasDraw.
  • Window inspection:
    • WindowInspector uses Q+ WindowInspector.getGlobalWindowViews() and a new locationOnScreen() util for coordinates; cleans up root view reflection.
  • Utils:
    • Adds View.locationOnScreen() extension.

Written by Cursor Bugbot for commit 1180d8b. This will update automatically on new commits. Configure here.

* andrey/nonstandard-views:
  address feadback
  Attached dialog sample
  space
  use Canvas for certain types of windows
  consolidate in one view
  sample of adding floating views
  add floating button
  feat: Android SR Do not send duplicate screens (#304)

# Conflicts:
#	e2e/android/app/src/main/java/com/example/androidobservability/masking/XMLMaskingActivity.kt
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/capture/CaptureSource.kt
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/capture/WindowEntry.kt
#	sdk/@launchdarkly/observability-android/lib/src/test/kotlin/com/launchdarkly/observability/replay/capture/TiledSignatureManagerTest.kt
@abelonogov-ld abelonogov-ld requested a review from a team as a code owner December 2, 2025 21:03
* main:
  feat: support non-standard windows added by WindowManager (#306)
@abelonogov-ld abelonogov-ld enabled auto-merge (squash) December 3, 2025 17:50
@abelonogov-ld abelonogov-ld merged commit ee9f061 into main Dec 3, 2025
22 checks passed
@abelonogov-ld abelonogov-ld deleted the andrey/mask-collector branch December 3, 2025 17:50
abelonogov-ld added a commit that referenced this pull request Dec 3, 2025
* main:
  feat: recursive mask collection (#308)

# Conflicts:
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/capture/CaptureSource.kt
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/masking/ComposeMaskTarget.kt
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/masking/Mask.kt
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/masking/MaskCollector.kt
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/masking/MaskMatcher.kt
#	sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/masking/NativeMaskTarget.kt
abelonogov-ld added a commit that referenced this pull request Dec 4, 2025
* main: (85 commits)
  doc: Add using ldMask in readme. (#311)
  chore: release main (#312)
  feat: take transformed coordinates, which are more precise in animation  (#309)
  chore: release main (#307)
  fix(SEC-7530): update react-server-dom-webpack to 19.0.1 (#310)
  feat: recursive mask collection (#308)
  feat: support non-standard windows added by WindowManager (#306)
  feat: Android SR Do not send duplicate screens (#304)
  test: Add UI and logic to evaluate boolean flags (#305)
  chore: release main (#303)
  feat: Android Dialog Capture (#302)
  chore: Update Android Test main screen (#301)
  chore: release main (#300)
  feat: XML Views Automasking options (#299)
  fix: missed imports (#298)
  chore: release main (#297)
  feat: Support ldMask() for Native and Compose views. (#295)
  chore: release main (#296)
  fix: tweaks Android InteractionDetector to delegate additional defaul… (#294)
  chore: release main (#293)
  ...

# Conflicts:
#	e2e/react-router/src/ldclientLazy.tsx
#	e2e/react-router/src/routes/root.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants