Address comments
diff --git a/dwds/lib/src/debugging/webkit_debugger.dart b/dwds/lib/src/debugging/webkit_debugger.dart index 7eec8e1..14edf94 100644 --- a/dwds/lib/src/debugging/webkit_debugger.dart +++ b/dwds/lib/src/debugging/webkit_debugger.dart
@@ -54,6 +54,8 @@ _onTargetCrashedController, ]; + final _streamSubscriptions = <StreamSubscription>[]; + @override Future<void> Function()? onReconnect; @@ -95,24 +97,32 @@ _initialize(); }); - _wipDebugger.connection.runtime - ..onConsoleAPICalled.listen(_onConsoleAPICalledController.add) - ..onExceptionThrown.listen(_onExceptionThrownController.add); - _wipDebugger - ..onGlobalObjectCleared.listen(_onGlobalObjectClearedController.add) - ..onPaused.listen(_onPausedController.add) - ..onResumed.listen(_onResumedController.add) - ..onScriptParsed.listen(_onScriptParsedController.add) - ..eventStream( - 'Inspector.targetCrashed', - (WipEvent event) => TargetCrashedEvent(event.json), - ).listen(_onTargetCrashedController.add); + final runtime = _wipDebugger.connection.runtime; + _streamSubscriptions + ..forEach((e) => e.cancel()) + ..clear() + ..addAll([ + runtime.onConsoleAPICalled.listen(_onConsoleAPICalledController.add), + runtime.onExceptionThrown.listen(_onExceptionThrownController.add), + _wipDebugger.onGlobalObjectCleared.listen( + _onGlobalObjectClearedController.add, + ), + _wipDebugger.onPaused.listen(_onPausedController.add), + _wipDebugger.onResumed.listen(_onResumedController.add), + _wipDebugger.onScriptParsed.listen(_onScriptParsedController.add), + _wipDebugger + .eventStream( + 'Inspector.targetCrashed', + (WipEvent event) => TargetCrashedEvent(event.json), + ) + .listen(_onTargetCrashedController.add), - for (final MapEntry(:key, value: (:controller, :transformer)) - in _eventStreams.entries) { - final stream = _wipDebugger.eventStream(key, transformer); - stream.listen(controller.add, onError: controller.addError); - } + for (final MapEntry(:key, value: (:controller, :transformer)) + in _eventStreams.entries) + _wipDebugger + .eventStream(key, transformer) + .listen(controller.add, onError: controller.addError), + ]); } @override @@ -130,7 +140,10 @@ }) => _wipDebugger.sendCommand(command, params: params); @override - Future<void> close() => _closed ??= _wipDebugger.connection.close(); + Future<void> close() => _closed ??= () async { + await _wipDebugger.connection.close(); + await Future.wait([for (final sub in _streamSubscriptions) sub.cancel()]); + }(); @override Future<void> disable() => _wipDebugger.disable();