From 8eee93fa64a95a884209c48e71e6a4d3b08fd85e Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Wed, 11 Sep 2019 09:38:42 -0700 Subject: [PATCH] Ensure we send hot restart events for flutter web (#40175) --- .../lib/src/build_runner/resident_web_runner.dart | 8 ++++++++ .../general.shard/resident_web_runner_test.dart | 14 ++++++++++++++ 2 files changed, 22 insertions(+) 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 4ff8bbd166..bfa4c21ea2 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 @@ -19,6 +19,7 @@ import '../convert.dart'; import '../device.dart'; import '../globals.dart'; import '../project.dart'; +import '../reporting/reporting.dart'; import '../resident_runner.dart'; import '../web/web_device.dart'; import '../web/web_runner.dart'; @@ -258,6 +259,13 @@ class ResidentWebRunner extends ResidentRunner { return OperationResult(1, 'Page requires refresh.'); } finally { status.stop(); + HotEvent('restart', + targetPlatform: getNameForTargetPlatform(TargetPlatform.web_javascript), + sdkName: await device.sdkNameAndVersion, + emulator: false, + fullRestart: true, + reason: reason, + ).send(); } } status.stop(); 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 d8d70f0453..a357a9421a 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 @@ -12,6 +12,7 @@ import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/globals.dart'; import 'package:flutter_tools/src/project.dart'; +import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/build_runner/resident_web_runner.dart'; import 'package:flutter_tools/src/build_runner/web_fs.dart'; @@ -149,6 +150,12 @@ void main() { final OperationResult result = await residentWebRunner.restart(fullRestart: false); expect(result.code, 0); + // ensure that analytics are sent. + verify(Usage.instance.sendEvent('hot', 'restart', parameters: { + 'cd27': 'web-javascript', 'cd28': null, 'cd29': 'false', 'cd30': 'true' + })).called(1); + }, overrides: { + Usage: () => MockFlutterUsage(), })); test('Can hot restart after attaching', () => testbed.run(() async { @@ -167,6 +174,12 @@ void main() { final OperationResult result = await residentWebRunner.restart(fullRestart: true); expect(result.code, 0); + // ensure that analytics are sent. + verify(Usage.instance.sendEvent('hot', 'restart', parameters: { + 'cd27': 'web-javascript', 'cd28': null, 'cd29': 'false', 'cd30': 'true' + })).called(1); + }, overrides: { + Usage: () => MockFlutterUsage(), })); test('Fails on compilation errors in hot restart', () => testbed.run(() async { @@ -394,6 +407,7 @@ void main() { })); } +class MockFlutterUsage extends Mock implements Usage {} class MockWebDevice extends Mock implements ChromeDevice {} class MockBuildDaemonCreator extends Mock implements BuildDaemonCreator {} class MockFlutterWebFs extends Mock implements WebFs {}