Skip to content

Commit 63c7e72

Browse files
authored
Cider expects messages from a Chrome extension to be a JS object, not a string (#2249)
1 parent a10bf10 commit 63c7e72

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

dwds/debug_extension_mv3/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: mv3_extension
22
publish_to: none
3-
version: 1.36.0
3+
version: 1.37.0
44
homepage: https://github.com/dart-lang/webdev
55
description: >-
66
A Chrome extension for Dart debugging.

dwds/debug_extension_mv3/web/cider_connection.dart

+22-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
library cider_connection;
77

88
import 'dart:convert';
9+
import 'dart:js_util';
910

1011
import 'package:dwds/data/debug_info.dart';
1112
import 'package:js/js.dart';
@@ -15,6 +16,11 @@ import 'debug_session.dart';
1516
import 'logger.dart';
1617
import 'storage.dart';
1718

19+
/// Used to identify messages passed to/from Cider.
20+
///
21+
/// This must match the key defined in the Cider extension.
22+
const _ciderDartMessageKey = 'CIDER_DART';
23+
1824
/// Defines the message types that can be passed to/from Cider.
1925
///
2026
/// The types must match those defined by ChromeExtensionMessageType in the
@@ -67,7 +73,7 @@ void sendMessageToCider({
6773
'messageType': messageType.name,
6874
'messageBody': messageBody,
6975
});
70-
_ciderPort!.postMessage(message);
76+
_sendMessageToCider(message);
7177
}
7278

7379
/// Sends an error message to the Cider-connected port.
@@ -82,19 +88,29 @@ void sendErrorMessageToCider({
8288
'errorType': errorType.name,
8389
'messageBody': errorDetails,
8490
});
85-
_ciderPort!.postMessage(message);
91+
_sendMessageToCider(message);
92+
}
93+
94+
void _sendMessageToCider(String json) {
95+
final message = {
96+
'key': _ciderDartMessageKey,
97+
'json': json,
98+
};
99+
_ciderPort!.postMessage(jsify(message));
86100
}
87101

88102
Future<void> _handleMessageFromCider(dynamic message, Port _) async {
89-
if (message is! String) {
103+
final key = getProperty(message, 'key');
104+
final json = getProperty(message, 'json');
105+
if (key != _ciderDartMessageKey || json is! String) {
90106
sendErrorMessageToCider(
91107
errorType: CiderErrorType.invalidRequest,
92-
errorDetails: 'Expected request to be a string: $message',
108+
errorDetails: 'Invalid message format: $message',
93109
);
94110
return;
95111
}
96112

97-
final decoded = jsonDecode(message) as Map<String, dynamic>;
113+
final decoded = jsonDecode(json) as Map<String, dynamic>;
98114
final messageType = decoded['messageType'] as String?;
99115
final messageBody = decoded['messageBody'] as String?;
100116

@@ -172,7 +188,7 @@ Future<int?> _findDartTabIdForWorkspace(String workspaceName) async {
172188
}
173189
if (dartTabIds.length > 1) {
174190
sendErrorMessageToCider(
175-
errorType: CiderErrorType.noDartTab,
191+
errorType: CiderErrorType.multipleDartTabs,
176192
errorDetails: 'Too many debuggable Dart tabs found.',
177193
);
178194
return null;

dwds/debug_extension_mv3/web/manifest_mv2.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Dart Debug Extension",
3-
"version": "1.36",
3+
"version": "1.37",
44
"manifest_version": 2,
55
"devtools_page": "static_assets/devtools.html",
66
"browser_action": {

dwds/debug_extension_mv3/web/manifest_mv3.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Dart Debug Extension",
3-
"version": "1.36",
3+
"version": "1.37",
44
"manifest_version": 3,
55
"devtools_page": "static_assets/devtools.html",
66
"action": {

0 commit comments

Comments
 (0)