@@ -49,7 +49,7 @@ typedef DwdsLauncher =
4949 required Stream <BuildResult > buildResults,
5050 required ConnectionProvider chromeConnection,
5151 required ToolConfiguration toolConfiguration,
52- bool injectDebuggingSupportCode ,
52+ bool useDwdsWebSocketConnection ,
5353 });
5454
5555// A minimal index for projects that do not yet support web. A meta tag is used
@@ -264,9 +264,11 @@ class WebAssetServer implements AssetReader {
264264 // TODO(markzipan): Make sure this default value aligns with that in the debugger options.
265265 bool ddcModuleSystem = false ,
266266 bool canaryFeatures = false ,
267+ bool useDwdsWebSocketConnection = false ,
267268 required FileSystem fileSystem,
268269 required Logger logger,
269270 required Platform platform,
271+ bool shouldEnableMiddleware = false ,
270272 }) async {
271273 // TODO(srujzs): Remove this assertion when the library bundle format is
272274 // supported without canary mode.
@@ -383,15 +385,6 @@ class WebAssetServer implements AssetReader {
383385 logging.Logger .root.level = logging.Level .ALL ;
384386 logging.Logger .root.onRecord.listen ((logging.LogRecord event) => log (logger, event));
385387
386- // Retrieve connected web devices.
387- final List <Device >? devices = await globals.deviceManager? .getAllDevices ();
388- final Set <String > connectedWebDeviceIds =
389- devices
390- ? .where ((Device d) => d.platformType == PlatformType .web && d.isConnected)
391- .map ((Device d) => d.id)
392- .toSet () ??
393- < String > {};
394-
395388 // In debug builds, spin up DWDS and the full asset server.
396389 final Dwds dwds = await dwdsLauncher (
397390 assetReader: server,
@@ -442,15 +435,12 @@ class WebAssetServer implements AssetReader {
442435 ),
443436 appMetadata: AppMetadata (hostname: hostname),
444437 ),
445- // Inject the debugging support code if connected web devices are present,
446- // and user specified a device id that matches a connected web device.
447- // If the user did not specify a device id, we use chrome as the default.
448- injectDebuggingSupportCode:
449- connectedWebDeviceIds.isNotEmpty &&
450- connectedWebDeviceIds.contains (globals.deviceManager? .specifiedDeviceId ?? 'chrome' ),
438+ // Use DWDS WebSocket-based connection instead of Chrome-based connection for debugging
439+ useDwdsWebSocketConnection: useDwdsWebSocketConnection,
451440 );
452441 shelf.Pipeline pipeline = const shelf.Pipeline ();
453- if (enableDwds) {
442+
443+ if (shouldEnableMiddleware) {
454444 pipeline = pipeline.addMiddleware (middleware);
455445 pipeline = pipeline.addMiddleware (dwds.middleware);
456446 }
@@ -877,6 +867,7 @@ class WebDevFS implements DevFS {
877867 required this .isWasm,
878868 required this .useLocalCanvasKit,
879869 required this .rootDirectory,
870+ this .useDwdsWebSocketConnection = false ,
880871 required this .fileSystem,
881872 required this .logger,
882873 required this .platform,
@@ -912,6 +903,7 @@ class WebDevFS implements DevFS {
912903 final WebRendererMode webRenderer;
913904 final bool isWasm;
914905 final bool useLocalCanvasKit;
906+ final bool useDwdsWebSocketConnection;
915907 final FileSystem fileSystem;
916908 final Logger logger;
917909 final Platform platform;
@@ -920,6 +912,10 @@ class WebDevFS implements DevFS {
920912
921913 Dwds get dwds => webAssetServer.dwds;
922914
915+ /// Whether middleware should be enabled for this web development server.
916+ /// Middleware is enabled when using Chrome device or DDC module system.
917+ bool get shouldEnableMiddleware => chromiumLauncher != null || ddcModuleSystem;
918+
923919 // A flag to indicate whether we have called `setAssetDirectory` on the target device.
924920 @override
925921 bool hasSetAssetDirectory = false ;
@@ -1017,9 +1013,11 @@ class WebDevFS implements DevFS {
10171013 testMode: testMode,
10181014 ddcModuleSystem: ddcModuleSystem,
10191015 canaryFeatures: canaryFeatures,
1016+ useDwdsWebSocketConnection: useDwdsWebSocketConnection,
10201017 fileSystem: fileSystem,
10211018 logger: logger,
10221019 platform: platform,
1020+ shouldEnableMiddleware: shouldEnableMiddleware,
10231021 );
10241022 return baseUri! ;
10251023 }
@@ -1101,13 +1099,13 @@ class WebDevFS implements DevFS {
11011099 entrypoint: entrypoint,
11021100 ddcModuleLoaderUrl: 'ddc_module_loader.js' ,
11031101 mapperUrl: 'stack_trace_mapper.js' ,
1104- generateLoadingIndicator: enableDwds ,
1102+ generateLoadingIndicator: shouldEnableMiddleware ,
11051103 isWindows: platform.isWindows,
11061104 )
11071105 : generateBootstrapScript (
11081106 requireUrl: 'require.js' ,
11091107 mapperUrl: 'stack_trace_mapper.js' ,
1110- generateLoadingIndicator: enableDwds ,
1108+ generateLoadingIndicator: shouldEnableMiddleware ,
11111109 ),
11121110 );
11131111 const String onLoadEndBootstrap = 'on_load_end_bootstrap.js' ;
0 commit comments