OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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> |
OLD | NEW |