[flutter_tools] have the tool print the current canvaskit mode when toggling (#52841)
diff --git a/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart b/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
index 08e1eb7..5eb6a41 100644
--- a/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
+++ b/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
@@ -706,10 +706,11 @@
bool get supportsCanvasKit => supportsServiceProtocol;
@override
- Future<void> toggleCanvaskit() async {
+ Future<bool> toggleCanvaskit() async {
final WebDevFS webDevFS = device.devFS as WebDevFS;
webDevFS.webAssetServer.canvasKitRendering = !webDevFS.webAssetServer.canvasKitRendering;
await _wipConnection?.sendCommand('Page.reload');
+ return webDevFS.webAssetServer.canvasKitRendering;
}
@override
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart
index 5e8ba39..0b9f2f6 100644
--- a/packages/flutter_tools/lib/src/resident_runner.dart
+++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -732,10 +732,11 @@
throw '${fullRestart ? 'Restart' : 'Reload'} is not supported in $mode mode';
}
- /// Toggle whether canvaskit is being used for rendering.
+ /// Toggle whether canvaskit is being used for rendering, returning the new
+ /// state.
///
/// Only supported on the web.
- Future<void> toggleCanvaskit() {
+ Future<bool> toggleCanvaskit() {
throw Exception('Canvaskit not supported by this runner.');
}
@@ -1207,7 +1208,8 @@
return false;
case 'k':
if (residentRunner.supportsCanvasKit) {
- await residentRunner.toggleCanvaskit();
+ final bool result = await residentRunner.toggleCanvaskit();
+ globals.printStatus('${result ? 'Enabled' : 'Disabled'} CanvasKit');
return true;
}
return false;
diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart
index 26cad698..c460695 100644
--- a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart
+++ b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart
@@ -437,9 +437,10 @@
expect(residentWebRunner.supportsCanvasKit, true);
expect(webAssetServer.canvasKitRendering, false);
- await residentWebRunner.toggleCanvaskit();
+ final bool toggleResult = await residentWebRunner.toggleCanvaskit();
expect(webAssetServer.canvasKitRendering, true);
+ expect(toggleResult, true);
}));
test('Exits when initial compile fails', () => testbed.run(() async {
diff --git a/packages/flutter_tools/test/general.shard/terminal_handler_test.dart b/packages/flutter_tools/test/general.shard/terminal_handler_test.dart
index 38bc7ec..7364771 100644
--- a/packages/flutter_tools/test/general.shard/terminal_handler_test.dart
+++ b/packages/flutter_tools/test/general.shard/terminal_handler_test.dart
@@ -108,6 +108,18 @@
verify(mockResidentRunner.printHelp(details: true)).called(3);
});
+ testUsingContext('k - toggles CanvasKit rendering and prints results', () async {
+ when(mockResidentRunner.supportsCanvasKit).thenReturn(true);
+ when(mockResidentRunner.toggleCanvaskit())
+ .thenAnswer((Invocation invocation) async {
+ return true;
+ });
+
+ await terminalHandler.processTerminalInput('k');
+
+ verify(mockResidentRunner.toggleCanvaskit()).called(1);
+ });
+
testUsingContext('i, I - debugToggleWidgetInspector with service protocol', () async {
await terminalHandler.processTerminalInput('i');
await terminalHandler.processTerminalInput('I');