From b190a7c21f4aa3e2e074c91fd6e0b911807a4263 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Tue, 31 May 2022 15:24:36 -0700 Subject: [PATCH 1/2] Adds the setIsolatePauseMode method --- .../src/services/chrome_proxy_service.dart | 8 ++++++++ dwds/test/chrome_proxy_service_test.dart | 20 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/dwds/lib/src/services/chrome_proxy_service.dart b/dwds/lib/src/services/chrome_proxy_service.dart index 3b396ba4b..6fbd08071 100644 --- a/dwds/lib/src/services/chrome_proxy_service.dart +++ b/dwds/lib/src/services/chrome_proxy_service.dart @@ -741,6 +741,14 @@ ${globalLoadStrategy.loadModuleSnippet}("dart_sdk").developer.invokeExtension( } } + @override + Future setIsolatePauseMode(String isolateId, + {String exceptionPauseMode, bool shouldPauseOnExit}) async { + // TODO(elliette): Is there a way to respect the shouldPauseOnExit parameter + // in Chrome? + return setExceptionPauseMode(isolateId, exceptionPauseMode); + } + @override Future setExceptionPauseMode(String isolateId, String mode) async { await isInitialized; diff --git a/dwds/test/chrome_proxy_service_test.dart b/dwds/test/chrome_proxy_service_test.dart index 46bebc624..b53a18575 100644 --- a/dwds/test/chrome_proxy_service_test.dart +++ b/dwds/test/chrome_proxy_service_test.dart @@ -1121,7 +1121,7 @@ void main() { expect(stack.truncated, isFalse); }); - test('break on exceptions', () async { + test('break on exceptions with legacy setExceptionPauseMode', () async { final oldPauseMode = (await service.getIsolate(isolateId)).exceptionPauseMode; await service.setExceptionPauseMode(isolateId, ExceptionPauseMode.kAll); @@ -1137,6 +1137,24 @@ void main() { await service.resume(isolateId); }); + test('break on exceptions with setIsolatePauseMode', () async { + final oldPauseMode = + (await service.getIsolate(isolateId)).exceptionPauseMode; + await service.setIsolatePauseMode(isolateId, + exceptionPauseMode: ExceptionPauseMode.kAll); + // Wait for pausing to actually propagate. + var event = await stream + .firstWhere((event) => event.kind == EventKind.kPauseException); + expect(event.exception, isNotNull); + + var stack = await service.getStack(isolateId); + expect(stack, isNotNull); + + await service.setIsolatePauseMode(isolateId, + exceptionPauseMode: oldPauseMode); + await service.resume(isolateId); + }); + test('returns non-empty stack when paused', () async { await service.pause(isolateId); // Wait for pausing to actually propagate. From 035db75ba3b97576ebb0434e0ea0989c17a1b945 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Tue, 31 May 2022 15:31:33 -0700 Subject: [PATCH 2/2] Update CHANGELOG --- dwds/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md index f5a9ad694..4e4aae2a2 100644 --- a/dwds/CHANGELOG.md +++ b/dwds/CHANGELOG.md @@ -1,7 +1,8 @@ ## 14.0.3-dev -- Make data types null safe +- Make data types null safe. - Update `package:vm_service` to 8.3.0. - Convert JavaScript stack traces in uncaught exceptions to Dart stack traces. +- Add the setIsolatePauseMode method to Chrome Proxy Service. ## 14.0.2 - Update the min SDK constraint to 2.17.0.