Unreviewed build fix for Mountain Lion.
[WebKit-https.git] / LayoutTests / platform / mac-wk2 / tiled-drawing / fast-scroll-iframe-latched-iframe.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">
5 <script src="../../../resources/js-test-pre.js"></script>
6 </head>
7 <body>
8 <script>
9
10 var iframeTarget;
11 var pageScrollPositionBefore;
12 var iFrameScrollPositionBefore;
13 var continueCount = 5;
14
15 function checkForScroll() {
16
17     // The IFrame should not have scrolled at all.
18     var pageScrollPositionAfter = document.body.scrollTop;
19     var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
20
21     debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);
22     debug("Page after:  " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);
23
24     if (pageScrollPositionBefore != pageScrollPositionAfter)
25         testFailed("Page received wheel events.");
26     else
27         testPassed("Page did not receive wheel events.");
28
29     if (window.internals) {
30         document.getElementById('layers').innerText = internals.layerTreeAsText(document,
31             internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
32     }
33
34     testRunner.notifyDone();
35 }
36
37 function scrollTest() {
38     // See where our IFrame lives:
39     pageScrollPositionBefore = document.body.scrollTop;
40
41     iframeTarget = document.getElementById('target');
42
43     var iFrameBody = window.frames['target'].document.body;
44     iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;
45
46     iFrameScrollPositionBefore = iFrameBody.scrollTop;
47
48     // Scroll the #source until we reach the #target.
49     var startPosX = iframeTarget.offsetLeft + 20;
50     debug("IFrame display height = " + iframeTarget.clientHeight);
51     var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.
52     eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame
53     debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");
54     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);
55     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
56     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);
57     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);
58     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);
59     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
60     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
61     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
62     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);
63     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);
64     setTimeout(checkForScroll, 100);
65 }
66
67 function setupTopLevel() {
68
69     if (window.eventSender) {
70         testRunner.dumpAsText(true);
71         testRunner.waitUntilDone();
72
73         setTimeout(scrollTest, 1000);
74     } else {
75         var messageLocation = document.getElementById('parent');
76         var message = document.createElement('div');
77         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
78             + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
79             + "<br/><br/>"
80             + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
81         messageLocation.appendChild(message);
82     }
83 }
84
85 </script>
86 <div id="parent" style="height: 2000px">
87     <div id="source" style="height: 100px">
88         Put mouse here and flick downwards
89     </div>
90     <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
91      src= "data:text/html,
92      <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
93      TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
94      This should still be visible inside the frame after you scroll down
95      <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
96      <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
97      <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
98      This should NOT be visible inside the frame after you scroll down<br/>
99      <br/>
100      END END END END END END END END END END END END END
101      </div>
102      "
103      onload="setupTopLevel();"
104      >
105     </iframe>
106 </div>
107 <div id="console"></div>
108 <script>
109 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
110 </script>
111 <pre id="layers">Layer tree goes here</p>
112 <script src="../../../resources/js-test-post.js"></script>
113 </body>
114 </html>