Skip to content

Commit ce53819

Browse files
authored
[v9]: remove manual TTID (#2668)
* remove manual TTID * update CHANGELOG * remove assertion * use SentryTraceOrigins.autoUiTimeToDisplay as origin
1 parent 8043355 commit ce53819

File tree

8 files changed

+18
-288
lines changed

8 files changed

+18
-288
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## Unreleased 9.0.0
44

5+
- Remove `SentryDisplayWidget` and manual TTID implementation ([#2668](https://github.com/getsentry/sentry-dart/pull/2668))
56
- Increase minimum SDK version requirements to Dart v3.5.0 and Flutter v3.24.0 ([#2643](https://github.com/getsentry/sentry-dart/pull/2643))
67
- Remove screenshot option `attachScreenshotOnlyWhenResumed` ([#2664](https://github.com/getsentry/sentry-dart/pull/2664))
78
- Remove deprecated `beforeScreenshot` ([#2662](https://github.com/getsentry/sentry-dart/pull/2662))

flutter/example/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ void navigateToAutoCloseScreen(BuildContext context) {
730730
MaterialPageRoute(
731731
settings: const RouteSettings(name: 'AutoCloseScreen'),
732732
// ignore: deprecated_member_use
733-
builder: (context) => SentryDisplayWidget(child: const AutoCloseScreen()),
733+
builder: (context) => const AutoCloseScreen(),
734734
),
735735
);
736736
}

flutter/lib/sentry_flutter.dart

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,23 @@ library;
44
// ignore: invalid_export_of_internal_element
55
export 'package:sentry/sentry.dart';
66

7+
export 'src/binding_wrapper.dart'
8+
show BindingWrapper, SentryWidgetsFlutterBinding;
9+
export 'src/feedback/sentry_feedback_widget.dart';
10+
export 'src/flutter_sentry_attachment.dart';
711
export 'src/integrations/load_release_integration.dart';
12+
export 'src/integrations/on_error_integration.dart';
813
export 'src/navigation/sentry_navigator_observer.dart';
9-
export 'src/sentry_flutter.dart';
10-
export 'src/sentry_flutter_options.dart';
11-
export 'src/sentry_replay_options.dart';
1214
export 'src/replay/replay_quality.dart';
13-
export 'src/sentry_privacy_options.dart';
14-
export 'src/flutter_sentry_attachment.dart';
15-
export 'src/sentry_asset_bundle.dart' show SentryAssetBundle;
16-
export 'src/integrations/on_error_integration.dart';
1715
export 'src/screenshot/masking_config.dart' show SentryMaskingDecision;
1816
export 'src/screenshot/sentry_mask_widget.dart';
19-
export 'src/screenshot/sentry_unmask_widget.dart';
20-
export 'src/screenshot/sentry_screenshot_widget.dart';
2117
export 'src/screenshot/sentry_screenshot_quality.dart';
22-
export 'src/user_interaction/sentry_user_interaction_widget.dart';
23-
export 'src/binding_wrapper.dart'
24-
show BindingWrapper, SentryWidgetsFlutterBinding;
18+
export 'src/screenshot/sentry_screenshot_widget.dart';
19+
export 'src/screenshot/sentry_unmask_widget.dart';
20+
export 'src/sentry_asset_bundle.dart' show SentryAssetBundle;
21+
export 'src/sentry_flutter.dart';
22+
export 'src/sentry_flutter_options.dart';
23+
export 'src/sentry_privacy_options.dart';
24+
export 'src/sentry_replay_options.dart';
2525
export 'src/sentry_widget.dart';
26-
export 'src/navigation/sentry_display_widget.dart';
27-
export 'src/feedback/sentry_feedback_widget.dart';
26+
export 'src/user_interaction/sentry_user_interaction_widget.dart';

flutter/lib/src/navigation/sentry_display_widget.dart

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

flutter/lib/src/navigation/time_to_initial_display_tracker.dart

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import 'dart:async';
44

55
import 'package:meta/meta.dart';
6-
76
// ignore: implementation_imports
87
import 'package:sentry/src/sentry_tracer.dart';
98

@@ -26,10 +25,8 @@ class TimeToInitialDisplayTracker {
2625
TimeToInitialDisplayTracker._();
2726

2827
FrameCallbackHandler _frameCallbackHandler = DefaultFrameCallbackHandler();
29-
bool _isManual = false;
3028
Completer<DateTime?>? _trackingCompleter;
3129
DateTime? _endTimestamp;
32-
DateTime? _completeTrackingTimeStamp;
3330

3431
final Duration _determineEndtimeTimeout = Duration(seconds: 5);
3532

@@ -61,10 +58,7 @@ class TimeToInitialDisplayTracker {
6158
startTimestamp: startTimestamp,
6259
);
6360

64-
ttidSpan.origin = origin ??
65-
(_isManual
66-
? SentryTraceOrigins.manualUiTimeToDisplay
67-
: SentryTraceOrigins.autoUiTimeToDisplay);
61+
ttidSpan.origin = origin ?? SentryTraceOrigins.autoUiTimeToDisplay;
6862

6963
final duration = Duration(
7064
milliseconds: _endTimestamp.difference(startTimestamp).inMilliseconds);
@@ -87,46 +81,23 @@ class TimeToInitialDisplayTracker {
8781
},
8882
);
8983

90-
// If we already know it's manual we can return the future immediately
91-
if (_isManual) {
92-
final completeTrackingTimeStamp = _completeTrackingTimeStamp;
93-
if (completeTrackingTimeStamp != null) {
94-
// If complete was called before we could call start, complete it here.
95-
_endTimestamp = completeTrackingTimeStamp;
96-
_trackingCompleter?.complete(completeTrackingTimeStamp);
97-
_completeTrackingTimeStamp = null;
98-
}
99-
return future;
100-
}
101-
102-
// Schedules a check at the end of the frame to determine if the tracking
103-
// should be completed immediately (approximation mode) or deferred (manual mode).
10484
_frameCallbackHandler.addPostFrameCallback((_) {
105-
if (!_isManual) {
106-
completeTracking();
107-
}
85+
completeTracking();
10886
});
10987

11088
return future;
11189
}
11290

113-
void markAsManual() {
114-
_isManual = true;
115-
}
116-
11791
void completeTracking() {
11892
final timestamp = DateTime.now();
11993

12094
if (_trackingCompleter != null && !_trackingCompleter!.isCompleted) {
12195
_endTimestamp = timestamp;
12296
_trackingCompleter?.complete(timestamp);
123-
} else {
124-
_completeTrackingTimeStamp = timestamp;
12597
}
12698
}
12799

128100
void clear() {
129-
_isManual = false;
130101
_trackingCompleter = null;
131102
// We can't clear the ttid end time stamp here, because it might be needed
132103
// in the [TimeToFullDisplayTracker] class

flutter/test/navigation/sentry_display_widget_test.dart

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

flutter/test/navigation/time_to_display_tracker_test.dart

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -83,35 +83,6 @@ void main() {
8383
await sut.track(transaction, startTimestamp: fixture.startTimestamp);
8484
});
8585
});
86-
87-
group('with manual strategy', () {
88-
test('finishes ttid span', () async {
89-
final sut = fixture.getSut();
90-
91-
Future.delayed(const Duration(milliseconds: 1), () {
92-
fixture.ttidTracker?.markAsManual();
93-
fixture.ttidTracker?.completeTracking();
94-
});
95-
final transaction = fixture.getTransaction() as SentryTracer;
96-
await sut.track(transaction, startTimestamp: fixture.startTimestamp);
97-
98-
final ttidSpan = _getTTIDSpan(transaction);
99-
expect(ttidSpan, isNotNull);
100-
expect(ttidSpan?.finished, isTrue);
101-
expect(ttidSpan?.origin, SentryTraceOrigins.manualUiTimeToDisplay);
102-
});
103-
104-
// skipping test, flaky
105-
test('completes with timeout when not completing the tracking', () async {
106-
final sut = fixture.getSut();
107-
108-
fixture.ttidTracker?.markAsManual();
109-
// Not calling completeTracking() triggers the manual timeout
110-
111-
final transaction = fixture.getTransaction() as SentryTracer;
112-
await sut.track(transaction, startTimestamp: fixture.startTimestamp);
113-
}, skip: true);
114-
});
11586
});
11687

11788
group('time to full display', () {

0 commit comments

Comments
 (0)