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