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

Side by Side Diff: LayoutTests/fast/events/event-handler-count.html

Issue 206603002: Add EventHandlerRegistry (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add test for external handlers. Created 6 years, 8 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
1 <script src="../../../resources/js-test.js"></script> 1 <script src="../../resources/js-test.js"></script>
2 <div id='touchtarget' style='width: 50; height: 50'></div> 2 <div id='touchtarget' style='width: 50; height: 50'></div>
3 <script> 3 <script>
4 description("This test checks that we correctly update the touch event handler c ount as event handlers are added and removed"); 4 description("This test checks that we correctly update the event handler counts as event handlers are added and removed");
5 5
6 debug("Test addEventListener/removeEventListener on the document."); 6 debug("Test addEventListener/removeEventListener on the document.");
7 (function() { 7 (function() {
8 var listener = function() { } 8 var listener = function() { }
9 9
10 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 10 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
11 document.addEventListener('touchstart', listener, true); 11 document.addEventListener('touchstart', listener, true);
12 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 12 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
13 document.addEventListener('touchmove', listener, true); 13 document.addEventListener('touchmove', listener, true);
14 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 14 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
15 document.addEventListener('touchstart', listener, false); 15 document.addEventListener('touchstart', listener, false);
16 shouldBe('window.internals.touchEventHandlerCount(document)', '3'); 16 shouldBe('window.internals.touchEventHandlerCount(document)', '3');
17 document.removeEventListener('touchmove', listener, true); 17 document.removeEventListener('touchmove', listener, true);
18 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 18 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
19 document.removeEventListener('touchstart', listener, true); 19 document.removeEventListener('touchstart', listener, true);
20 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 20 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
21 21
22 // Try removing the capturing listener again. 22 // Try removing the capturing listener again.
23 document.removeEventListener('touchstart', listener, true); 23 document.removeEventListener('touchstart', listener, true);
24 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 24 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
25 document.removeEventListener('touchmove', listener, true); 25 document.removeEventListener('touchmove', listener, true);
26 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 26 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
27 27
28 document.removeEventListener('touchstart', listener, false); 28 document.removeEventListener('touchstart', listener, false);
29 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 29 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
30 })(); 30 })();
31 31
32 debug("Test setting touch handlers on the document."); 32 debug("Test setting scroll handlers on the document.");
33 (function() { 33 (function() {
34 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 34 shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
35 document.ontouchstart = function() { } 35 document.onscroll = function() { }
36 document.ontouchmove = function() {} 36 shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
37 document.ontouchend = function() {} 37 document.onscroll = function() { }
38 document.ontouchcancel = function() {} 38 shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
39 shouldBe('window.internals.touchEventHandlerCount(document)', '4'); 39 document.onscroll = null;
40 document.ontouchstart = function() { } 40 shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
41 shouldBe('window.internals.touchEventHandlerCount(document)', '4');
42 document.ontouchstart = null;
43 shouldBe('window.internals.touchEventHandlerCount(document)', '3');
44 document.ontouchstart = null;
45 shouldBe('window.internals.touchEventHandlerCount(document)', '3');
46 document.ontouchmove = null;
47 document.ontouchend = null;
48 document.ontouchcancel = null;
49 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
50 })(); 41 })();
51 42
52 debug("Test addEventListener/removeEventListener on the window."); 43 debug("Test addEventListener/removeEventListener on the window.");
53 (function() { 44 (function() {
54 var listener = function() { } 45 var listener = function() { }
55 46
56 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 47 shouldBe('window.internals.wheelEventHandlerCount(document)', '0');
57 window.addEventListener('touchstart', listener, true); 48 window.addEventListener('mousewheel', listener, true);
58 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 49 shouldBe('window.internals.wheelEventHandlerCount(document)', '1');
59 window.addEventListener('touchmove', listener, true); 50 window.addEventListener('mousewheel', listener, false);
60 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 51 shouldBe('window.internals.wheelEventHandlerCount(document)', '2');
61 window.addEventListener('touchstart', listener, false); 52 window.removeEventListener('mousewheel', listener, true);
62 shouldBe('window.internals.touchEventHandlerCount(document)', '3'); 53 shouldBe('window.internals.wheelEventHandlerCount(document)', '1');
63 window.removeEventListener('touchmove', listener, true);
64 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
65 window.removeEventListener('touchstart', listener, true);
66 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
67 54
68 // Try removing the capturing listener again. 55 // Try removing the capturing listener again.
69 window.removeEventListener('touchstart', listener, true); 56 window.removeEventListener('mousewheel', listener, true);
70 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 57 shouldBe('window.internals.wheelEventHandlerCount(document)', '1');
71 window.removeEventListener('touchmove', listener, true);
72 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
73 58
74 window.removeEventListener('touchstart', listener, false); 59 window.removeEventListener('mousewheel', listener, false);
75 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 60 shouldBe('window.internals.wheelEventHandlerCount(document)', '0');
76 })(); 61 })();
77 62
78 debug("Test setting touch handlers on the window."); 63 debug("Test setting touch handlers on the window.");
79 (function() { 64 (function() {
80 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 65 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
81 window.ontouchstart = function() { } 66 window.ontouchstart = function() { }
82 window.ontouchmove = function() {} 67 window.ontouchmove = function() {}
83 window.ontouchend = function() {} 68 window.ontouchend = function() {}
84 window.ontouchcancel = function() {} 69 window.ontouchcancel = function() {}
85 shouldBe('window.internals.touchEventHandlerCount(document)', '4'); 70 shouldBe('window.internals.touchEventHandlerCount(document)', '4');
86 window.ontouchstart = function() { } 71 window.ontouchstart = function() { }
87 shouldBe('window.internals.touchEventHandlerCount(document)', '4'); 72 shouldBe('window.internals.touchEventHandlerCount(document)', '4');
88 window.ontouchstart = null; 73 window.ontouchstart = null;
89 shouldBe('window.internals.touchEventHandlerCount(document)', '3'); 74 shouldBe('window.internals.touchEventHandlerCount(document)', '3');
90 window.ontouchstart = null; 75 window.ontouchstart = null;
91 shouldBe('window.internals.touchEventHandlerCount(document)', '3'); 76 shouldBe('window.internals.touchEventHandlerCount(document)', '3');
92 window.ontouchmove = null; 77 window.ontouchmove = null;
93 window.ontouchend = null; 78 window.ontouchend = null;
94 window.ontouchcancel = null; 79 window.ontouchcancel = null;
95 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 80 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
96 })(); 81 })();
97 82
83 debug("Test setting onmousewheel on the window.");
84 (function() {
85 shouldBe('window.internals.wheelEventHandlerCount(document)', '0');
86 window.onmousewheel = function() { }
87 shouldBe('window.internals.wheelEventHandlerCount(document)', '1');
88 window.onmousewheel = function() { }
89 shouldBe('window.internals.wheelEventHandlerCount(document)', '1');
90 window.onmousewheel = null;
91 shouldBe('window.internals.wheelEventHandlerCount(document)', '0');
92 })();
93
94 debug("Test setting onscroll on the window.");
95 (function() {
96 shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
97 window.onscroll = function() { }
98 shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
99 window.onscroll = function() { }
100 shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
101 window.onscroll = null;
102 shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
103 })();
104
98 debug("Test addEventListener/removeEventListener on a div."); 105 debug("Test addEventListener/removeEventListener on a div.");
99 (function() { 106 (function() {
100 var listener = function() { } 107 var listener = function() { }
101 var div = document.getElementById('touchtarget'); 108 var div = document.getElementById('touchtarget');
102 109
103 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 110 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
104 div.addEventListener('touchstart', listener, true); 111 div.addEventListener('touchstart', listener, true);
105 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 112 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
106 div.addEventListener('touchmove', listener, true); 113 div.addEventListener('touchmove', listener, true);
107 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 114 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
(...skipping 29 matching lines...) Expand all
137 div.ontouchstart = null; 144 div.ontouchstart = null;
138 shouldBe('window.internals.touchEventHandlerCount(document)', '3'); 145 shouldBe('window.internals.touchEventHandlerCount(document)', '3');
139 div.ontouchstart = null; 146 div.ontouchstart = null;
140 shouldBe('window.internals.touchEventHandlerCount(document)', '3'); 147 shouldBe('window.internals.touchEventHandlerCount(document)', '3');
141 div.ontouchmove = null; 148 div.ontouchmove = null;
142 div.ontouchend = null; 149 div.ontouchend = null;
143 div.ontouchcancel = null; 150 div.ontouchcancel = null;
144 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 151 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
145 })(); 152 })();
146 153
147 debug("Test redudant addEventListener on a div."); 154 debug("Test redundant addEventListener on a div.");
Rick Byers 2014/04/03 15:33:19 heh, thanks for fixing my typo :-)
148 (function() { 155 (function() {
149 var listener = function() { } 156 var listener = function() { }
150 var div = document.getElementById('touchtarget'); 157 var div = document.getElementById('touchtarget');
151 158
152 shouldBe('window.internals.touchEventHandlerCount(document)', '0'); 159 shouldBe('window.internals.touchEventHandlerCount(document)', '0');
153 div.addEventListener('touchstart', listener, false); 160 div.addEventListener('touchstart', listener, false);
154 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 161 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
155 div.addEventListener('touchstart', listener, false); 162 div.addEventListener('touchstart', listener, false);
156 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 163 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
157 164
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '3'); 246 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '3');
240 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 247 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
241 248
242 nestedDocument.write('<script>window.ontouchstart=undefined</' + 'script>\n' ); 249 nestedDocument.write('<script>window.ontouchstart=undefined</' + 'script>\n' );
243 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '2'); 250 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '2');
244 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 251 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
245 252
246 nestedDocument.write('<script>document.addEventListener("touchmove", functio n(){});</' + 'script>\n'); 253 nestedDocument.write('<script>document.addEventListener("touchmove", functio n(){});</' + 'script>\n');
247 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '3'); 254 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '3');
248 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 255 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
249 256
250 nestedDocument.write('<script>document.getElementById("twoHandlers").remove( );</' + 'script>\n'); 257 nestedDocument.write('<script>document.getElementById("twoHandlers").remove( );</' + 'script>\n');
251 gc(); 258 gc();
252 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '1'); 259 shouldBe('window.internals.touchEventHandlerCount(nestedDocument)', '1');
253 shouldBe('window.internals.touchEventHandlerCount(document)', '2'); 260 shouldBe('window.internals.touchEventHandlerCount(document)', '2');
254 nestedDocument.close(); 261 nestedDocument.close();
255 262
256 touchtarget.removeChild(iframe); 263 touchtarget.removeChild(iframe);
257 shouldBe('window.internals.touchEventHandlerCount(document)', '1'); 264 shouldBe('window.internals.touchEventHandlerCount(document)', '1');
258 })(); 265 })();
266
259 </script> 267 </script>
260 </body> 268 </body>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698