blob: 18244c04a8f799a0a28b2bf5992246e775c88f1e [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script src="resources/async-stack-trace-test.js"></script>
<script>
function triggerEventListener() {
document.body.addEventListener("click", function handleClick() {
document.body.removeEventListener("click", handleClick);
debugger;
});
document.body.click();
}
function triggerAttributeEventListener() {
let previousListener = document.body.onclick;
function handleClick() {
document.body.onclick = previousListener;
debugger;
}
document.body.onclick = handleClick;
document.body.click();
}
function replaceAttributeEventListener() {
let previousListener = document.body.onclick;
function handleClick1() {}
function handleClick2() {
document.body.onclick = previousListener;
debugger;
}
document.body.onclick = handleClick1;
document.body.addEventListener("click", handleClick1, {once: true});
document.body.onclick = handleClick2;
document.body.click();
}
function test()
{
let suite = InspectorTest.createAsyncSuite("AsyncStackTrace.EventListener");
addAsyncStackTraceTestCase(suite, {
name: "AsyncStackTrace.EventListener.AddEventListener",
description: "Pause in an event listener handler.",
expression: "triggerEventListener()"
});
// FIXME: <https://webkit.org/b/183236> Web Inspector: Async stack trace for an on-event handler doesn't include a boundary frame.
// Update test results once this has been addressed.
addAsyncStackTraceTestCase(suite, {
name: "AsyncStackTrace.EventListener.AddAttributeEventListener",
description: "Pause in an attribute event listener handler.",
expression: "triggerAttributeEventListener()"
});
// Test for <https://webkit.org/b/181580> Web Inspector: ASSERT_NOT_REACHED in PageDebuggerAgent::didAddEventListener when page adds attribute event listener.
addAsyncStackTraceTestCase(suite, {
name: "AsyncStackTrace.EventListener.ReplaceAttributeEventListener",
description: "Replace an attribute event listener after calling addEventListener on the same target.",
expression: "replaceAttributeEventListener()"
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Tests for event listener async stack traces.</p>
</body>
</html>