| 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."); |
| 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 |