From 59609c7d1d1c7742c3332c41c5aee85f2c7d9fe2 Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Tue, 16 Apr 2019 13:44:57 -0700 Subject: [PATCH 1/2] publish 2.0.0-alpha.4 --- webdev/CHANGELOG.md | 4 ++-- webdev/pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/webdev/CHANGELOG.md b/webdev/CHANGELOG.md index c89a3d0d9..0ae60377d 100644 --- a/webdev/CHANGELOG.md +++ b/webdev/CHANGELOG.md @@ -1,6 +1,6 @@ -## 2.0.0-dev +## 2.0.0-alpha.4 -- Fix an NPE is the reload logic. +- Fix hot restart so it works for all build_web_compilers versions. ## 2.0.0-alpha.3 diff --git a/webdev/pubspec.yaml b/webdev/pubspec.yaml index c006a109e..8cfb05d4a 100644 --- a/webdev/pubspec.yaml +++ b/webdev/pubspec.yaml @@ -1,5 +1,5 @@ name: webdev -version: 2.0.0-dev +version: 2.0.0-alpha.4 author: Dart Team homepage: https://github.com/dart-lang/webdev description: >- From ba7184a78f3e9560d8a406091852c05bd209ec4a Mon Sep 17 00:00:00 2001 From: Gary Roumanis Date: Tue, 16 Apr 2019 17:51:08 -0700 Subject: [PATCH 2/2] Merge master --- webdev/CHANGELOG.md | 2 ++ webdev/lib/src/daemon/app_domain.dart | 24 ++++++++++++++++++------ webdev/test/daemon/app_domain_test.dart | 15 +++++++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/webdev/CHANGELOG.md b/webdev/CHANGELOG.md index 0ae60377d..1b3eee41f 100644 --- a/webdev/CHANGELOG.md +++ b/webdev/CHANGELOG.md @@ -1,6 +1,8 @@ ## 2.0.0-alpha.4 - Fix hot restart so it works for all build_web_compilers versions. +- Fix an NPE is the reload logic. +- Shutdown the daemon process when the corresponding application is closed. ## 2.0.0-alpha.3 diff --git a/webdev/lib/src/daemon/app_domain.dart b/webdev/lib/src/daemon/app_domain.dart index fe0124f8f..42959c091 100644 --- a/webdev/lib/src/daemon/app_domain.dart +++ b/webdev/lib/src/daemon/app_domain.dart @@ -8,9 +8,9 @@ import 'dart:io'; import 'package:build_daemon/data/build_status.dart'; import 'package:dwds/service.dart'; +import 'package:pedantic/pedantic.dart'; import 'package:vm_service_lib/vm_service_lib.dart'; -import '../serve/chrome.dart'; import '../serve/debugger/app_debug_services.dart'; import '../serve/server_manager.dart'; import 'daemon.dart'; @@ -70,6 +70,18 @@ class AppDomain extends Domain { _appDebugServices = await devHandler.loadAppServices( connection.request.appId, connection.request.instanceId); _appId = connection.request.appId; + unawaited(_appDebugServices + .debugService.chromeProxyService.tabConnection.onClose.first + .then((_) { + sendEvent('app.log', { + 'appId': _appId, + 'log': 'Lost connection to device.', + }); + sendEvent('app.stop', { + 'appId': _appId, + }); + daemon.shutdown(); + })); sendEvent('app.start', { 'appId': _appId, 'directory': Directory.current.path, @@ -152,9 +164,9 @@ class AppDomain extends Domain { 'finished': true, 'progressId': 'hot.restart', }); - sendEvent('daemon.logMessage', { - 'level': 'info', - 'message': 'Restarted application in ${stopwatch.elapsedMilliseconds}ms' + sendEvent('app.log', { + 'appId': _appId, + 'log': 'Restarted application in ${stopwatch.elapsedMilliseconds}ms' }); return { 'code': response.type == 'Success' ? 0 : 1, @@ -165,8 +177,8 @@ class AppDomain extends Domain { Future _stop(Map args) async { var appId = getStringArg(args, 'appId', required: true); if (_appId != appId) throw ArgumentError.value(appId, 'appId', 'Not found'); - var chrome = await Chrome.connectedInstance; - await chrome.close(); + await _appDebugServices.debugService.chromeProxyService.tabConnection + .close(); return true; } diff --git a/webdev/test/daemon/app_domain_test.dart b/webdev/test/daemon/app_domain_test.dart index cbe3db75c..131066239 100644 --- a/webdev/test/daemon/app_domain_test.dart +++ b/webdev/test/daemon/app_domain_test.dart @@ -111,6 +111,21 @@ void main() { ]))); await exitWebdev(webdev); }); + + test('.stop', () async { + var webdev = + await runWebDev(['daemon'], workingDirectory: exampleDirectory); + var appId = await _getAppId(webdev); + var stopCall = '[{"method":"app.stop","id":0,' + '"params" : { "appId" : "$appId"}}]'; + webdev.stdin.add(utf8.encode('$stopCall\n')); + await expectLater( + webdev.stdout, + emitsThrough(startsWith( + '[{"event":"app.stop","params":{"appId":"$appId"}}'))); + // This should cause webdev to exit. + expect(await webdev.exitCode, equals(0)); + }); }); }, tags: ['webdriver']); }