Ensure we send hot restart events for flutter web (#40175)

This commit is contained in:
Jonah Williams 2019-09-11 09:38:42 -07:00 committed by GitHub
parent c5e2bf5cfe
commit 8eee93fa64
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 0 deletions

View file

@ -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();

View file

@ -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: <String, String>{
'cd27': 'web-javascript', 'cd28': null, 'cd29': 'false', 'cd30': 'true'
})).called(1);
}, overrides: <Type, Generator>{
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: <String, String>{
'cd27': 'web-javascript', 'cd28': null, 'cd29': 'false', 'cd30': 'true'
})).called(1);
}, overrides: <Type, Generator>{
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 {}