77 lines
2.4 KiB
HTML
77 lines
2.4 KiB
HTML
<!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>
|