| // 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. | |
| let {session, contextGroup, Protocol} = InspectorTest.start('Checks framework debugging with blackboxed ranges.'); | |
| contextGroup.addScript( | |
| ` | |
| function foo() { | |
| return boo(); | |
| } | |
| function boo() { | |
| return 42; | |
| } | |
| function testFunction() { | |
| foo(); | |
| } | |
| //# sourceURL=test.js`, | |
| 7, 26); | |
| session.setupScriptMap(); | |
| Protocol.Debugger.onPaused(message => { | |
| session.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) { | |
| contextGroup.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}; | |
| } |