| // 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("Checks that inspector reports script compiled in Runtime.evaluate, " + | |
| "Runtime.callFunctionOn and Runtime.compileScript"); | |
| contextGroup.addScript(` | |
| function fooTop() { | |
| eval(\` | |
| function foo() { | |
| eval("({})") | |
| } | |
| foo() //# sourceURL=second-frame.js\`); | |
| } | |
| //# sourceURL=top-frame.js`, 8, 26); | |
| contextGroup.addScript(` | |
| function fooTopFail() { | |
| eval(\` | |
| function fooFail() { | |
| eval("({}") | |
| } | |
| fooFail() //# sourceURL=second-frame-fail.js\`); | |
| } | |
| //# sourceURL=top-frame-fail.js`, 18, 26); | |
| Promise.prototype.thenLog = function log(message) { | |
| return this.then(() => InspectorTest.log(message)); | |
| } | |
| var objectId; | |
| Protocol.Runtime.enable(); | |
| Protocol.Debugger.enable() | |
| .then(() => Protocol.Debugger.onScriptParsed(InspectorTest.logMessage)) | |
| .then(() => Protocol.Debugger.onScriptFailedToParse(InspectorTest.logMessage)) | |
| .thenLog('Runtime.evaluate with valid expression') | |
| .then(() => Protocol.Runtime.evaluate({ | |
| expression: "({})//# sourceURL=evaluate.js"})) | |
| .then(msg => objectId = msg.result.result.objectId) | |
| .thenLog('Runtime.evaluate with syntax error') | |
| .then(() => Protocol.Runtime.evaluate({ | |
| expression: "}//# sourceURL=evaluate-syntax-error.js"})) | |
| .thenLog('Runtime.callFunctionOn with valid functionDeclaration') | |
| .then(() => Protocol.Runtime.callFunctionOn({ objectId: objectId, | |
| functionDeclaration: "function foo(){}"})) | |
| .thenLog('Runtime.callFunctionOn with syntax error') | |
| .then(() => Protocol.Runtime.callFunctionOn({ objectId: objectId, | |
| functionDeclaration: "}"})) | |
| .thenLog('Runtime.compileScript with valid expression') | |
| .then(() => Protocol.Runtime.compileScript({ expression: "({})", | |
| sourceURL: "compile-script.js", persistScript: true })) | |
| .thenLog('Runtime.compileScript with syntax error') | |
| .then(() => Protocol.Runtime.compileScript({ expression: "}", | |
| sourceURL: "compile-script-syntax-error.js", persistScript: true })) | |
| .thenLog('Runtime.compileScript persistScript: false (should be no script events)') | |
| .then(() => Protocol.Runtime.compileScript({ expression: "({})", | |
| sourceURL: "compile-script-syntax-error.js", persistScript: false })) | |
| .then(() => Protocol.Runtime.compileScript({ expression: "}", | |
| sourceURL: "compile-script-syntax-error.js", persistScript: false })) | |
| .thenLog('Runtime.evaluate compiled script with stack trace') | |
| .then(() => Protocol.Runtime.evaluate({ | |
| expression: "fooTop()"})) | |
| .then(msg => objectId = msg.result.result.objectId) | |
| .thenLog('Runtime.evaluate compile script error with stack trace') | |
| .then(() => Protocol.Runtime.evaluate({ | |
| expression: "fooTopFail()"})) | |
| .then(msg => objectId = msg.result.result.objectId) | |
| .then(InspectorTest.completeTest); |