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

Unified Diff: LayoutTests/fast/events/scroll-event-handler-count.html

Issue 240343002: Track event handlers on windows (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed assertions not to go through the document. Created 6 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 side-by-side diff with in-line comments
Download patch
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 9ca680ec6b49ae31b7264afc79f7e20c0620eb3a..afaba7bad5a90f647255ee9540d79cbdfbd862c0 100644
--- a/LayoutTests/fast/events/scroll-event-handler-count.html
+++ b/LayoutTests/fast/events/scroll-event-handler-count.html
@@ -1,7 +1,7 @@
<div id="scrolltarget">
<script src="../../resources/js-test.js"></script>
<script>
-description("This test checks that we correctly update the scroll event handler count as event handlers are added and removed");
+description('This test checks that we correctly update the scroll event handler count as event handlers are added and removed');
(function() {
// Test addEventListener/removeEventListener on the document.
var listener = function() { }
@@ -22,9 +22,8 @@ description("This test checks that we correctly update the scroll event handler
shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
})();
+debug('Test setting onscroll on the document.');
(function() {
- // Test setting onscroll on the document.
-
shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
document.onscroll = function() { }
shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
@@ -33,7 +32,8 @@ 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.");
+
+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');
@@ -59,7 +59,8 @@ debug("Test that nested Documents' scroll handlers are properly tracked in their
shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
scrolltarget.onscroll = undefined;
})();
-debug("Test that detaching a nested Document with handlers works properly.");
+
+debug('Test that detaching a nested Document with handlers works properly.');
(function() {
var iframe = document.createElement('iframe');
var scrolltarget = document.getElementById('scrolltarget');
@@ -68,14 +69,16 @@ debug("Test that detaching a nested Document with handlers works properly.");
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.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n' +
+ 'window.onscroll=function(){};</' + 'script>\n');
+ shouldBe('window.internals.scrollEventHandlerCount(nestedDocument)', '2');
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '2');
nestedDocument.close();
scrolltarget.removeChild(iframe);
shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
})();
+
debug('Test moving event listeners from an unattached document to an attached one');
(function() {
doc = document.implementation.createHTMLDocument('');
@@ -107,6 +110,7 @@ debug('Test moving event listeners from an unattached document to an attached on
gc();
shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
})();
+
debug('Test moving event listeners from an attached document to an unattached one');
(function() {
var div = document.createElement('div');
@@ -117,14 +121,16 @@ debug('Test moving event listeners from an attached document to an unattached on
div.appendChild(iframe);
var nestedDocument = iframe.contentWindow.document;
nestedDocument.open('text/html', 'replace');
- nestedDocument.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n</' + 'script>\n');
+ nestedDocument.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n' +
+ 'window.onscroll=function(){};</' + 'script>\n');
- shouldBe('window.internals.scrollEventHandlerCount(document)', '2');
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '3');
var unattachedDoc = document.implementation.createHTMLDocument('');
unattachedDoc.body.appendChild(div);
shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
})();
+
debug('Test moving a scroll event listener between documents belonging to the same page');
(function() {
var iframe = document.createElement('iframe');
@@ -136,12 +142,45 @@ debug('Test moving a scroll event listener between documents belonging to the sa
var element = frames[0].document.getElementById('foo');
var listener = function() { }
element.addEventListener('scroll', listener, false);
- shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
+ frames[0].window.addEventListener('scroll', listener, false);
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '2');
document.body.appendChild(element);
- shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '2');
element.removeEventListener('scroll', listener, false);
+ frames[0].window.removeEventListener('scroll', listener, false);
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
+})();
+
+debug('Test addEventListener/removeEventListener on the window.');
+(function() {
+ var listener = function() { }
+
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
+ window.addEventListener('scroll', listener, true);
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
+ window.addEventListener('scroll', listener, false);
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '2');
+ window.removeEventListener('scroll', listener, true);
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
+
+ // Try removing the capturing listener again.
+ window.removeEventListener('scroll', listener, true);
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
+
+ window.removeEventListener('scroll', listener, false);
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
+})();
+
+debug('Test setting onscroll on the window.');
+(function() {
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
+ window.onscroll = function() { }
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
+ window.onscroll = function() { }
+ shouldBe('window.internals.scrollEventHandlerCount(document)', '1');
+ window.onscroll = null;
shouldBe('window.internals.scrollEventHandlerCount(document)', '0');
})();
</script>

Powered by Google App Engine
This is Rietveld 408576698