// 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);