| <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> |