63 lines
2.6 KiB
HTML
63 lines
2.6 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function triggerConsoleMessage() {
|
|
let script = document.createElement("script");
|
|
script.textContent = "//# sourceURL=inline-script.js\neval('function foo() { console.trace(); }; foo();')";
|
|
document.body.appendChild(script);
|
|
}
|
|
|
|
function test()
|
|
{
|
|
function logStackTrace(stackTrace) {
|
|
InspectorTest.log(`StackTrace: ${stackTrace.callFrames.length}`);
|
|
for (let i = 0; i < stackTrace.callFrames.length; ++i) {
|
|
let callFrame = stackTrace.callFrames[i];
|
|
let string = ` ${i + 1}: ${callFrame.functionName}`;
|
|
if (callFrame.sourceCodeLocation)
|
|
string += ` (${callFrame.sourceCodeLocation.originalLocationString()})`;
|
|
string += " -";
|
|
string += ` nativeCode (${callFrame.nativeCode})`;
|
|
string += ` programCode (${callFrame.programCode})`;
|
|
InspectorTest.log(string);
|
|
}
|
|
}
|
|
|
|
let suite = InspectorTest.createAsyncSuite("WI.StackTrace");
|
|
|
|
suite.addTestCase({
|
|
name: "WI.ConsoleMessage.StackTrace",
|
|
description: "Test we can create a StackTrace from console messages (Console.StackTrace).",
|
|
test(resolve, reject) {
|
|
WI.consoleManager.awaitEvent(WI.ConsoleManager.Event.MessageAdded)
|
|
.then((event) => {
|
|
// Trace message should always have a stack trace.
|
|
let consoleMessage = event.data.message;
|
|
let stackTrace = consoleMessage.stackTrace;
|
|
InspectorTest.expectThat(consoleMessage.type === WI.ConsoleMessage.MessageType.Trace, "ConsoleMessage type should be Trace.");
|
|
InspectorTest.expectThat(stackTrace instanceof WI.StackTrace, "ConsoleMessage should have StackTrace.");
|
|
|
|
// Console message stack trace call frame's do not have debugging information.
|
|
InspectorTest.expectThat(stackTrace.callFrames[0].id === null, "CallFrame in StackTrace has no identifier.");
|
|
InspectorTest.expectThat(stackTrace.callFrames[0].thisObject === null, "CallFrame in StackTrace has no thisObject.");
|
|
InspectorTest.expectThat(!stackTrace.callFrames[0].scopeChain.length, "CallFrame in StackTrace has no scopeChain.");
|
|
|
|
logStackTrace(consoleMessage.stackTrace);
|
|
})
|
|
.then(resolve, reject);
|
|
|
|
InspectorTest.evaluateInPage("triggerConsoleMessage()");
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Tests for the WI.StackTrace model object.</p>
|
|
</body>
|
|
</html>
|