Skip to content

Commit

Permalink
Add a reload handler along with a restart handler (#2439)
Browse files Browse the repository at this point in the history
  • Loading branch information
elliette authored May 28, 2024
1 parent 15028c4 commit 1bed26a
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions dwds/lib/src/dwds_vm_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ typedef VmResponse = Map<String, Object?>;

enum _NamespacedServiceExtension {
extDwdsEmitEvent(method: 'ext.dwds.emitEvent'),
extDwdsReload(method: 'ext.dwds.reload'),
extDwdsRestart(method: 'ext.dwds.restart'),
extDwdsScreenshot(method: 'ext.dwds.screenshot'),
extDwdsSendEvent(method: 'ext.dwds.sendEvent'),
Expand Down Expand Up @@ -77,6 +78,8 @@ class DwdsVmClient {
final requestSink = requestController.sink;
final requestStream = requestController.stream;

final clientCompleter = Completer<VmService>();

_setUpVmServerConnection(
chromeProxyService: chromeProxyService,
debugService: debugService,
Expand All @@ -85,6 +88,7 @@ class DwdsVmClient {
requestStream: requestStream,
requestSink: requestSink,
dwdsStats: dwdsStats,
clientFuture: clientCompleter.future,
);

final client = ddsUri == null
Expand All @@ -97,6 +101,10 @@ class DwdsVmClient {
ddsUri: ddsUri,
);

if (!clientCompleter.isCompleted) {
clientCompleter.complete(client);
}

final dwdsVmClient =
DwdsVmClient(client, requestController, responseController);

Expand Down Expand Up @@ -158,12 +166,14 @@ class DwdsVmClient {
required StreamSink<VmResponse> responseSink,
required Stream<VmRequest> requestStream,
required StreamSink<VmRequest> requestSink,
required Future<VmService> clientFuture,
}) {
responseStream.listen((request) async {
final response = await _maybeHandleServiceExtensionRequest(
request,
chromeProxyService: chromeProxyService,
dwdsStats: dwdsStats,
clientFuture: clientFuture,
);
if (response != null) {
requestSink.add(response);
Expand All @@ -187,15 +197,19 @@ class DwdsVmClient {
VmResponse request, {
required ChromeProxyService chromeProxyService,
required DwdsStats dwdsStats,
required Future<VmService> clientFuture,
}) async {
VmRequest? response;
final method = request['method'];
if (method == _NamespacedServiceExtension.flutterListViews.method) {
response = await _flutterListViewsHandler(chromeProxyService);
} else if (method == _NamespacedServiceExtension.extDwdsEmitEvent.method) {
response = _extDwdsEmitEventHandler(request);
} else if (method == _NamespacedServiceExtension.extDwdsReload.method) {
response = await _extDwdsReloadHandler(chromeProxyService);
} else if (method == _NamespacedServiceExtension.extDwdsRestart.method) {
response = await _extDwdsRestartHandler(chromeProxyService);
final client = await clientFuture;
response = await _extDwdsRestartHandler(chromeProxyService, client);
} else if (method == _NamespacedServiceExtension.extDwdsSendEvent.method) {
response = await _extDwdsSendEventHandler(request, dwdsStats);
} else if (method == _NamespacedServiceExtension.extDwdsScreenshot.method) {
Expand Down Expand Up @@ -265,13 +279,21 @@ class DwdsVmClient {
return {'result': Success().toJson()};
}

static Future<Map<String, Object>> _extDwdsRestartHandler(
static Future<Map<String, Object>> _extDwdsReloadHandler(
ChromeProxyService chromeProxyService,
) async {
await _fullReload(chromeProxyService);
return {'result': Success().toJson()};
}

static Future<Map<String, Object>> _extDwdsRestartHandler(
ChromeProxyService chromeProxyService,
VmService client,
) async {
await _hotRestart(chromeProxyService, client);
return {'result': Success().toJson()};
}

static Future<void> _registerServiceExtensions({
required VmService client,
required ChromeProxyService chromeProxyService,
Expand Down

0 comments on commit 1bed26a

Please sign in to comment.