getsentry / getsentry/sentry-java

Session Replay: consolidate window size detection onto OnLayoutChangeListener

Ouverte
#5,382 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
Android Improvement Replays
Langage dominant
Kotlin
Étoiles
1.4k
Forks
478
Merge moyen
2 j 23 h
PR mergées (30 j)
67

Description

## Summary

`WindowRecorder.determineWindowSize` currently has two detection paths for window size changes:

1. **Synchronous**: if the root already has size at registration time, compare and emit immediately.
2. **Deferred** (`OnPreDrawListener`): if the root has no size yet (typical — Curtains fires `onRootViewsChanged` before the first traversal), register a listener that re-checks on every pre-draw and removes itself once size is known.

[#5333](https://github.com/getsentry/sentry-java/pull/5333) added a third path — an `OnLayoutChangeListener` per tracked root — to detect same-root resizes for activities with `configChanges` (Unity, video players). This listener strictly subsumes the `OnPreDrawListener` path: it fires on the first `View.layout(0, 0, W, H)` (bounds differ from the initial 0/0/0/0), which happens on the same Choreographer frame but before draw.

## Proposed change

Replace the `OnPreDrawListener` path with the `OnLayoutChangeListener`, keeping the synchronous check for the rare case where the root already has size at add time. This would:

- Remove the dual-listener setup (simpler code, one mechanism instead of two).
- Eliminate the per-preDraw iteration that checks `hasSize()` and `root == currentRoot` on every draw until size is known.
- Unify initial detection and subsequent resize detection into a single listener.

The `OnLayoutChangeListener` already has the latest-root guard (`v != rootViews.lastOrNull()?.get()` → skip), matching the `OnPreDrawListener`'s existing `root != currentRoot` guard.

## Why it wasn't done in #5333

The refactor changes behavior for all apps, not just `configChanges` activities. It was kept out of scope to limit regression risk in the SurfaceView capture PR.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.