Two issues I noticed when I hit the issue at https://github.com/flutter/flutter/issues/149258
1. When the an app.stop event arrives from Flutter with an error, DAP does not pass that error back to the client so there's no visibility of the error.
2. If app.stop occurs but no app.start ever did, we leave the progress notification hanging around
This fixes both by handling app.stop and closing any open launch progress as well as passing any error to the client.
Fixes https://github.com/Dart-Code/Dart-Code/issues/5124
* [flutter_tools] Forward app.webLaunchUrl event from Flutter to DAP clients
Fixes https://github.com/Dart-Code/Dart-Code/issues/4292.
* Update packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart
Co-authored-by: Christopher Fujino <fujino@google.com>
* Another static const instead of final
Co-authored-by: Christopher Fujino <fujino@google.com>
* [flutter_tools/dap] Add support for forwarding `flutter run --machine` requests to the DAP client
Currently the only request that Flutter sends to the client is `app.exposeUrl` though most of this code is generic to support other requests that may be added in future.
* Improve comment
* Fix thrown strings
* StateError -> DebugAdapterException
* Add a non-null assertion and assert
* Use DebugAdapterException to handle restartRequests sent before process starts
* Fix typo + use local var
* Don't try to actually send Flutter messages in tests because there's no process
* [flutter_tools] [dap] Ensure DAP sends app.stop/app.detach during terminate
Fixes an issue where the flutter_tester device may not be cleaned up correctly if we just terminate the Flutter process.
* Update integration test expectations
* Revert accidental commit
* [flutter_tools] [dap] Add support for passing env variables to spawned processes
* Use named args
* Use in-memory fs and FakePlatform
* Pass filesystem style to MemoryFileSystem