blob: c0d66918832d820771d87bb1a87751d2c51c90b0 [file] [log] [blame]
<html>
<head>
<script src="../http/tests/inspector/inspector-test.js"></script>
<script>
function eventListenerSuicidal(event)
{
event.target.removeEventListener("wheel", eventListenerSuicidal);
}
function eventListener1(e)
{
}
function eventListener2(event)
{
event.preventDefault();
}
function dispatchEvents()
{
var target = document.createElement("div");
document.body.appendChild(target);
var touches = [new Touch({identifier: 1, clientX: 100, clientY: 100, target: target})];
var touchEventInit = {
cancelable: true,
touches: touches,
targetTouches: touches,
changedTouches: touches
};
var wheelEvent = new WheelEvent("wheel", { cancelable: true, deltaX: -120, deltaY: 120 });
var events = [
new WheelEvent("wheel", { cancelable: true, deltaX: -120, deltaY: 120 }),
new WheelEvent("wheel", { cancelable: false, deltaX: -120, deltaY: 120 }),
new MouseEvent("mousemove", { cancelable: true, clientX: 100, clinetY: 100, movementX: 0, movementY: 0 }),
new TouchEvent("touchstart", touchEventInit),
new TouchEvent("touchmove", touchEventInit),
];
var eventTypes = ["wheel", "mousemove", "touchstart", "touchmove"];
for (var type of eventTypes) {
target.addEventListener(type, eventListener1);
target.addEventListener(type, eventListener2);
}
var deadline = performance.now() + 100;
while (performance.now() < deadline) {};
if (window.testRunner)
window.testRunner.setDumpConsoleMessages(false);
for (var event of events)
target.dispatchEvent(event);
// Make sure we don't emit warnings twice, make another pass.
for (var event of events)
target.dispatchEvent(event);
// Make sure we don't crash.
target = document.createElement("div");
document.body.appendChild(target);
target.addEventListener("wheel", eventListenerSuicidal);
target.dispatchEvent(wheelEvent);
}
function test()
{
WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleModel.Events.MessageAdded, InspectorTest.safeWrap(onConsoleMessage));
step1();
function step1()
{
InspectorTest.mainTarget.pageAgent().setBlockedEventsWarningThreshold(30);
InspectorTest.evaluateInPage("dispatchEvents()", step2);
}
function step2()
{
InspectorTest.mainTarget.pageAgent().setBlockedEventsWarningThreshold(0.000001);
InspectorTest.addResult("There should be no warnings above this line");
InspectorTest.evaluateInPage("dispatchEvents()", () => InspectorTest.completeTest());
}
function onConsoleMessage(event)
{
var message = event.data;
var text = message.messageText;
InspectorTest.addResult(text.replace(/ \d+ ms/, " <number> ms"));
}
}
</script>
</head>
<body onload="runTest()">
<p>Tests that console warnings are issued for a blocked event listener and that
there is no crash when an offending listener is removed by the handler.</p>
</div>
</body>
</html>