Move platform/mac-wk2/tiled-drawing to tiled-drawing/
[WebKit-https.git] / LayoutTests / tiled-drawing / scrolling / 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     if (pageScrollPositionBefore != pageScrollPositionAfter)
22         testFailed("Page received wheel events.");
23     else
24         testPassed("Page did not receive wheel events.");
25
26     if (window.internals) {
27         document.getElementById('layers').innerText = internals.layerTreeAsText(document,
28             internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS | internals.LAYER_TREE_INCLUDES_TILE_CACHES);
29     }
30
31     testRunner.notifyDone();
32 }
33
34 function scrollTest()
35 {
36     pageScrollPositionBefore = document.body.scrollTop;
37
38     iframeTarget = document.getElementById('target');
39
40     var iFrameBody = window.frames['target'].document.body;
41     iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;
42
43     iFrameScrollPositionBefore = iFrameBody.scrollTop;
44
45     // Scroll the #source until we reach the #target.
46     var startPosX = Math.round(iframeTarget.offsetLeft) + 20;
47     var startPosY = Math.round(iframeTarget.offsetTop) + 100;
48     eventSender.mouseMoveTo(startPosX, startPosY);
49     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
50     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
51     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
52     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
53     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
54     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
55     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
56     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
57     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
58     eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
59     eventSender.callAfterScrollingCompletes(checkForScroll);
60 }
61
62 function setupTopLevel()
63 {
64     if (window.eventSender) {
65         testRunner.dumpAsText();
66         testRunner.waitUntilDone();
67
68         eventSender.monitorWheelEvents();
69         setTimeout(scrollTest, 0);
70     } else {
71         var messageLocation = document.getElementById('parent');
72         var message = document.createElement('div');
73         message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"
74             + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"
75             + "<br/><br/>"
76             + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";
77         messageLocation.appendChild(message);
78     }
79 }
80
81 </script>
82 <div id="parent" style="height: 2000px">
83     <div id="source" style="height: 100px">
84         Put mouse here and flick downwards
85     </div>
86     <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 
87      src= "data:text/html,
88      <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>
89      TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>
90      This should still be visible inside the frame after you scroll down
91      <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
92      <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
93      <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
94      This should NOT be visible inside the frame after you scroll down<br/>
95      <br/>
96      END END END END END END END END END END END END END
97      </div>
98      "
99      onload="setupTopLevel();"
100      >
101     </iframe>
102 </div>
103 <div id="console"></div>
104 <script>
105 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");
106 </script>
107 <pre id="layers">Layer tree goes here</p>
108 <script src="../../resources/js-test-post.js"></script>
109 </body>
110 </html>