@@ -49,7 +49,7 @@ typedef DwdsLauncher =
49
49
required Stream <BuildResult > buildResults,
50
50
required ConnectionProvider chromeConnection,
51
51
required ToolConfiguration toolConfiguration,
52
- bool injectDebuggingSupportCode ,
52
+ bool useDwdsWebSocketConnection ,
53
53
});
54
54
55
55
// A minimal index for projects that do not yet support web. A meta tag is used
@@ -264,9 +264,11 @@ class WebAssetServer implements AssetReader {
264
264
// TODO(markzipan): Make sure this default value aligns with that in the debugger options.
265
265
bool ddcModuleSystem = false ,
266
266
bool canaryFeatures = false ,
267
+ bool useDwdsWebSocketConnection = false ,
267
268
required FileSystem fileSystem,
268
269
required Logger logger,
269
270
required Platform platform,
271
+ bool shouldEnableMiddleware = false ,
270
272
}) async {
271
273
// TODO(srujzs): Remove this assertion when the library bundle format is
272
274
// supported without canary mode.
@@ -383,15 +385,6 @@ class WebAssetServer implements AssetReader {
383
385
logging.Logger .root.level = logging.Level .ALL ;
384
386
logging.Logger .root.onRecord.listen ((logging.LogRecord event) => log (logger, event));
385
387
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
-
395
388
// In debug builds, spin up DWDS and the full asset server.
396
389
final Dwds dwds = await dwdsLauncher (
397
390
assetReader: server,
@@ -442,15 +435,12 @@ class WebAssetServer implements AssetReader {
442
435
),
443
436
appMetadata: AppMetadata (hostname: hostname),
444
437
),
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,
451
440
);
452
441
shelf.Pipeline pipeline = const shelf.Pipeline ();
453
- if (enableDwds) {
442
+
443
+ if (shouldEnableMiddleware) {
454
444
pipeline = pipeline.addMiddleware (middleware);
455
445
pipeline = pipeline.addMiddleware (dwds.middleware);
456
446
}
@@ -877,6 +867,7 @@ class WebDevFS implements DevFS {
877
867
required this .isWasm,
878
868
required this .useLocalCanvasKit,
879
869
required this .rootDirectory,
870
+ this .useDwdsWebSocketConnection = false ,
880
871
required this .fileSystem,
881
872
required this .logger,
882
873
required this .platform,
@@ -912,6 +903,7 @@ class WebDevFS implements DevFS {
912
903
final WebRendererMode webRenderer;
913
904
final bool isWasm;
914
905
final bool useLocalCanvasKit;
906
+ final bool useDwdsWebSocketConnection;
915
907
final FileSystem fileSystem;
916
908
final Logger logger;
917
909
final Platform platform;
@@ -920,6 +912,10 @@ class WebDevFS implements DevFS {
920
912
921
913
Dwds get dwds => webAssetServer.dwds;
922
914
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
+
923
919
// A flag to indicate whether we have called `setAssetDirectory` on the target device.
924
920
@override
925
921
bool hasSetAssetDirectory = false ;
@@ -1017,9 +1013,11 @@ class WebDevFS implements DevFS {
1017
1013
testMode: testMode,
1018
1014
ddcModuleSystem: ddcModuleSystem,
1019
1015
canaryFeatures: canaryFeatures,
1016
+ useDwdsWebSocketConnection: useDwdsWebSocketConnection,
1020
1017
fileSystem: fileSystem,
1021
1018
logger: logger,
1022
1019
platform: platform,
1020
+ shouldEnableMiddleware: shouldEnableMiddleware,
1023
1021
);
1024
1022
return baseUri! ;
1025
1023
}
@@ -1101,13 +1099,13 @@ class WebDevFS implements DevFS {
1101
1099
entrypoint: entrypoint,
1102
1100
ddcModuleLoaderUrl: 'ddc_module_loader.js' ,
1103
1101
mapperUrl: 'stack_trace_mapper.js' ,
1104
- generateLoadingIndicator: enableDwds ,
1102
+ generateLoadingIndicator: shouldEnableMiddleware ,
1105
1103
isWindows: platform.isWindows,
1106
1104
)
1107
1105
: generateBootstrapScript (
1108
1106
requireUrl: 'require.js' ,
1109
1107
mapperUrl: 'stack_trace_mapper.js' ,
1110
- generateLoadingIndicator: enableDwds ,
1108
+ generateLoadingIndicator: shouldEnableMiddleware ,
1111
1109
),
1112
1110
);
1113
1111
const String onLoadEndBootstrap = 'on_load_end_bootstrap.js' ;
0 commit comments