Skip to content

Commit 1bed26a

Browse files
authored
Add a reload handler along with a restart handler (#2439)
1 parent 15028c4 commit 1bed26a

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

dwds/lib/src/dwds_vm_client.dart

+24-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ typedef VmResponse = Map<String, Object?>;
2828

2929
enum _NamespacedServiceExtension {
3030
extDwdsEmitEvent(method: 'ext.dwds.emitEvent'),
31+
extDwdsReload(method: 'ext.dwds.reload'),
3132
extDwdsRestart(method: 'ext.dwds.restart'),
3233
extDwdsScreenshot(method: 'ext.dwds.screenshot'),
3334
extDwdsSendEvent(method: 'ext.dwds.sendEvent'),
@@ -77,6 +78,8 @@ class DwdsVmClient {
7778
final requestSink = requestController.sink;
7879
final requestStream = requestController.stream;
7980

81+
final clientCompleter = Completer<VmService>();
82+
8083
_setUpVmServerConnection(
8184
chromeProxyService: chromeProxyService,
8285
debugService: debugService,
@@ -85,6 +88,7 @@ class DwdsVmClient {
8588
requestStream: requestStream,
8689
requestSink: requestSink,
8790
dwdsStats: dwdsStats,
91+
clientFuture: clientCompleter.future,
8892
);
8993

9094
final client = ddsUri == null
@@ -97,6 +101,10 @@ class DwdsVmClient {
97101
ddsUri: ddsUri,
98102
);
99103

104+
if (!clientCompleter.isCompleted) {
105+
clientCompleter.complete(client);
106+
}
107+
100108
final dwdsVmClient =
101109
DwdsVmClient(client, requestController, responseController);
102110

@@ -158,12 +166,14 @@ class DwdsVmClient {
158166
required StreamSink<VmResponse> responseSink,
159167
required Stream<VmRequest> requestStream,
160168
required StreamSink<VmRequest> requestSink,
169+
required Future<VmService> clientFuture,
161170
}) {
162171
responseStream.listen((request) async {
163172
final response = await _maybeHandleServiceExtensionRequest(
164173
request,
165174
chromeProxyService: chromeProxyService,
166175
dwdsStats: dwdsStats,
176+
clientFuture: clientFuture,
167177
);
168178
if (response != null) {
169179
requestSink.add(response);
@@ -187,15 +197,19 @@ class DwdsVmClient {
187197
VmResponse request, {
188198
required ChromeProxyService chromeProxyService,
189199
required DwdsStats dwdsStats,
200+
required Future<VmService> clientFuture,
190201
}) async {
191202
VmRequest? response;
192203
final method = request['method'];
193204
if (method == _NamespacedServiceExtension.flutterListViews.method) {
194205
response = await _flutterListViewsHandler(chromeProxyService);
195206
} else if (method == _NamespacedServiceExtension.extDwdsEmitEvent.method) {
196207
response = _extDwdsEmitEventHandler(request);
208+
} else if (method == _NamespacedServiceExtension.extDwdsReload.method) {
209+
response = await _extDwdsReloadHandler(chromeProxyService);
197210
} else if (method == _NamespacedServiceExtension.extDwdsRestart.method) {
198-
response = await _extDwdsRestartHandler(chromeProxyService);
211+
final client = await clientFuture;
212+
response = await _extDwdsRestartHandler(chromeProxyService, client);
199213
} else if (method == _NamespacedServiceExtension.extDwdsSendEvent.method) {
200214
response = await _extDwdsSendEventHandler(request, dwdsStats);
201215
} else if (method == _NamespacedServiceExtension.extDwdsScreenshot.method) {
@@ -265,13 +279,21 @@ class DwdsVmClient {
265279
return {'result': Success().toJson()};
266280
}
267281

268-
static Future<Map<String, Object>> _extDwdsRestartHandler(
282+
static Future<Map<String, Object>> _extDwdsReloadHandler(
269283
ChromeProxyService chromeProxyService,
270284
) async {
271285
await _fullReload(chromeProxyService);
272286
return {'result': Success().toJson()};
273287
}
274288

289+
static Future<Map<String, Object>> _extDwdsRestartHandler(
290+
ChromeProxyService chromeProxyService,
291+
VmService client,
292+
) async {
293+
await _hotRestart(chromeProxyService, client);
294+
return {'result': Success().toJson()};
295+
}
296+
275297
static Future<void> _registerServiceExtensions({
276298
required VmService client,
277299
required ChromeProxyService chromeProxyService,

0 commit comments

Comments
 (0)