Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(625)

Side by Side Diff: third_party/WebKit/LayoutTests/inspector/input-event-warning.html

Issue 1989103006: Fix event warning crash when a listener is removed while dispatching event (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed AtomicString usage Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <html>
2 <head>
3 <script src="../http/tests/inspector/inspector-test.js"></script>
4 <script>
5
6 function eventListenerSuicidal(event)
7 {
8 event.target.removeEventListener("wheel", eventListenerSuicidal);
9 }
10
11 function eventListener1(e)
12 {
13 }
14
15 function eventListener2(event)
16 {
17 event.preventDefault();
18 }
19
20 function dispatchEvents()
21 {
22 var target = document.createElement("div");
23 document.body.appendChild(target);
24 var touches = [new Touch({identifier: 1, clientX: 100, clientY: 100, target: target})];
25 var touchEventInit = {
26 cancelable: true,
27 touches: touches,
28 targetTouches: touches,
29 changedTouches: touches
30 };
31 var wheelEvent = new WheelEvent("wheel", { cancelable: true, deltaX: -120, d eltaY: 120 });
32 var events = [
33 new WheelEvent("wheel", { cancelable: true, deltaX: -120, deltaY: 120 }) ,
34 new WheelEvent("wheel", { cancelable: false, deltaX: -120, deltaY: 120 } ),
35 new MouseEvent("mousemove", { cancelable: true, clientX: 100, clinetY: 1 00, movementX: 0, movementY: 0 }),
36 new TouchEvent("touchstart", touchEventInit),
37 new TouchEvent("touchmove", touchEventInit),
38 new TouchEvent("touchend", touchEventInit),
39 ];
40
41 var eventTypes = ["wheel", "mousemove", "touchstart", "touchmove", "touchend "];
42 for (var type of eventTypes) {
43 target.addEventListener(type, eventListener1);
44 target.addEventListener(type, eventListener2);
45 }
46 var deadline = performance.now() + 100;
47 while (performance.now() < deadline) {};
48 if (window.testRunner)
49 window.testRunner.setDumpConsoleMessages(false);
50 for (var event of events)
51 target.dispatchEvent(event);
52
53 // Make sure we don't emit warnings twice, make another pass.
54 for (var event of events)
55 target.dispatchEvent(event);
56
57 // Make sure we don't crash.
58 target = document.createElement("div");
59 document.body.appendChild(target);
60 target.addEventListener("wheel", eventListenerSuicidal);
61 target.dispatchEvent(wheelEvent);
62 }
63
64 function test()
65 {
66 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleMo del.Events.MessageAdded, InspectorTest.safeWrap(onConsoleMessage));
67 step1();
68
69 function step1()
70 {
71 InspectorTest.mainTarget.pageAgent().setBlockedEventsWarningThreshold(30 );
72 InspectorTest.evaluateInPage("dispatchEvents()", step2);
73 }
74
75 function step2()
76 {
77 InspectorTest.mainTarget.pageAgent().setBlockedEventsWarningThreshold(0. 000001);
78 InspectorTest.addResult("There should be no warnings above this line");
79 InspectorTest.evaluateInPage("dispatchEvents()", () => InspectorTest.com pleteTest());
80 }
81
82 function onConsoleMessage(event)
83 {
84 var message = event.data;
85 var text = message.messageText;
86 InspectorTest.addResult(text.replace(/ \d+ ms/, " <number> ms"));
87 }
88 }
89 </script>
90 </head>
91 <body onload="runTest()">
92 <p>Tests that console warnings are issued for a blocked event listener and that
93 there is no crash when an offending listener is removed by the handler.</p>
94 </div>
95 </body>
96 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698