Register reload sources call and make 'r' restart for web (#39950)
This commit is contained in:
parent
8b90d9d045
commit
b4c3671718
@ -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.
|
/// A hot-runner which handles browser specific delegation.
|
||||||
class ResidentWebRunner extends ResidentRunner {
|
class ResidentWebRunner extends ResidentRunner {
|
||||||
ResidentWebRunner(this.device, {
|
ResidentWebRunner(this.device, {
|
||||||
@ -207,11 +202,9 @@ class ResidentWebRunner extends ResidentRunner {
|
|||||||
if (supportsServiceProtocol) {
|
if (supportsServiceProtocol) {
|
||||||
_stdOutSub = _debugConnection.vmService.onStdoutEvent.listen((vmservice.Event log) {
|
_stdOutSub = _debugConnection.vmService.onStdoutEvent.listen((vmservice.Event log) {
|
||||||
final String message = utf8.decode(base64.decode(log.bytes)).trim();
|
final String message = utf8.decode(base64.decode(log.bytes)).trim();
|
||||||
// TODO(jonahwilliams): remove this error once it is gone from the engine #37625.
|
printStatus(message);
|
||||||
if (!message.contains(_kBadError)) {
|
|
||||||
printStatus(message);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
unawaited(_debugConnection.vmService.registerService('reloadSources', 'FlutterTools'));
|
||||||
websocketUri = Uri.parse(_debugConnection.uri);
|
websocketUri = Uri.parse(_debugConnection.uri);
|
||||||
}
|
}
|
||||||
if (websocketUri != null) {
|
if (websocketUri != null) {
|
||||||
@ -232,9 +225,6 @@ class ResidentWebRunner extends ResidentRunner {
|
|||||||
String reason,
|
String reason,
|
||||||
bool benchmarkMode = false,
|
bool benchmarkMode = false,
|
||||||
}) async {
|
}) async {
|
||||||
if (!fullRestart) {
|
|
||||||
return OperationResult(1, 'hot reload not supported on the web.');
|
|
||||||
}
|
|
||||||
final Stopwatch timer = Stopwatch()..start();
|
final Stopwatch timer = Stopwatch()..start();
|
||||||
final Status status = logger.startProgress(
|
final Status status = logger.startProgress(
|
||||||
'Performing hot restart...',
|
'Performing hot restart...',
|
||||||
|
@ -114,21 +114,27 @@ void main() {
|
|||||||
));
|
));
|
||||||
final DebugConnectionInfo debugConnectionInfo = await connectionInfoCompleter.future;
|
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(bufferLogger.statusText, contains('Debug service listening on ws://127.0.0.1/abcd/'));
|
||||||
expect(debugConnectionInfo.wsUri.toString(), '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 {
|
test('Can hot reload after attaching', () => testbed.run(() async {
|
||||||
_setupMocks();
|
_setupMocks();
|
||||||
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
final Completer<DebugConnectionInfo> connectionInfoCompleter = Completer<DebugConnectionInfo>();
|
||||||
unawaited(residentWebRunner.run(
|
unawaited(residentWebRunner.run(
|
||||||
connectionInfoCompleter: connectionInfoCompleter,
|
connectionInfoCompleter: connectionInfoCompleter,
|
||||||
));
|
));
|
||||||
await connectionInfoCompleter.future;
|
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);
|
final OperationResult result = await residentWebRunner.restart(fullRestart: false);
|
||||||
|
|
||||||
expect(result.code, 1);
|
expect(result.code, 0);
|
||||||
expect(result.message, contains('hot reload not supported on the web.'));
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
test('Can hot restart after attaching', () => testbed.run(() async {
|
test('Can hot restart after attaching', () => testbed.run(() async {
|
||||||
@ -374,7 +380,6 @@ void main() {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class MockWebDevice extends Mock implements Device {}
|
class MockWebDevice extends Mock implements Device {}
|
||||||
class MockBuildDaemonCreator extends Mock implements BuildDaemonCreator {}
|
class MockBuildDaemonCreator extends Mock implements BuildDaemonCreator {}
|
||||||
class MockFlutterWebFs extends Mock implements WebFs {}
|
class MockFlutterWebFs extends Mock implements WebFs {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user