Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dwds/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

- Added WebSocket-based hot reload support: `reloadSources` in `ChromeProxyService` and `DevHandler` now handle hot reload requests and responses over WebSockets.
- Refactored the injected client to use a reusable function for handling hot reload requests and responses over WebSockets.
- Added support for breakpoint registering on a hot restart with the DDC library bundle format using PausePostRequests.

## 24.3.10

Expand Down
17 changes: 3 additions & 14 deletions dwds/lib/src/dwds_vm_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import 'package:dwds/src/events.dart';
import 'package:dwds/src/services/chrome_debug_exception.dart';
import 'package:dwds/src/services/chrome_proxy_service.dart';
import 'package:dwds/src/services/debug_service.dart';
import 'package:dwds/src/utilities/shared.dart';
import 'package:dwds/src/utilities/synchronized.dart';
import 'package:logging/logging.dart';
import 'package:uuid/uuid.dart';
Expand Down Expand Up @@ -443,24 +442,14 @@ Future<Map<String, dynamic>> _hotRestart(
}

void _waitForResumeEventToRunMain(ChromeProxyService chromeProxyService) {
final issuedReadyToRunMainCompleter = Completer<void>();

final resumeEventsSubscription = chromeProxyService
.resumeAfterRestartEventsStream
StreamSubscription<String>? resumeEventsSubscription;
resumeEventsSubscription = chromeProxyService.resumeAfterRestartEventsStream
.listen((_) async {
await resumeEventsSubscription!.cancel();
await chromeProxyService.inspector.jsEvaluate(
'\$dartReadyToRunMain();',
);
if (!issuedReadyToRunMainCompleter.isCompleted) {
issuedReadyToRunMainCompleter.complete();
}
});

safeUnawaited(
issuedReadyToRunMainCompleter.future.then((_) {
resumeEventsSubscription.cancel();
}),
);
}

Future<Map<String, dynamic>> _fullReload(
Expand Down
13 changes: 3 additions & 10 deletions dwds/lib/src/handlers/dev_handler.dart
Original file line number Diff line number Diff line change
Expand Up @@ -538,18 +538,11 @@ class DevHandler {
Stream<String> resumeEventsStream,
Completer<void> readyToRunMainCompleter,
) {
final resumeEventsSubscription = resumeEventsStream.listen((_) {
StreamSubscription<String>? resumeEventsSubscription;
resumeEventsSubscription = resumeEventsStream.listen((_) async {
await resumeEventsSubscription!.cancel();
readyToRunMainCompleter.complete();
if (!readyToRunMainCompleter.isCompleted) {
readyToRunMainCompleter.complete();
}
});

safeUnawaited(
readyToRunMainCompleter.future.then((_) {
resumeEventsSubscription.cancel();
}),
);
}

void _handleIsolateExit(AppConnection appConnection) {
Expand Down
Loading
Loading