OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 InspectorTest.evaluateInPage( |
| 6 `function blackboxedBoo() |
| 7 { |
| 8 var a = 42; |
| 9 var b = foo(); |
| 10 return a + b; |
| 11 } |
| 12 //# sourceURL=blackboxed-script.js`); |
| 13 |
| 14 InspectorTest.evaluateInPage( |
| 15 `function notBlackboxedFoo() |
| 16 { |
| 17 var a = 42; |
| 18 var b = blackboxedBoo(); |
| 19 return a + b; |
| 20 } |
| 21 |
| 22 function blackboxedFoo() |
| 23 { |
| 24 var a = 42; |
| 25 var b = notBlackboxedFoo(); |
| 26 return a + b; |
| 27 } |
| 28 |
| 29 function notBlackboxedBoo() |
| 30 { |
| 31 var a = 42; |
| 32 var b = blackboxedFoo(); |
| 33 return a + b; |
| 34 } |
| 35 //# sourceURL=mixed-source.js`); |
| 36 |
| 37 InspectorTest.evaluateInPage( |
| 38 `function testFunction() |
| 39 { |
| 40 notBlackboxedBoo(); // for setup ranges and stepOut |
| 41 notBlackboxedBoo(); // for stepIn |
| 42 } |
| 43 |
| 44 function foo() |
| 45 { |
| 46 debugger; |
| 47 return 239; |
| 48 }`); |
| 49 |
| 50 InspectorTest.eventHandler["Debugger.paused"] = setBlackboxedScriptRanges; |
| 51 InspectorTest.sendCommandOrDie("Debugger.enable", {}, callTestFunction); |
| 52 |
| 53 function callTestFunction(response) |
| 54 { |
| 55 InspectorTest.sendCommand("Runtime.evaluate", { expression: "setTimeout(test
Function, 0);"}); |
| 56 } |
| 57 |
| 58 function setBlackboxedScriptRanges(response) |
| 59 { |
| 60 var callFrames = response.params.callFrames; |
| 61 printCallFrames(callFrames); |
| 62 InspectorTest.sendCommand("Debugger.setBlackboxedRanges", { |
| 63 scriptId: callFrames[1].location.scriptId, |
| 64 positions: [ { lineNumber: 0, columnNumber: 0 } ] // blackbox ranges for
blackboxed.js |
| 65 }, setIncorrectRanges.bind(null, callFrames[2].location.scriptId)); |
| 66 } |
| 67 |
| 68 var incorrectPositions = [ |
| 69 [ { lineNumber: 0, columnNumber: 0 }, { lineNumber: 0, columnNumber: 0 } ], |
| 70 [ { lineNumber: 0, columnNumber: 1 }, { lineNumber: 0, columnNumber: 0 } ], |
| 71 [ { lineNumber: 0, columnNumber: -1 } ], |
| 72 ]; |
| 73 |
| 74 function setIncorrectRanges(scriptId, response) |
| 75 { |
| 76 if (response.error) |
| 77 InspectorTest.log(response.error.message); |
| 78 var positions = incorrectPositions.shift(); |
| 79 if (!positions) { |
| 80 setMixedSourceRanges(scriptId); |
| 81 return; |
| 82 } |
| 83 InspectorTest.log("Try to set positions: " + JSON.stringify(positions)); |
| 84 InspectorTest.sendCommand("Debugger.setBlackboxedRanges", { |
| 85 scriptId: scriptId, |
| 86 positions: positions |
| 87 }, setIncorrectRanges.bind(null, scriptId)); |
| 88 } |
| 89 |
| 90 function setMixedSourceRanges(scriptId) |
| 91 { |
| 92 InspectorTest.eventHandler["Debugger.paused"] = runAction; |
| 93 InspectorTest.sendCommandOrDie("Debugger.setBlackboxedRanges", { |
| 94 scriptId: scriptId, |
| 95 positions: [ { lineNumber: 8, columnNumber: 0 }, { lineNumber: 15, colum
nNumber: 0 } ] // blackbox ranges for mixed.js |
| 96 }, runAction); |
| 97 } |
| 98 |
| 99 var actions = [ "stepOut", "print", "stepOut", "print", "stepOut", "print", |
| 100 "stepInto", "print", "stepOver", "stepInto", "print", "stepOver", "stepInto"
, "print", |
| 101 "stepOver", "stepInto", "print" ]; |
| 102 |
| 103 function runAction(response) |
| 104 { |
| 105 var action = actions.shift(); |
| 106 if (!action) |
| 107 InspectorTest.completeTest(); |
| 108 |
| 109 if (action === "print") { |
| 110 printCallFrames(response.params.callFrames); |
| 111 runAction({}); |
| 112 } else { |
| 113 InspectorTest.log("action: " + action); |
| 114 InspectorTest.sendCommandOrDie("Debugger." + action, {}); |
| 115 } |
| 116 } |
| 117 |
| 118 function printCallFrames(callFrames) |
| 119 { |
| 120 var topCallFrame = callFrames[0]; |
| 121 if (topCallFrame.functionName.startsWith("blackboxed")) |
| 122 InspectorTest.log("FAIL: blackboxed function in top call frame"); |
| 123 for (var callFrame of callFrames) |
| 124 InspectorTest.log(callFrame.functionName + ': ' + callFrame.location.lin
eNumber + ":" + callFrame.location.columnNumber); |
| 125 InspectorTest.log(""); |
| 126 } |
OLD | NEW |