Add a flag for using WS for debug backend (#61359)
diff --git a/packages/flutter_tools/lib/src/build_runner/devfs_web.dart b/packages/flutter_tools/lib/src/build_runner/devfs_web.dart
index ac8eb23..d8d9b4a 100644
--- a/packages/flutter_tools/lib/src/build_runner/devfs_web.dart
+++ b/packages/flutter_tools/lib/src/build_runner/devfs_web.dart
@@ -42,6 +42,7 @@
bool enableDebugExtension,
String hostname,
bool useSseForDebugProxy,
+ bool useSseForDebugBackend,
bool serveDevTools,
void Function(Level, String) logWriter,
bool verbose,
@@ -142,6 +143,7 @@
int port,
UrlTunneller urlTunneller,
bool useSseForDebugProxy,
+ bool useSseForDebugBackend,
BuildInfo buildInfo,
bool enableDwds,
Uri entrypoint,
@@ -235,6 +237,7 @@
urlEncoder: urlTunneller,
enableDebugging: true,
useSseForDebugProxy: useSseForDebugProxy,
+ useSseForDebugBackend: useSseForDebugBackend,
serveDevTools: false,
logWriter: (Level logLevel, String message) => globals.printTrace(message),
loadStrategy: RequireStrategy(
@@ -627,6 +630,7 @@
@required this.packagesFilePath,
@required this.urlTunneller,
@required this.useSseForDebugProxy,
+ @required this.useSseForDebugBackend,
@required this.buildInfo,
@required this.enableDwds,
@required this.entrypoint,
@@ -641,6 +645,7 @@
final String packagesFilePath;
final UrlTunneller urlTunneller;
final bool useSseForDebugProxy;
+ final bool useSseForDebugBackend;
final BuildInfo buildInfo;
final bool enableDwds;
final bool testMode;
@@ -708,6 +713,7 @@
port,
urlTunneller,
useSseForDebugProxy,
+ useSseForDebugBackend,
buildInfo,
enableDwds,
entrypoint,
diff --git a/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart b/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
index faa6ef4..b5caf86 100644
--- a/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
+++ b/packages/flutter_tools/lib/src/build_runner/resident_web_runner.dart
@@ -448,6 +448,7 @@
packagesFilePath: packagesFilePath,
urlTunneller: urlTunneller,
useSseForDebugProxy: debuggingOptions.webUseSseForDebugProxy,
+ useSseForDebugBackend: debuggingOptions.webUseSseForDebugBackend,
buildInfo: debuggingOptions.buildInfo,
enableDwds: _enableDwds,
entrypoint: globals.fs.file(target).uri,
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 9dab375..862bd18 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -374,6 +374,7 @@
hostname: featureFlags.isWebEnabled ? stringArg('web-hostname') : '',
port: featureFlags.isWebEnabled ? stringArg('web-port') : '',
webUseSseForDebugProxy: featureFlags.isWebEnabled && stringArg('web-server-debug-protocol') == 'sse',
+ webUseSseForDebugBackend: featureFlags.isWebEnabled && stringArg('web-server-debug-backend-protocol') == 'sse',
webEnableExposeUrl: featureFlags.isWebEnabled && boolArg('web-allow-expose-url'),
webRunHeadless: featureFlags.isWebEnabled && boolArg('web-run-headless'),
webBrowserDebugPort: browserDebugPort,
@@ -400,6 +401,7 @@
hostname: featureFlags.isWebEnabled ? stringArg('web-hostname') : '',
port: featureFlags.isWebEnabled ? stringArg('web-port') : '',
webUseSseForDebugProxy: featureFlags.isWebEnabled && stringArg('web-server-debug-protocol') == 'sse',
+ webUseSseForDebugBackend: featureFlags.isWebEnabled && stringArg('web-server-debug-backend-protocol') == 'sse',
webEnableExposeUrl: featureFlags.isWebEnabled && boolArg('web-allow-expose-url'),
webRunHeadless: featureFlags.isWebEnabled && boolArg('web-run-headless'),
webBrowserDebugPort: browserDebugPort,
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 2e1d158..0e9454b 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -738,6 +738,7 @@
this.port,
this.webEnableExposeUrl,
this.webUseSseForDebugProxy = true,
+ this.webUseSseForDebugBackend = true,
this.webRunHeadless = false,
this.webBrowserDebugPort,
this.webEnableExpressionEvaluation = false,
@@ -751,6 +752,7 @@
this.hostname,
this.webEnableExposeUrl,
this.webUseSseForDebugProxy = true,
+ this.webUseSseForDebugBackend = true,
this.webRunHeadless = false,
this.webBrowserDebugPort,
this.cacheSkSL = false,
@@ -797,6 +799,7 @@
final String hostname;
final bool webEnableExposeUrl;
final bool webUseSseForDebugProxy;
+ final bool webUseSseForDebugBackend;
/// Whether to run the browser in headless mode.
///
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index 7cd47bb..c525f22 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -184,11 +184,20 @@
allowed: <String>['sse', 'ws'],
defaultsTo: 'sse',
help: 'The protocol (SSE or WebSockets) to use for the debug service proxy '
- 'when using the Web Server device and Dart Debugger extension. '
+ 'when using the Web Server device and Dart Debug extension. '
'This is useful for editors/debug adapters that do not support debugging '
'over SSE (the default protocol for Web Server/Dart Debugger extension).',
hide: hide,
);
+ argParser.addOption('web-server-debug-backend-protocol',
+ allowed: <String>['sse', 'ws'],
+ defaultsTo: 'sse',
+ help: 'The protocol (SSE or WebSockets) to use for the Dart Debug Extension '
+ 'backend service when using the Web Server device. '
+ 'Using WebSockets can improve performance but may fail when connecting through '
+ 'some proxy servers.',
+ hide: hide,
+ );
argParser.addFlag('web-allow-expose-url',
defaultsTo: false,
help: 'Enables daemon-to-editor requests (app.exposeUrl) for exposing URLs '
diff --git a/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart b/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart
index e3ae1aa..ede213f 100644
--- a/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart
+++ b/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart
@@ -461,6 +461,7 @@
packagesFilePath: '.packages',
urlTunneller: null,
useSseForDebugProxy: true,
+ useSseForDebugBackend: true,
buildInfo: const BuildInfo(
BuildMode.debug,
'',
@@ -572,6 +573,7 @@
packagesFilePath: '.packages',
urlTunneller: null,
useSseForDebugProxy: true,
+ useSseForDebugBackend: true,
buildInfo: const BuildInfo(
BuildMode.debug,
'',
@@ -680,6 +682,7 @@
packagesFilePath: '.packages',
urlTunneller: null,
useSseForDebugProxy: true,
+ useSseForDebugBackend: true,
buildInfo: BuildInfo.debug,
enableDwds: false,
entrypoint: Uri.base,
@@ -721,6 +724,7 @@
packagesFilePath: '.packages',
urlTunneller: null,
useSseForDebugProxy: true,
+ useSseForDebugBackend: true,
buildInfo: const BuildInfo(
BuildMode.debug,
'',