From dd6dd7aef1371710991f454876ab3fcdea084e4e Mon Sep 17 00:00:00 2001 From: Jia Hao Date: Tue, 23 Jun 2020 08:07:05 +0800 Subject: [PATCH] Fix tracing of startup events (#59982) When `retainPriorEvents` is passed as true, the current behavior still limits timeline events to the timestamp after `traceEvents` is called. This can cause startup events to be missing. This fixes it by passing null to `stopTracingAndDownloadTimeline` for the start and end time. Related: #58430 --- .../lib/src/driver/vmservice_driver.dart | 14 ++++++++++++-- .../flutter_driver/test/flutter_driver_test.dart | 2 -- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/flutter_driver/lib/src/driver/vmservice_driver.dart b/packages/flutter_driver/lib/src/driver/vmservice_driver.dart index 22f56ef1e4d..9784c8f4f38 100644 --- a/packages/flutter_driver/lib/src/driver/vmservice_driver.dart +++ b/packages/flutter_driver/lib/src/driver/vmservice_driver.dart @@ -464,9 +464,19 @@ class VMServiceFlutterDriver extends FlutterDriver { List streams = const [TimelineStream.all], bool retainPriorEvents = false, }) async { - if (!retainPriorEvents) { - await clearTimeline(); + if (retainPriorEvents) { + await startTracing(streams: streams); + await action(); + + if (!(await _isPrecompiledMode())) { + _log(_kDebugWarning); + } + + return stopTracingAndDownloadTimeline(); } + + await clearTimeline(); + final Map startTimestamp = await _getVMTimelineMicros(); await startTracing(streams: streams); await action(); diff --git a/packages/flutter_driver/test/flutter_driver_test.dart b/packages/flutter_driver/test/flutter_driver_test.dart index 2809d24a0d7..5a2844d393c 100644 --- a/packages/flutter_driver/test/flutter_driver_test.dart +++ b/packages/flutter_driver/test/flutter_driver_test.dart @@ -574,10 +574,8 @@ void main() { }, retainPriorEvents: true); expect(log, const [ - 'getVMTimelineMicros', 'startTracing', 'action', - 'getVMTimelineMicros', 'stopTracing', 'download', ]);