diff --git a/dwds/debug_extension_mv3/pubspec.yaml b/dwds/debug_extension_mv3/pubspec.yaml index e5d047944..6a91309a6 100644 --- a/dwds/debug_extension_mv3/pubspec.yaml +++ b/dwds/debug_extension_mv3/pubspec.yaml @@ -1,6 +1,6 @@ name: mv3_extension publish_to: none -version: 1.36.0 +version: 1.37.0 homepage: https://github.com/dart-lang/webdev description: >- A Chrome extension for Dart debugging. diff --git a/dwds/debug_extension_mv3/web/cider_connection.dart b/dwds/debug_extension_mv3/web/cider_connection.dart index 71b4b30be..54a78e659 100644 --- a/dwds/debug_extension_mv3/web/cider_connection.dart +++ b/dwds/debug_extension_mv3/web/cider_connection.dart @@ -6,6 +6,7 @@ library cider_connection; import 'dart:convert'; +import 'dart:js_util'; import 'package:dwds/data/debug_info.dart'; import 'package:js/js.dart'; @@ -15,6 +16,11 @@ import 'debug_session.dart'; import 'logger.dart'; import 'storage.dart'; +/// Used to identify messages passed to/from Cider. +/// +/// This must match the key defined in the Cider extension. +const _ciderDartMessageKey = 'CIDER_DART'; + /// Defines the message types that can be passed to/from Cider. /// /// The types must match those defined by ChromeExtensionMessageType in the @@ -67,7 +73,7 @@ void sendMessageToCider({ 'messageType': messageType.name, 'messageBody': messageBody, }); - _ciderPort!.postMessage(message); + _sendMessageToCider(message); } /// Sends an error message to the Cider-connected port. @@ -82,19 +88,29 @@ void sendErrorMessageToCider({ 'errorType': errorType.name, 'messageBody': errorDetails, }); - _ciderPort!.postMessage(message); + _sendMessageToCider(message); +} + +void _sendMessageToCider(String json) { + final message = { + 'key': _ciderDartMessageKey, + 'json': json, + }; + _ciderPort!.postMessage(jsify(message)); } Future _handleMessageFromCider(dynamic message, Port _) async { - if (message is! String) { + final key = getProperty(message, 'key'); + final json = getProperty(message, 'json'); + if (key != _ciderDartMessageKey || json is! String) { sendErrorMessageToCider( errorType: CiderErrorType.invalidRequest, - errorDetails: 'Expected request to be a string: $message', + errorDetails: 'Invalid message format: $message', ); return; } - final decoded = jsonDecode(message) as Map; + final decoded = jsonDecode(json) as Map; final messageType = decoded['messageType'] as String?; final messageBody = decoded['messageBody'] as String?; @@ -172,7 +188,7 @@ Future _findDartTabIdForWorkspace(String workspaceName) async { } if (dartTabIds.length > 1) { sendErrorMessageToCider( - errorType: CiderErrorType.noDartTab, + errorType: CiderErrorType.multipleDartTabs, errorDetails: 'Too many debuggable Dart tabs found.', ); return null; diff --git a/dwds/debug_extension_mv3/web/manifest_mv2.json b/dwds/debug_extension_mv3/web/manifest_mv2.json index b239ea373..1fba9c10c 100644 --- a/dwds/debug_extension_mv3/web/manifest_mv2.json +++ b/dwds/debug_extension_mv3/web/manifest_mv2.json @@ -1,6 +1,6 @@ { "name": "Dart Debug Extension", - "version": "1.36", + "version": "1.37", "manifest_version": 2, "devtools_page": "static_assets/devtools.html", "browser_action": { diff --git a/dwds/debug_extension_mv3/web/manifest_mv3.json b/dwds/debug_extension_mv3/web/manifest_mv3.json index 06ee821c5..c0b2960e2 100644 --- a/dwds/debug_extension_mv3/web/manifest_mv3.json +++ b/dwds/debug_extension_mv3/web/manifest_mv3.json @@ -1,6 +1,6 @@ { "name": "Dart Debug Extension", - "version": "1.36", + "version": "1.37", "manifest_version": 3, "devtools_page": "static_assets/devtools.html", "action": {