Commit Graph

45 Commits

Author SHA1 Message Date
Danny Tuppeny
0386f910d1
[flutter_tools/dap] Improve rendering of structured errors via DAP (#131251)
In the legacy VS Code DAP, we would deserialise the Flutter.Error event
and provide some basic colouring (eg. stack frames are faded if not from
user code and the text is split between stdout/stderr to allow the
client to colour it).

In the new DAPs we originally used `renderedErrorText` which didn't
support either of these. This change adds changes to use the structured
data (with some basic parsing because the source classes are in
package:flutter and not accessible here) to provide a similar
experience.

It would be nicer if we could use the real underlying Flutter classes
for this deserialisation, but extracting them from `package:flutter` and
removing all dependencies on Flutter is a much larger job and I don't
think should hold up providing improved error formatting for the new
DAPs.

Some comparisons:


![1_comparison](https://github.com/flutter/flutter/assets/1078012/74e7e6d6-c8d0-471f-b584-37ae148b0ce7)


![2_comparison](https://github.com/flutter/flutter/assets/1078012/21888934-6f2f-4048-86d7-bdf92d5c7301)
2023-07-31 13:03:26 +01:00
Helin Shiah
0b44577f16
Add new hot reload case string (#130008)
This change is for an internal IDE client to send a custom hot reload
request, as custom requests from the client must start with `$/`.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above. (this PR is linked internally)
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2023-07-05 15:16:33 -04:00
Danny Tuppeny
dc4541fa05
[flutter_tools] Add support for vmServiceFileInfo when attaching (#128503)
When building the new SDK DAPs, this functionality was missed from the Flutter adapter (but added to the Dart CLI adapter).

As well as passing a VM Service URI directly, we support passing a file that can be polled for it.

This uses the same mechanism we use to obtain the VM Service URI from a Dart debug session (we run `dart --write-service-info=foo.json my_file.dart` and then poll that file which the VM will write) and is useful for users that have their own mechanism for launching an app (for example using custom Flutter embedders - see https://github.com/Dart-Code/Dart-Code/issues/3353) to provide a VM Service URI once the app is up and running.

Fixes https://github.com/Dart-Code/Dart-Code/issues/4577.
2023-06-16 18:00:21 +00:00
Danny Tuppeny
46007d61d2
[flutter_tools] [DAP] Don't try to restart/reload if app hasn't started yet (#128267)
The editor is set to hot-reload-on-save by default so saving while the debug session is starting currently prints an error:

Failed to Hot Reload: app 'null' not found

![image](https://github.com/flutter/flutter/assets/1078012/a125b455-a46d-4993-98d8-5d8ae7237a00)

This change skips the call to `app.restart` if the app hasn't started yet to avoid printing an error.
2023-06-09 09:41:07 +00:00
Danny Tuppeny
1a6a20cdc6
[flutter_tools] Include mode in app.start event, and forward app.start to DAP clients (#121239)
[flutter_tools] Include mode in app.start event, and forward app.start to DAP clients
2023-04-05 05:39:09 +00:00
Michael Goderbauer
fda9ecfef7
Remove 1745 decorative breaks (#123259)
Remove 1745 decorative breaks
2023-03-22 21:12:22 +00:00
Danny Tuppeny
3494c08448
[flutter_tools/dap] Inform DAP client whether restart is supported (#121610)
[flutter_tools/dap] Inform DAP client whether restart is supported
2023-03-03 12:54:23 +00:00
Ben Konyi
ecd7518df5
Reland "Remove references to Observatory (#118577)" (#121606)
This reverts commit 275ab9c69b.
2023-02-28 11:57:04 -05:00
Michael Goderbauer
275ab9c69b
Revert "Reland "Remove references to Observatory (#118577)" (#121215)" (#121555)
Revert "Reland "Remove references to Observatory (#118577)""
2023-02-27 23:46:53 +00:00
Ben Konyi
fbae472fc3
Reland "Remove references to Observatory (#118577)" (#121215)
This reverts commit 298d8c76ba.
2023-02-27 09:26:43 -05:00
Lioness100
26b6c1bedd
Fix typos (#121171)
* Fix typos

* lowercase animated & opacity

* Undo typo fix

---------

Co-authored-by: Michael Goderbauer <goderbauer@google.com>
2023-02-23 19:43:21 +00:00
Casey Hillers
298d8c76ba
Revert "Remove references to Observatory (#118577)" (#120929)
This reverts commit 2df140f40d.
2023-02-16 21:28:30 -08:00
Christopher Fujino
c6b636fa51
[flutter_tools] Replace Future.catchError() with Future.then(onError: ...) (#120637)
* wip run_local_linter.dart

* get run_local_linter.dart working

* slow working implementation

* speed up run_local_linter.dart

* fix run_local_linter.dart

* remove catchError

* another fix

* fix another

* fix

* more fixes

* fix moar

* fix moar

* fix

* finish

* fix tests

* clean up further

* code review

* delete run_local_linter.dart
2023-02-15 19:03:00 +00:00
Ben Konyi
2df140f40d
Remove references to Observatory (#118577)
Observatory is being deprecated for Dart 3.0 so it should no longer be
referenced in tooling messaging / flags.

See https://github.com/dart-lang/sdk/issues/50233
2023-02-13 14:29:30 -05:00
Danny Tuppeny
8387c2388b
[flutter_tools] Use base DAP detach and ensure correct output (#119076) 2023-02-02 13:28:12 -08:00
Danny Tuppeny
09bd0f6613
Support logging 'flutter run' communication to DAP clients (#118674)
* Support logging 'flutter run' communication to DAP clients

Fixes https://github.com/Dart-Code/Dart-Code/issues/4266.

* Fix test
2023-01-19 23:50:33 +00:00
Helin Shiah
46e48ba3b4
Use program during attach if provided (#118130) 2023-01-09 11:27:47 -08:00
Danny Tuppeny
9f9010f5e8
[flutter_tools] Update DAP progress when waiting for Dart Debug extension connection (#116892)
Fixes https://github.com/Dart-Code/Dart-Code/issues/4293.
2022-12-19 11:33:26 -05:00
Danny Tuppeny
a29796e339
[flutter_tools] Forward app.webLaunchUrl event from Flutter to DAP clients (#116275)
* [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>
2022-11-30 21:25:07 +00:00
Danny Tuppeny
51c517c03c
[flutter_tools/dap] Add support for forwarding flutter run --machine exposeUrl requests to the DAP client (#114539)
* [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
2022-11-09 19:16:47 +00:00
Danny Tuppeny
3b0f8335ee
[flutter_tools/dap] Add a base Flutter adapter class to avoid duplication between adapters (#114533) 2022-11-02 18:38:46 +00:00
Danny Tuppeny
307987339e
[flutter_tools/dap] Map org-dartlang-sdk URIs to the location of the source files found by the analyzer (#114369) 2022-11-02 17:07:58 +00:00
Danny Tuppeny
5655225cd7
Send progress notifications to clients during hot reload / hot restart (#112455) 2022-09-29 16:27:40 +01:00
Danny Tuppeny
676a4264aa
[dap] Don't wait for appStarted before responding to launch/attach + don't call app.stop for unstarted app (#109386) 2022-08-25 15:35:09 +00:00
Danny Tuppeny
5d31b07ed5
[flutter_tools] [dap] Ensure DAP sends app.stop/app.detach during terminate (#108310)
* [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
2022-07-26 10:48:38 +01:00
Danny Tuppeny
2f4299ad35
[flutter_tools] Remove unused parameter when connected DAP to VM Service (#108285)
Since 02d9c3e6a5 this flag does absolutely nothing. The behaviour it controlled is now automatic and the flag is not required.

The flag will be removed from the Dart SDK in the future after Flutter is no longer using it.
2022-07-25 18:28:12 +01:00
Danny Tuppeny
c67d2587d5
Provide more useful error message if a non-compliant DAP tool (or user) sends bad input to DAP server (#107827) 2022-07-19 11:48:05 -07:00
Danny Tuppeny
78d924af1d
[flutter_tools] [dap] Add support for passing env variables to spawned processes (#107415)
* [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
2022-07-12 10:04:08 +01:00
Danny Tuppeny
e2ef8cfe44
Pass app.started events to the DAP client + dart.debuggerUris for Profile mode (#106337) 2022-06-21 12:09:06 -07:00
Danny Tuppeny
147020366a
Fix issues running integration tests through DAP debug adapter (#104618)
* Fix issues running integration tests through DAP

These adapters were incorrectly trying to connect a DDS instance even when Flutter would create its own. This change disables DDS in the DAP layer and leaves it to Flutter (although it passes `--no-dds` on to Flutter if provided to the DAP process).

Also fixes an issue where we would unnecessarily connect the VM Service for tests even in 'noDebug' mode because of a change/fix that now includes a 'vmServiceUri' in the `test.startedProcess` event.
2022-05-26 09:36:30 +01:00
Michael Goderbauer
d5cbb36c91
Migrate remaining files to super parameters (#101919) 2022-04-14 12:04:07 -07:00
Danny Tuppeny
675b961573
Unpause and remove breakpoints when detaching from Flutter process with DAP (#101695) 2022-04-11 21:15:37 +01:00
Michael Goderbauer
296221a90d
Partial revert of super params in tools (#101436) 2022-04-06 11:04:38 -07:00
Michael Goderbauer
dcde8163ce
migrate to super params (#100509) 2022-03-31 11:46:47 -07:00
Danny Tuppeny
801ad5cd5a
Don't terminate Dart process pids from VM Service, record flutter_tools VM pid (#100223)
* Don't terminate Dart process pids from VM Service

These processes may be on another device, and in the case of attach the debugee should not be terminated anyway.
2022-03-23 16:31:31 +00:00
Danny Tuppeny
ea8aeb7427
[dap] Remove some code that's not longer required (#98928) 2022-03-22 14:20:12 -07:00
Danny Tuppeny
b39a9473f8
Handle Flutter.Error events and disable structure errors for noDebug mode (#100149) 2022-03-17 16:05:21 -07:00
Danny Tuppeny
76758ef960
[dap] Don't use --start-paused when running in Profile/Release mode (#98926) 2022-02-24 17:06:24 -08:00
Ben Konyi
50c4720913
Update dependencies to pull in new vm_service, dds, dwds, coverage, etc (#98513) 2022-02-18 12:32:08 -08:00
Danny Tuppeny
c659ad6ace
Add support for attachRequest in DAP, running "flutter attach" (#97652)
* Add support for attachRequest in DAP, which runs "flutter attach"

* Update DAP docs for attachRequest

* Improve doc comments

* Fix comments

* Remove noDebug from attach + create a getter for `debug`

* Fix indent
2022-02-07 18:54:07 +00:00
Michael Goderbauer
5684b9f69e
Enable no_leading_underscores_for_local_identifiers (#96422) 2022-01-21 14:43:59 -08:00
Danny Tuppeny
7e1e98c356
Add support for executing custom tools in place of Flutter for DAP (#94475) 2021-12-15 13:29:05 -08:00
Danny Tuppeny
77fca35877
[DAP] Add a custom event to pass flutter.serviceExtensionStateChanged… (#93870) 2021-11-22 20:12:33 -08:00
Danny Tuppeny
57dbf7f7e7
Add support for running tests through debug-adapter (#92587)
* Add support for running tests through debug-adapter

* Improve comments about stdout + remove pedantic
2021-10-28 11:34:05 +01:00
Danny Tuppeny
de966d8a49
Add a "flutter debug_adapter" command that runs a DAP server (#91802) 2021-10-27 06:48:06 -07:00