Skip to content

Commit fa02c57

Browse files
author
Anna Gringauze
committed
Generalize devtools events to support multiple screens
1 parent be9a6dc commit fa02c57

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

dwds/lib/src/dwds_vm_client.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,16 @@ class DwdsVmClient {
157157

158158
client.registerServiceCallback('ext.dwds.sendEvent', (event) async {
159159
var type = event['type'] as String;
160+
var payload = event['payload'] as Map<String, dynamic>;
160161
switch (type) {
161-
case 'DevtoolsReady':
162+
case 'DevtoolsEvent':
162163
{
163-
emitEvent(DwdsEvent.debuggerReady(DateTime.now()
164-
.difference(dwdsStats.debuggerStart)
165-
.inMilliseconds));
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+
}
166170
}
167171
}
168172
return {'result': Success().toJson()};

dwds/test/events_test.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ void main() {
8888
await events;
8989
});
9090

91-
test(
92-
'can receive DevtoolsReady event and emit DEBUGGER_READY '
93-
'event through service extension', () async {
91+
test('can receive DevtoolsEvent and emit DEBUGGER_READY event', () async {
9492
var events = expectLater(
9593
context.testServer.dwds.events,
9694
emitsThrough(predicate((DwdsEvent event) =>
@@ -99,8 +97,8 @@ void main() {
9997

10098
var response = await context.debugConnection.vmService
10199
.callServiceExtension('ext.dwds.sendEvent', args: {
102-
'type': 'DevtoolsReady',
103-
'payload': {},
100+
'type': 'DevtoolsEvent',
101+
'payload': {'screen': 'debugger'},
104102
});
105103
expect(response.type, 'Success');
106104
await events;

0 commit comments

Comments
 (0)