| Index: third_party/WebKit/LayoutTests/inspector/input-event-warning.html
|
| diff --git a/third_party/WebKit/LayoutTests/inspector/input-event-warning.html b/third_party/WebKit/LayoutTests/inspector/input-event-warning.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f0cec9e9b393209ce9d09923cdbfc16e0225f81a
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/inspector/input-event-warning.html
|
| @@ -0,0 +1,96 @@
|
| +<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),
|
| + new TouchEvent("touchend", touchEventInit),
|
| + ];
|
| +
|
| + var eventTypes = ["wheel", "mousemove", "touchstart", "touchmove", "touchend"];
|
| + 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>
|
|
|