Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Register reload sources call and make 'r' restart for web #39950

Merged
merged 2 commits into from Sep 6, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -43,11 +43,6 @@ class DwdsWebRunnerFactory extends WebRunnerFactory {
}
}

// TODO(jonahwilliams): remove this constant when the error message is removed.
// The web engine is currently spamming this message on certain pages. Filter it out
// until we remove it entirely. See flutter/flutter##37625.
const String _kBadError = 'WARNING: 3D transformation matrix was passed to BitmapCanvas.';

/// A hot-runner which handles browser specific delegation.
class ResidentWebRunner extends ResidentRunner {
ResidentWebRunner(this.device, {
Expand Down Expand Up @@ -207,11 +202,9 @@ class ResidentWebRunner extends ResidentRunner {
if (supportsServiceProtocol) {
_stdOutSub = _debugConnection.vmService.onStdoutEvent.listen((vmservice.Event log) {
final String message = utf8.decode(base64.decode(log.bytes)).trim();
// TODO(jonahwilliams): remove this error once it is gone from the engine #37625.
if (!message.contains(_kBadError)) {
printStatus(message);
}
printStatus(message);
});
unawaited(_debugConnection.vmService.registerService('reloadSources', 'FlutterTools'));
websocketUri = Uri.parse(_debugConnection.uri);
}
if (websocketUri != null) {
Expand All @@ -232,9 +225,6 @@ class ResidentWebRunner extends ResidentRunner {
String reason,
bool benchmarkMode = false,
}) async {
if (!fullRestart) {
return OperationResult(1, 'hot reload not supported on the web.');
}
final Stopwatch timer = Stopwatch()..start();
final Status status = logger.startProgress(
'Performing hot restart...',
Expand Down
Expand Up @@ -114,21 +114,27 @@ void main() {
));
final DebugConnectionInfo debugConnectionInfo = await connectionInfoCompleter.future;

verify(mockVmService.registerService('reloadSources', 'FlutterTools')).called(1);
expect(bufferLogger.statusText, contains('Debug service listening on ws://127.0.0.1/abcd/'));
expect(debugConnectionInfo.wsUri.toString(), 'ws://127.0.0.1/abcd/');
}));

test('Can not hot reload after attaching', () => testbed.run(() async {
_setupMocks();
test('Can hot reload after attaching', () => testbed.run(() async {
_setupMocks();
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
unawaited(residentWebRunner.run(
connectionInfoCompleter: connectionInfoCompleter,
));
await connectionInfoCompleter.future;
when(mockWebFs.recompile()).thenAnswer((Invocation _) async {
return true;
});
when(mockVmService.callServiceExtension('hotRestart')).thenAnswer((Invocation _) async {
return Response.parse(<String, Object>{'type': 'Success'});
});
final OperationResult result = await residentWebRunner.restart(fullRestart: false);

expect(result.code, 1);
expect(result.message, contains('hot reload not supported on the web.'));
expect(result.code, 0);
}));

test('Can hot restart after attaching', () => testbed.run(() async {
Expand Down Expand Up @@ -374,7 +380,6 @@ void main() {
}));
}


class MockWebDevice extends Mock implements Device {}
class MockBuildDaemonCreator extends Mock implements BuildDaemonCreator {}
class MockFlutterWebFs extends Mock implements WebFs {}
Expand Down