summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/events/resize-events-fixed-layout.html
blob: 9b4e0550f5ea12e85bad3790ff123ddc7e8e0aec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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.eventSender)
                window.eventSender.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>