| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script> |
| function triggerFunctionConstructorMultipleTimes() { |
| let sum = 0; |
| sum += Function("\n//# sourceURL=test-Function-constructor.js\nreturn 1+1")(); |
| sum += Function("\n//# sourceURL=test-Function-constructor.js\nreturn 1+1")(); |
| sum += Function("\n//# sourceURL=test-Function-constructor.js\nreturn 1+1")(); |
| return sum; |
| } |
| |
| function triggerProgramMultipleTimes() { |
| for (let i = 0; i < 3; ++i) { |
| let script = document.createElement("script"); |
| script.text = "\n//# sourceURL=test-program.js\n1+1"; |
| document.head.appendChild(script); |
| } |
| } |
| |
| function triggerEvalMultipleTimes() { |
| let sum = 0; |
| sum += eval("\n//# sourceURL=test-eval.js\n1+1"); |
| sum += eval("\n//# sourceURL=test-eval.js\n1+1"); |
| sum += eval("\n//# sourceURL=test-eval.js\n1+1"); |
| return sum; |
| } |
| |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("Debugger.scriptParsed.sourceURLRepeatedIdenticalExecutions"); |
| |
| // Disable breakpoints to ensure we do not avoid the CodeCache. |
| DebuggerAgent.setBreakpointsActive(false); |
| |
| suite.addTestCase({ |
| name: "CheckFunctionConstructorMultipleTimes", |
| description: "Trigger multiple Function constructor calls with the same source and expect multiple Scripts added with sourceURLs.", |
| test(resolve, reject) { |
| let seen = 0; |
| WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.ScriptAdded, (event) => { |
| if (event.data.script.sourceURL === "test-Function-constructor.js") |
| seen++; |
| }); |
| InspectorTest.evaluateInPage("triggerFunctionConstructorMultipleTimes()", () => { |
| InspectorTest.expectThat(seen === 3, "Should see 3 Scripts with sourceURL"); |
| resolve(); |
| }); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "CheckProgramMultipleTimes", |
| description: "Trigger multiple program executions with the same source and expect multiple Scripts added with sourceURLs.", |
| test(resolve, reject) { |
| let seen = 0; |
| WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.ScriptAdded, (event) => { |
| if (event.data.script.sourceURL === "test-program.js") |
| seen++; |
| }); |
| InspectorTest.evaluateInPage("triggerProgramMultipleTimes()", () => { |
| InspectorTest.expectThat(seen === 3, "Should see 3 Scripts with sourceURL"); |
| resolve(); |
| }); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "CheckEvalMultipleTimes", |
| description: "Trigger eval with the same source and expect multiple Scripts added with sourceURLs.", |
| test(resolve, reject) { |
| let seen = 0; |
| WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.ScriptAdded, (event) => { |
| if (event.data.script.sourceURL === "test-eval.js") |
| seen++; |
| }); |
| InspectorTest.evaluateInPage("triggerEvalMultipleTimes()", () => { |
| InspectorTest.expectThat(seen === 3, "Should see 3 Scripts with sourceURL"); |
| resolve(); |
| }); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for the Debugger.scriptParsed messages for identical content should have source directives each time.</p> |
| </body> |
| </html> |