Index: LayoutTests/fast/events/resize-events-fixed-layout.html |
diff --git a/LayoutTests/fast/events/resize-events-fixed-layout.html b/LayoutTests/fast/events/resize-events-fixed-layout.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b9ee8264b7759ecd541772f29cbd0eb9738af3bf |
--- /dev/null |
+++ b/LayoutTests/fast/events/resize-events-fixed-layout.html |
@@ -0,0 +1,64 @@ |
+<!DOCTYPE html> |
+<html> |
+<head> |
+ <style> |
+ div.block { height: 400px; border: 1px solid black; margin:10px; } |
+ </style> |
+</head> |
+<body> |
+ <div> |
+ Following actions must not emit resize events: page load, dynamic content generation and page scaling.<br/> |
+ |
+ When fixed layout is enabled, changing fixed layout size must emit resize event.<br/> |
+ |
+ The spec DOM Level 2 Events states that the resize event occurs when document view size (a.k.a layout size) is changed. Refer to http://www.w3.org/TR/DOM-Level-2-Events/events.html<br/> |
+ However, showing/hiding scrollbars shouldn't be considered a layout size change. Refer to webkit.org/b/80242<br/> |
+ </div> |
+ <div id=expandingblock> |
+ </div> |
+ <pre id="console"></pre> |
+ <script src="../js/resources/js-test-pre.js"></script> |
+ <script> |
+ var resizeEventCount = 0; |
+ window.onresize = function() { |
+ resizeEventCount++; |
+ } |
+ |
+ if (window.testRunner) { |
+ testRunner.dumpAsText(); |
+ testRunner.enableFixedLayoutMode(true); |
+ testRunner.setFixedLayoutSize(700, 240); |
+ testRunner.waitUntilDone(); |
+ } |
+ function test() { |
+ setTimeout(showScrollbar, 20); |
+ } |
+ // Add many div blocks to increase document height more than view height. |
+ function showScrollbar() { |
+ for (var i = 0; i < 10; i++) { |
+ var el = document.createElement('div'); |
+ el.setAttribute('class','block'); |
+ document.getElementById('expandingblock').appendChild(el); |
+ } |
+ setTimeout(scalePage, 20); |
+ } |
+ function scalePage() { |
+ if (window.internals) |
+ window.internals.setPageScaleFactor(3, 0, 0); |
+ setTimeout(changeFixedLayoutSize, 20); |
+ } |
+ function changeFixedLayoutSize() { |
+ if (window.testRunner) |
+ testRunner.setFixedLayoutSize(1600, 1600); |
+ setTimeout(finish, 20); |
+ } |
+ function finish() { |
+ // setFixedLayoutSize() must emit a resize event. |
+ shouldBe("resizeEventCount", "1"); |
+ if (window.testRunner) |
+ testRunner.notifyDone(); |
+ } |
+ window.onload = test; |
+ </script> |
+</body> |
+</html> |