[PE] tooltip to describe current exception mode (#8849) * [PE] tooltip to describe current exception mode * + test * ++ * + exception mode tooltip * => helper function * - custom find * PR
diff --git a/packages/devtools_app/lib/src/screens/debugger/controls.dart b/packages/devtools_app/lib/src/screens/debugger/controls.dart index e1a5852..5f03b84 100644 --- a/packages/devtools_app/lib/src/screens/debugger/controls.dart +++ b/packages/devtools_app/lib/src/screens/debugger/controls.dart
@@ -256,23 +256,27 @@ return ValueListenableBuilder<String?>( valueListenable: controller.exceptionPauseMode, builder: (BuildContext context, modeId, _) { - return RoundedDropDownButton<ExceptionMode>( - value: ExceptionMode.from(modeId), - // Cannot set exception pause mode for system isolates. - onChanged: - controller.isSystemIsolate - ? null - : (ExceptionMode? mode) { - unawaited(controller.setIsolatePauseMode(mode!.id)); - }, - isDense: true, - items: [ - for (final mode in ExceptionMode.modes) - DropdownMenuItem<ExceptionMode>( - value: mode, - child: Text(isInSmallMode ? mode.name : mode.description), - ), - ], + final exceptionMode = ExceptionMode.from(modeId); + return DevToolsTooltip( + message: exceptionMode.description, + child: RoundedDropDownButton<ExceptionMode>( + value: exceptionMode, + // Cannot set exception pause mode for system isolates. + onChanged: + controller.isSystemIsolate + ? null + : (ExceptionMode? mode) { + unawaited(controller.setIsolatePauseMode(mode!.id)); + }, + isDense: true, + items: [ + for (final mode in ExceptionMode.modes) + DropdownMenuItem<ExceptionMode>( + value: mode, + child: Text(isInSmallMode ? mode.name : mode.description), + ), + ], + ), ); }, );
diff --git a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md index be97164..35b62b2 100644 --- a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md +++ b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
@@ -35,7 +35,8 @@ ## Debugger updates -TODO: Remove this section if there are not any general updates. +* Added a tooltip to describe the exception mode drop-down. - +[#8849](https://github.com/flutter/devtools/pull/8849) ## Network profiler updates
diff --git a/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart b/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart index 3e5b2ed..1370989 100644 --- a/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart +++ b/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart
@@ -172,6 +172,23 @@ }, ); + testWidgetsWithWindowSize( + 'debugger exception mode tooltip', + smallWindowSize, + (WidgetTester tester) async { + await tester.pumpWidget( + wrapWithControllers( + Builder(builder: screen.build), + debugger: debuggerController, + ), + ); + expect( + find.byTooltip('Stop on uncaught exceptions', skipOffstage: false), + findsOneWidget, + ); + }, + ); + testWidgetsWithWindowSize('node selection state', windowSize, ( WidgetTester tester, ) async {