Index: test/inspector/debugger/framework-precise-ranges.js |
diff --git a/test/inspector/debugger/framework-precise-ranges.js b/test/inspector/debugger/framework-precise-ranges.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cae0747b690ad7d13474d2fc9af4d69a702fde0b |
--- /dev/null |
+++ b/test/inspector/debugger/framework-precise-ranges.js |
@@ -0,0 +1,78 @@ |
+// Copyright 2017 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('Checks framework debugging with blackboxed ranges.'); |
+ |
+InspectorTest.addScript( |
+ ` |
+function foo() { |
+ return boo(); |
+} |
+function boo() { |
+ return 42; |
+} |
+function testFunction() { |
+ foo(); |
+} |
+//# sourceURL=test.js`, |
+ 7, 26); |
+ |
+InspectorTest.setupScriptMap(); |
+Protocol.Debugger.onPaused(message => { |
+ InspectorTest.logCallFrames(message.params.callFrames); |
+ InspectorTest.log(''); |
+ Protocol.Debugger.stepInto(); |
+}); |
+var scriptId; |
+Protocol.Debugger.onScriptParsed(message => { |
+ if (message.params.url === 'test.js') { |
+ scriptId = message.params.scriptId; |
+ } |
+}); |
+ |
+Protocol.Debugger.enable() |
+ .then(() => Protocol.Debugger.setBlackboxPatterns({patterns: ['expr\.js']})) |
+ .then(() => InspectorTest.runTestSuite(testSuite)); |
+ |
+var testSuite = [ |
+ function testEntireScript(next) { |
+ testPositions([position(0, 0)]).then(next); |
+ }, |
+ function testFooNotBlackboxed(next) { |
+ testPositions([position(11, 0)]).then(next); |
+ }, |
+ function testFooBlackboxed(next) { |
+ testPositions([position(8, 0), position(10, 3)]).then(next); |
+ }, |
+ function testBooPartiallyBlackboxed1(next) { |
+ // first line is not blackboxed, second and third - blackboxed. |
+ testPositions([position(12, 0)]).then(next); |
+ }, |
+ function testBooPartiallyBlackboxed2(next) { |
+ // first line is blackboxed, second - not, third - blackboxed. |
+ testPositions([ |
+ position(11, 0), position(12, 0), position(13, 0) |
+ ]).then(next); |
+ }, |
+ function testBooPartiallyBlackboxed3(next) { |
+ // first line is blackboxed, second and third - not. |
+ testPositions([ |
+ position(11, 0), position(12, 0), position(14, 0) |
+ ]).then(next); |
+ } |
+]; |
+ |
+function testPositions(positions) { |
+ schedulePauseOnNextStatement('', ''); |
+ return Protocol.Debugger |
+ .setBlackboxedRanges({scriptId: scriptId, positions: positions}) |
+ .then(InspectorTest.logMessage) |
+ .then( |
+ () => Protocol.Runtime.evaluate( |
+ {expression: 'testFunction()//# sourceURL=expr.js'})); |
+} |
+ |
+function position(line, column) { |
+ return {lineNumber: line, columnNumber: column}; |
+} |