From 2afc06e5ce7303ad1697b38d666426b632ca6aba Mon Sep 17 00:00:00 2001 From: Daniel Chevalier Date: Fri, 19 Apr 2024 14:44:56 -0400 Subject: [PATCH] New record button (#7573) --- .../src/screens/network/network_screen.dart | 25 +++++---------- .../controls/profiler_screen_controls.dart | 16 +++------- .../lib/src/shared/common_widgets.dart | 29 ++++++++++++++++++ .../release_notes/NEXT_RELEASE_NOTES.md | 9 ++++-- .../images/network_recording.png | Bin 0 -> 31272 bytes .../images/profiler_recording.png | Bin 0 -> 31384 bytes .../cpu_profiler/profiler_screen_test.dart | 7 ++--- .../test/network/network_profiler_test.dart | 11 +++---- 8 files changed, 56 insertions(+), 41 deletions(-) create mode 100644 packages/devtools_app/release_notes/images/network_recording.png create mode 100644 packages/devtools_app/release_notes/images/profiler_recording.png diff --git a/packages/devtools_app/lib/src/screens/network/network_screen.dart b/packages/devtools_app/lib/src/screens/network/network_screen.dart index b5f36ee6944..4469a924eda 100644 --- a/packages/devtools_app/lib/src/screens/network/network_screen.dart +++ b/packages/devtools_app/lib/src/screens/network/network_screen.dart @@ -213,24 +213,15 @@ class _NetworkProfilerControlsState extends State<_NetworkProfilerControls> final hasRequests = _filteredRequests.isNotEmpty; return Row( children: [ - PauseButton( - minScreenWidthForTextBeforeScaling: - _NetworkProfilerControls._includeTextWidth, - tooltip: 'Pause recording network traffic', - gaScreen: gac.network, - gaSelection: gac.pause, - onPressed: - _recording ? () => widget.controller.togglePolling(false) : null, - ), - const SizedBox(width: denseSpacing), - ResumeButton( - minScreenWidthForTextBeforeScaling: - _NetworkProfilerControls._includeTextWidth, - tooltip: 'Resume recording network traffic', + StartStopRecordingButton( + recording: _recording, + onPressed: () => widget.controller.togglePolling(!_recording), + tooltipOverride: _recording + ? 'Stop recording network traffic' + : 'Resume recording network traffic', + minScreenWidthForTextBeforeScaling: double.infinity, gaScreen: gac.network, - gaSelection: gac.resume, - onPressed: - _recording ? null : () => widget.controller.togglePolling(true), + gaSelection: _recording ? gac.pause : gac.resume, ), const SizedBox(width: denseSpacing), ClearButton( diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/controls/profiler_screen_controls.dart b/packages/devtools_app/lib/src/screens/profiler/panes/controls/profiler_screen_controls.dart index 7ef3f0c46cc..6a2d3deeb14 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/controls/profiler_screen_controls.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/controls/profiler_screen_controls.dart @@ -73,22 +73,14 @@ class _PrimaryControls extends StatelessWidget { Widget build(BuildContext context) { return Row( children: [ - RecordButton( + StartStopRecordingButton( recording: recording, gaScreen: gac.cpuProfiler, - gaSelection: gac.record, + gaSelection: recording ? gac.stop : gac.record, minScreenWidthForTextBeforeScaling: _primaryControlsMinIncludeTextWidth, - onPressed: controller.startRecording, - ), - const SizedBox(width: denseSpacing), - StopRecordingButton( - recording: recording, - gaScreen: gac.cpuProfiler, - gaSelection: gac.stop, - minScreenWidthForTextBeforeScaling: - _primaryControlsMinIncludeTextWidth, - onPressed: controller.stopRecording, + onPressed: + recording ? controller.stopRecording : controller.startRecording, ), const SizedBox(width: denseSpacing), ClearButton( diff --git a/packages/devtools_app/lib/src/shared/common_widgets.dart b/packages/devtools_app/lib/src/shared/common_widgets.dart index f3864683c02..13c54a3d6d9 100644 --- a/packages/devtools_app/lib/src/shared/common_widgets.dart +++ b/packages/devtools_app/lib/src/shared/common_widgets.dart @@ -239,6 +239,35 @@ class ToolbarRefresh extends ToolbarAction { }); } +class StartStopRecordingButton extends GaDevToolsButton { + StartStopRecordingButton({ + super.key, + required this.recording, + required super.onPressed, + required super.gaScreen, + required super.gaSelection, + super.minScreenWidthForTextBeforeScaling, + String? tooltipOverride, + Color? colorOverride, + String? labelOverride, + }) : super( + icon: _icon(recording), + label: labelOverride ?? _label(recording), + color: colorOverride ?? _color(recording), + tooltip: tooltipOverride ?? _tooltip(recording), + ); + + static IconData _icon(bool recording) => + recording ? Icons.stop : Icons.fiber_manual_record; + static String _label(bool recording) => + recording ? 'Stop recording' : 'Start recording'; + static String _tooltip(bool recording) => + recording ? 'Stop recording' : 'Start recording'; + static Color? _color(bool recording) => recording ? Colors.red : null; + + final bool recording; +} + /// Button to start recording data. /// /// * `recording`: Whether recording is in progress. diff --git a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md index d514b2b9133..89dba3d72ae 100644 --- a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md +++ b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md @@ -22,7 +22,9 @@ TODO: Remove this section if there are not any general updates. ## CPU profiler updates -TODO: Remove this section if there are not any general updates. +* Changed to a single button, for starting and stopping + recording. - [#7573](https://github.com/flutter/devtools/pull/7573) + ![A screen shot of the CPU profiler tab, with the new recording button.](./images/profiler_recording.png) ## Memory updates @@ -34,7 +36,10 @@ TODO: Remove this section if there are not any general updates. * During a hot-restart, `pause_isolates_on_start` and only `resume` the app once breakpoints are set. - [#7234](https://github.com/flutter/devtools/pull/7234) ## Network profiler updates - + +* Changed to a single button, for starting and stopping + recording. - [#7573](https://github.com/flutter/devtools/pull/7573) + ![A screen shot of the network tab, with the new recording button.](./images/network_recording.png) * Added text selection in text viewer for requests and responses. - [#7596](https://github.com/flutter/devtools/pull/7596) * Added a JSON copy experience to the JSON viewer. - [#7596](https://github.com/flutter/devtools/pull/7596) ![An image of the new json copy experience for the JSON viewer](./images/json_viewer_copy.png) diff --git a/packages/devtools_app/release_notes/images/network_recording.png b/packages/devtools_app/release_notes/images/network_recording.png new file mode 100644 index 0000000000000000000000000000000000000000..22a2f36326843f6e468f7459498688cf0578467a GIT binary patch literal 31272 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∈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 X!nXTvM^yn--2+iUDS_hmTA%(8S<@sM literal 0 HcmV?d00001 diff --git a/packages/devtools_app/release_notes/images/profiler_recording.png b/packages/devtools_app/release_notes/images/profiler_recording.png new file mode 100644 index 0000000000000000000000000000000000000000..32cf0a31c3871762f2dbd1a1782d6037a07706ed GIT binary patch literal 31384 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 loadRequestsAndCheck(WidgetTester tester) async { - expect(find.byType(ResumeButton), findsOneWidget); - expect(find.byType(PauseButton), findsOneWidget); + expect(find.byType(StartStopRecordingButton), findsOneWidget); expect(find.byType(ClearButton), findsOneWidget); expect(find.byType(SplitPane), findsOneWidget); @@ -290,7 +289,7 @@ void main() { } // Pause recording. - await tester.tap(find.byType(PauseButton)); + await tester.tap(find.byType(StartStopRecordingButton)); await tester.pump(); await clearTimeouts(tester); @@ -336,7 +335,7 @@ void main() { await loadRequestsAndCheck(tester); // Pause the profiler. - await tester.tap(find.byType(PauseButton)); + await tester.tap(find.byType(StartStopRecordingButton)); await tester.pumpAndSettle(); // Clear the results.