| // Copyright 2016 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| let {session, contextGroup, Protocol} = InspectorTest.start("Check that inspector correctly change break on exception state."); |
| |
| contextGroup.addScript(` |
| function scheduleUncaughtException() |
| { |
| setTimeout(throwUncaughtException, 0); |
| } |
| function throwUncaughtException() |
| { |
| throw new Error(); |
| } |
| function throwCaughtException() |
| { |
| throw new Error(); |
| }`); |
| |
| Protocol.Debugger.onPaused(message => { |
| InspectorTest.log("paused in " + message.params.callFrames[0].functionName); |
| Protocol.Debugger.resume(); |
| }); |
| |
| Protocol.Runtime.enable(); |
| |
| InspectorTest.runTestSuite([ |
| function noBreakOnExceptionAfterEnabled(next) |
| { |
| Protocol.Debugger.enable(); |
| Protocol.Debugger.setPauseOnExceptions({ state: "all" }); |
| Protocol.Debugger.disable(); |
| Protocol.Debugger.enable(); |
| Protocol.Runtime.evaluate({ expression: "scheduleUncaughtException()" }) |
| .then(() => Protocol.Runtime.evaluate({ expression: "throwCaughtException()" })) |
| .then(() => Protocol.Debugger.disable()) |
| .then(next); |
| }, |
| |
| function breakOnUncaughtException(next) |
| { |
| Protocol.Debugger.enable(); |
| Protocol.Debugger.setPauseOnExceptions({ state: "uncaught" }); |
| Protocol.Runtime.evaluate({ expression: "scheduleUncaughtException()" }) |
| .then(() => Protocol.Runtime.onceExceptionThrown()) |
| .then(() => Protocol.Runtime.evaluate({ expression: "throwCaughtException()" })) |
| .then(() => Protocol.Debugger.disable()) |
| .then(next); |
| }, |
| |
| function breakOnCaughtException(next) |
| { |
| Protocol.Debugger.enable(); |
| Protocol.Debugger.setPauseOnExceptions({ state: "all" }); |
| Protocol.Runtime.evaluate({ expression: "scheduleUncaughtException()" }) |
| .then(() => Protocol.Runtime.onceExceptionThrown()) |
| .then(() => Protocol.Runtime.evaluate({ expression: "throwCaughtException()" })) |
| .then(() => Protocol.Debugger.disable()) |
| .then(next); |
| }, |
| |
| function noBreakInEvaluateInSilentMode(next) |
| { |
| Protocol.Debugger.enable(); |
| Protocol.Debugger.setPauseOnExceptions({ state: "all" }) |
| .then(() => Protocol.Runtime.evaluate({ expression: "throwCaughtException()", silent: true })) |
| .then(() => Protocol.Debugger.disable()) |
| .then(next); |
| } |
| ]); |