Index: LayoutTests/fast/events/scroll-event-handler-count.html |
diff --git a/LayoutTests/fast/events/scroll-event-handler-count.html b/LayoutTests/fast/events/scroll-event-handler-count.html |
index 7c757ab313869cccb09b79f1656ad16e01499805..0532fe88c51de7c21dd841adeee63c5a32462243 100644 |
--- a/LayoutTests/fast/events/scroll-event-handler-count.html |
+++ b/LayoutTests/fast/events/scroll-event-handler-count.html |
@@ -33,5 +33,64 @@ description("This test checks that we correctly update the scroll event handler |
document.onscroll = null; |
shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); |
})(); |
+debug("Test that nested Documents' scroll handlers are properly tracked in their parent Document."); |
+(function() { |
+ var iframe = document.createElement('iframe'); |
+ var scrolltarget = document.getElementById('scrolltarget'); |
+ scrolltarget.onscroll = function() {}; |
+ |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); |
+ |
+ scrolltarget.appendChild(iframe); |
+ |
+ nestedDocument = iframe.contentWindow.document; |
+ nestedDocument.open('text/html', 'replace'); |
+ nestedDocument.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n</' + 'script>\n'); |
+ shouldBe('window.internals.scrollEventHandlerCount(nestedDocument)', '2'); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); |
+ |
+ nestedDocument.write('<script>document.onscroll=undefined</' + 'script>\n'); |
+ shouldBe('window.internals.scrollEventHandlerCount(nestedDocument)', '1'); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); |
+ |
+ nestedDocument.close(); |
+ |
+ scrolltarget.removeChild(iframe); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); |
+ scrolltarget.onscroll = undefined; |
+})(); |
+debug("Test that detaching a nested Document with handlers works properly."); |
+(function() { |
+ var iframe = document.createElement('iframe'); |
+ var scrolltarget = document.getElementById('scrolltarget'); |
+ |
+ scrolltarget.appendChild(iframe); |
+ |
+ nestedDocument = iframe.contentWindow.document; |
+ nestedDocument.open('text/html', 'replace'); |
+ nestedDocument.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n</' + 'script>\n'); |
+ shouldBe('window.internals.scrollEventHandlerCount(nestedDocument)', '1'); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); |
+ |
+ nestedDocument.close(); |
+ scrolltarget.removeChild(iframe); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); |
+})(); |
+debug('Moving a scroll event listener between documents should keep it active'); |
Rick Byers
2014/04/28 21:18:07
The test below doesn't seem to be testing what thi
Sami
2014/04/29 14:21:28
Sorry, this the description was a little unclear -
|
+(function() { |
+ var doc = document.implementation.createHTMLDocument(''); |
+ var div = doc.createElement('div'); |
+ |
+ div.addEventListener('scroll', function() { }); |
+ document.body.appendChild(div); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); |
+ |
+ document.body.removeChild(div); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); |
+ |
+ div = null; |
+ gc(); |
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); |
+})(); |
</script> |
</body> |