Skip to content

Commit 6e0d0de

Browse files
author
Anna Gringauze
committed
Support 'action' field in Devtools event payload
1 parent c44b003 commit 6e0d0de

File tree

4 files changed

+51
-16
lines changed

4 files changed

+51
-16
lines changed

dwds/CHANGELOG.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
1+
## 11.3.1-dev
2+
3+
- Add metrics measuring DevTools Initial Page Load time.
4+
- Add `ext.dwds.sendEvent` service extension to dwds so other tools
5+
can send events to the debugger.
6+
Event format:
7+
```
8+
{
9+
'type': '<event type>',
10+
'payload': {
11+
'screen: '<screen name>',
12+
'action: '<action name>',
13+
}
14+
}
15+
```
16+
Currently supported event values:
17+
```
18+
{
19+
'type: 'DevtoolsEvent',
20+
'payload': {
21+
'screen': 'debugger'
22+
'action': 'screenReady'
23+
}
24+
}
25+
```
26+
127
## 11.3.0
228

329
- Update SDK constraint to `>=2.14.0 <3.0.0`
430
- Depend on `vm_service` version `7.3.0`.
5-
- Add metrics measuring DevTools Initial Page Load time.
631

732
## 11.2.3
833

dwds/lib/src/dwds_vm_client.dart

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -156,19 +156,7 @@ class DwdsVmClient {
156156
await client.registerService('ext.dwds.screenshot', 'DWDS');
157157

158158
client.registerServiceCallback('ext.dwds.sendEvent', (event) async {
159-
var type = event['type'] as String;
160-
var payload = event['payload'] as Map<String, dynamic>;
161-
switch (type) {
162-
case 'DevtoolsEvent':
163-
{
164-
var screen = payload == null ? null : payload['screen'];
165-
if (screen == 'debugger' && dwdsStats.isFirstDebuggerReady()) {
166-
emitEvent(DwdsEvent.debuggerReady(DateTime.now()
167-
.difference(dwdsStats.debuggerStart)
168-
.inMilliseconds));
169-
}
170-
}
171-
}
159+
_processSendEvent(event, chromeProxyService, dwdsStats);
172160
return {'result': Success().toJson()};
173161
});
174162
await client.registerService('ext.dwds.sendEvent', 'DWDS');
@@ -206,6 +194,28 @@ class DwdsVmClient {
206194
}
207195
}
208196

197+
void _processSendEvent(Map<String, dynamic> event,
198+
ChromeProxyService chromeProxyService, DwdsStats dwdsStats) {
199+
var type = event['type'] as String;
200+
var payload = event['payload'] as Map<String, dynamic>;
201+
switch (type) {
202+
case 'DevtoolsEvent':
203+
{
204+
var screen = payload == null ? null : payload['screen'];
205+
var action = payload == null ? null : payload['action'];
206+
if (screen == 'debugger' &&
207+
action == 'screenReady' &&
208+
dwdsStats.isFirstDebuggerReady()) {
209+
emitEvent(DwdsEvent.debuggerReady(DateTime.now()
210+
.difference(dwdsStats.debuggerStart)
211+
.inMilliseconds));
212+
} else {
213+
_logger.warning('Ignoring unknown event: $event');
214+
}
215+
}
216+
}
217+
}
218+
209219
Future<void> _disableBreakpointsAndResume(
210220
VmService client, ChromeProxyService chromeProxyService) async {
211221
_logger.info('Attempting to disable breakpoints and resume the isolate');

dwds/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: dwds
22
# Every time this changes you need to run `pub run build_runner build`.
3-
version: 11.3.0
3+
version: 11.3.1-dev
44
homepage: https://github.com/dart-lang/webdev/tree/master/dwds
55
description: >-
66
A service that proxies between the Chrome debug protocol and the Dart VM

dwds/test/events_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ void main() {
9898
var response = await context.debugConnection.vmService
9999
.callServiceExtension('ext.dwds.sendEvent', args: {
100100
'type': 'DevtoolsEvent',
101-
'payload': {'screen': 'debugger'},
101+
'payload': {'screen': 'debugger', 'action': 'screenReady'},
102102
});
103103
expect(response.type, 'Success');
104104
await events;

0 commit comments

Comments
 (0)