@@ -14,6 +14,7 @@ import 'package:dwds/data/debug_event.dart';
1414import 'package:dwds/data/devtools_request.dart' ;
1515import 'package:dwds/data/error_response.dart' ;
1616import 'package:dwds/data/hot_reload_response.dart' ;
17+ import 'package:dwds/data/hot_restart_request.dart' ;
1718import 'package:dwds/data/hot_restart_response.dart' ;
1819import 'package:dwds/data/isolate_events.dart' ;
1920import 'package:dwds/data/register_event.dart' ;
@@ -413,6 +414,11 @@ class DevHandler {
413414 final proxyService = _servicesByAppId[appId]? .proxyService;
414415
415416 if (proxyService == null ) {
417+ if (message is HotRestartRequest ) {
418+ _logger.finest ('No debugger, let the app handle the restart itself.' );
419+ connection.hotRestart (message);
420+ return ;
421+ }
416422 _logger.warning (
417423 'No proxy service found for appId: $appId to process $message ' ,
418424 );
@@ -436,6 +442,20 @@ class DevHandler {
436442 proxyService.parseDebugEvent (message);
437443 } else if (message is RegisterEvent ) {
438444 proxyService.parseRegisterEvent (message);
445+ } else if (message is HotRestartRequest ) {
446+ final services = _servicesByAppId[appId]! ;
447+ if (services.dwdsVmClient is ! ChromeDwdsVmClient ||
448+ services.proxyService is ! ChromeProxyService ) {
449+ throw UnsupportedError (
450+ 'In-app restart requests are only supported by '
451+ 'ChromeDwdsVmClient and ChromeProxyService' ,
452+ );
453+ }
454+ final chromeClient = services.dwdsVmClient as ChromeDwdsVmClient ;
455+ final chromeProxyService = services.proxyService as ChromeProxyService ;
456+ unawaited (
457+ chromeClient.hotRestart (chromeProxyService, chromeClient.client),
458+ );
439459 } else {
440460 final serviceType = proxyService is WebSocketProxyService
441461 ? 'WebSocket'
0 commit comments