| Index: test/inspector/debugger/break-on-exception.js | 
| diff --git a/test/inspector/debugger/break-on-exception.js b/test/inspector/debugger/break-on-exception.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..e0afc3846f97aa8027733ed884bf49ff2349d056 | 
| --- /dev/null | 
| +++ b/test/inspector/debugger/break-on-exception.js | 
| @@ -0,0 +1,71 @@ | 
| +// 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. | 
| + | 
| +print("Check that inspector correctly change break on exception state."); | 
| + | 
| +InspectorTest.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); | 
| +  } | 
| +]); | 
|  |