Changeset 259121 in webkit
- Timestamp:
- Mar 27, 2020 9:45:46 AM (4 years ago)
- Location:
- trunk/LayoutTests
- Files:
-
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r259120 r259121 1 2020-03-26 Simon Fraser <simon.fraser@apple.com> 2 3 Clean up fast/scrolling/latching tests 4 https://bugs.webkit.org/show_bug.cgi?id=209629 5 6 Reviewed by Zalan Bujtas. 7 8 These tests had a bunch of issues: 9 - mixture of waitUntilDone/jsTestIsAsync 10 - not all used eventSender.monitorWheelEvents 11 - script in the body for no reason 12 - commented out code, unused variables 13 - confusing comments 14 - contradictory test content 15 16 * fast/scrolling/latching/iframe_in_iframe-expected.txt: 17 * fast/scrolling/latching/iframe_in_iframe.html: 18 * fast/scrolling/latching/resources/inner_content.html: 19 * fast/scrolling/latching/resources/scroll_nested_iframe_test_inner.html: 20 * fast/scrolling/latching/scroll-div-latched-div-expected.txt: 21 * fast/scrolling/latching/scroll-div-latched-div.html: 22 * fast/scrolling/latching/scroll-div-latched-mainframe-expected.txt: 23 * fast/scrolling/latching/scroll-div-latched-mainframe.html: 24 * fast/scrolling/latching/scroll-div-no-latching-expected.txt: 25 * fast/scrolling/latching/scroll-div-no-latching.html: 26 * fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe-expected.txt: 27 * fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html: 28 * fast/scrolling/latching/scroll-iframe-fragment-expected.txt: 29 * fast/scrolling/latching/scroll-iframe-fragment.html: 30 * fast/scrolling/latching/scroll-iframe-in-overflow-expected.txt: 31 * fast/scrolling/latching/scroll-iframe-in-overflow.html: 32 * fast/scrolling/latching/scroll-iframe-latched-iframe-expected.txt: 33 * fast/scrolling/latching/scroll-iframe-latched-iframe.html: 34 * fast/scrolling/latching/scroll-iframe-latched-mainframe-expected.txt: 35 * fast/scrolling/latching/scroll-iframe-latched-mainframe.html: 36 * fast/scrolling/latching/scroll-iframe-webkit1-latching-bug-expected.txt: 37 * fast/scrolling/latching/scroll-iframe-webkit1-latching-bug.html: 38 * fast/scrolling/latching/scroll-latched-nested-div-expected.txt: 39 * fast/scrolling/latching/scroll-latched-nested-div.html: 40 * fast/scrolling/latching/scroll-nested-iframe-expected.txt: 41 * fast/scrolling/latching/scroll-nested-iframe.html: 42 * fast/scrolling/latching/scroll-select-bottom-test-expected.txt: 43 * fast/scrolling/latching/scroll-select-bottom-test.html: 44 * fast/scrolling/latching/scroll-select-latched-mainframe-expected.txt: 45 * fast/scrolling/latching/scroll-select-latched-mainframe.html: 46 * fast/scrolling/latching/scroll-select-latched-select-expected.txt: 47 * fast/scrolling/latching/scroll-select-latched-select.html: 48 * platform/mac-wk2/TestExpectations: 49 1 50 2020-03-27 Kate Cheney <katherine_cheney@apple.com> 2 51 -
trunk/LayoutTests/fast/scrolling/latching/iframe_in_iframe-expected.txt
r188160 r259121 6 6 7 7 8 PASS successfullyParsed is true9 10 TEST COMPLETE11 8 PASS Page did not receive wheel events. 12 9 PASS iframe did not receive wheel events. -
trunk/LayoutTests/fast/scrolling/latching/iframe_in_iframe.html
r227781 r259121 1 1 <!DOCTYPE html> 2 2 <html> 3 <head> 4 <title>iFrame in iFrame Test</title> 5 <style> 6 * { 7 box-sizing: border-box; 3 <head> 4 <style> 5 * { 6 box-sizing: border-box; 7 } 8 9 .container { 10 width:100%; 11 overflow:auto; 12 height:auto; 13 } 14 15 .innercontainer { 16 height:100%; 17 width:50%; 18 } 19 </style> 20 <script src="../../../resources/js-test-pre.js"></script> 21 <script> 22 jsTestIsAsync = true; 23 24 var iframeTarget; 25 var innerIFrameTarget; 26 var pageScrollPositionBefore; 27 var iframeScrollPositionBefore; 28 29 function checkForScroll() 30 { 31 // The iframe should not have scrolled at all. 32 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 33 var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop; 34 var innerIFrameScrollPositionAfter = iframeTarget.contentWindow.frames['target'].document.scrollingElement.scrollTop; 35 36 if (pageScrollPositionBefore != pageScrollPositionAfter) 37 testFailed("Page received wheel events."); 38 else 39 testPassed("Page did not receive wheel events."); 40 41 if (iframeScrollPositionBefore != iframeScrollPositionAfter) 42 testFailed("iframe received wheel events."); 43 else 44 testPassed("iframe did not receive wheel events."); 45 46 if (innerIFrameScrollPositionBefore != innerIFrameScrollPositionAfter) 47 testPassed("iframe received wheel events."); 48 else 49 testFailed("iframe did not receive wheel events."); 50 51 finishJSTest(); 8 52 } 9 53 10 .container { 11 width:100%; 12 overflow:auto; 13 height:auto; 54 function scrollTest() 55 { 56 pageScrollPositionBefore = document.scrollingElement.scrollTop; 57 58 iframeTarget = document.getElementById('target'); 59 60 var iframeScrollingElement = window.frames['target'].document.scrollingElement; 61 iframeScrollPositionBefore = iframeScrollingElement.scrollTop; 62 63 innerIFrameTarget = iframeTarget.contentWindow.frames['target'].document.scrollingElement; 64 innerIFrameScrollPositionBefore = innerIFrameTarget.scrollTop; 65 66 // Scroll the #source until we reach the #target. 67 var startPosX = Math.round(iframeTarget.offsetLeft) + 20; 68 var startPosY = Math.round(iframeTarget.offsetTop) + 80; 69 70 eventSender.monitorWheelEvents(); 71 eventSender.mouseMoveTo(startPosX, startPosY); 72 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 73 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 74 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 75 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 76 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 77 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 79 eventSender.callAfterScrollingCompletes(checkForScroll); 14 80 } 15 81 16 .innercontainer { 17 height:100%; 18 width:50%; 82 function setupTopLevel() 83 { 84 if (!window.eventSender) { 85 debug('This test requires eventSender'); 86 finishJSTest(); 87 return; 88 } 89 90 setTimeout(scrollTest, 0); 19 91 } 20 </style> 21 <script src="../../../resources/js-test-pre.js"></script> 22 </head> 23 <body> 24 <script> 25 26 var iframeTarget; 27 var innerIFrameTarget; 28 var pageScrollPositionBefore; 29 var iFrameScrollPositionBefore; 30 var continueCount = 5; 31 32 function checkForScroll() 33 { 34 // The IFrame should not have scrolled at all. 35 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 36 var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop; 37 var innerIFrameScrollPositionAfter = iframeTarget.contentWindow.frames['target'].document.scrollingElement.scrollTop; 38 39 if (pageScrollPositionBefore != pageScrollPositionAfter) 40 testFailed("Page received wheel events."); 41 else 42 testPassed("Page did not receive wheel events."); 43 44 if (iFrameScrollPositionBefore != iFrameScrollPositionAfter) 45 testFailed("iframe received wheel events."); 46 else 47 testPassed("iframe did not receive wheel events."); 48 49 if (innerIFrameScrollPositionBefore != innerIFrameScrollPositionAfter) 50 testPassed("iframe received wheel events."); 51 else 52 testFailed("iframe did not receive wheel events."); 53 54 finishJSTest(); 55 testRunner.notifyDone(); 56 } 57 58 function scrollTest() 59 { 60 pageScrollPositionBefore = document.scrollingElement.scrollTop; 61 62 iframeTarget = document.getElementById('target'); 63 64 var iFrameScrollingElement = window.frames['target'].document.scrollingElement; 65 iFrameScrollPositionBefore = iFrameScrollingElement.scrollTop; 66 67 innerIFrameTarget = iframeTarget.contentWindow.frames['target'].document.scrollingElement; 68 innerIFrameScrollPositionBefore = innerIFrameTarget.scrollTop; 69 70 // Scroll the #source until we reach the #target. 71 var startPosX = Math.round(iframeTarget.offsetLeft) + 20; 72 var startPosY = Math.round(iframeTarget.offsetTop) + 80; 73 eventSender.mouseMoveTo(startPosX, startPosY); 74 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 75 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 76 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 77 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 79 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 80 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 81 eventSender.callAfterScrollingCompletes(checkForScroll); 82 } 83 84 function setupTopLevel() 85 { 86 if (window.eventSender) { 87 testRunner.dumpAsText(); 88 testRunner.waitUntilDone(); 89 90 eventSender.monitorWheelEvents(); 91 setTimeout(scrollTest, 0); 92 } 93 } 94 </script> 95 <div class="container"> 96 <div class="innercontainer"> 97 <div style="width:100%;"> 98 <div>Inner Frame:</div> 99 <div style="height:92%;"> 100 <iframe id="target" name="target" src="resources/testContent.html" onload="setupTopLevel();"></iframe> 101 </div> 92 </script> 93 </head> 94 <body> 95 <div class="container"> 96 <div class="innercontainer"> 97 <div style="width:100%;"> 98 <div>Inner Frame:</div> 99 <div style="height:92%;"> 100 <iframe id="target" name="target" src="resources/testContent.html" onload="setupTopLevel();"></iframe> 102 101 </div> 103 102 </div> 104 103 </div> 105 <div id="console"></div> 106 <script> 107 description("Tests that iframe doesn't pass wheel events to main frame when scrolling inside iframe"); 108 </script> 109 <script src="../../../resources/js-test-post.js"></script> 110 </body> 104 </div> 105 <div id="console"></div> 106 <script> 107 description("Tests that iframe doesn't pass wheel events to main frame when scrolling inside iframe"); 108 </script> 109 <script src="../../../resources/js-test-post.js"></script> 110 </body> 111 111 </html> -
trunk/LayoutTests/fast/scrolling/latching/resources/inner_content.html
r188160 r259121 2 2 <html lang="en-US"> 3 3 <head> 4 <title>Inner i Frame Example</title>4 <title>Inner iframe Example</title> 5 5 <meta charset="utf-8"> 6 6 </head> -
trunk/LayoutTests/fast/scrolling/latching/resources/scroll_nested_iframe_test_inner.html
r188160 r259121 1 1 <!DOCTYPE html> 2 3 2 <html> 4 3 <head> 5 4 <style> 6 7 5 body { 8 6 height: 2000px; -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-div-expected.txt
r188160 r259121 1 Put mouse here and flick downwards2 Scrollable Region3 4 Count DATA Rev Count5 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP6 1 0.1100 407 2 0.1155 398 3 0.2200 389 4 0.2255 3710 5 0.3300 3611 6 0.3355 3512 7 0.4400 3413 8 0.4455 3314 9 0.5500 3215 10 0.5555 3116 11 0.6600 3017 12 0.6655 2918 13 0.7700 2819 14 0.7755 2720 15 0.8800 2621 16 0.8855 2522 17 0.9900 2423 18 0.9955 2324 19 0.9999 2225 20 1.0000 2126 21 1.0000 2027 22 0.9999 1928 23 0.9955 1829 24 0.9900 1730 25 0.8855 1631 26 0.8800 1532 27 0.7755 1433 28 0.7700 1334 29 0.6655 1235 30 0.6600 1136 31 0.5555 1037 32 0.5500 938 33 0.4455 839 34 0.4400 740 35 0.3355 641 36 0.3300 542 37 0.2255 443 38 0.2200 344 39 0.1155 245 40 0.1100 146 END END END END END END END END END END END END END END END47 1 Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom 48 2 … … 50 4 51 5 6 PASS Page did not receive wheel events. 52 7 PASS successfullyParsed is true 53 8 54 9 TEST COMPLETE 55 PASS Page did not receive wheel events. 10 Put mouse here and flick downwards 11 Scrollable Region 56 12 13 Scrolled contents -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-div.html
r235893 r259121 7 7 } 8 8 9 .table td, .table th { 10 padding: 2px; 9 .contents { 10 height: 1036px; 11 width: 100%; 12 background-image: repeating-linear-gradient(silver, white 200px); 11 13 } 12 13 .table th {14 height: 20px;15 text-align: left;16 font-weight: strong;17 }18 19 .table tr:nth-child(odd) {20 background: #f3f3f3;21 }22 23 .scrollable_select option:nth-child(odd) {24 background: #f3f3f3;25 }26 27 14 </style> 28 15 <script src="../../../resources/js-test-pre.js"></script> 29 16 <script> 30 function onLoad() { 31 setupTopLevel(); 32 } 17 jsTestIsAsync = true; 18 19 var divTarget; 20 var pageScrollPositionBefore; 21 var divScrollPositionBefore; 22 23 function checkForScroll() 24 { 25 // The div should not have scrolled at all. 26 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 27 var divScrollPositionAfter = divTarget.scrollTop; 28 29 if (pageScrollPositionBefore != pageScrollPositionAfter) 30 testFailed("Page received wheel events."); 31 else 32 testPassed("Page did not receive wheel events."); 33 34 finishJSTest(); 35 } 36 37 function scrollTest() 38 { 39 pageScrollPositionBefore = document.scrollingElement.scrollTop; 40 41 divTarget = document.getElementById('target'); 42 divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100; 43 44 divScrollPositionBefore = divTarget.scrollTop; 45 46 // Scroll the #source until we reach the #target. 47 var startPosX = Math.round(divTarget.offsetLeft) + 20; 48 var startPosY = Math.round(divTarget.offsetTop) + 100; // One wheel turn before end. 49 50 eventSender.monitorWheelEvents(); 51 eventSender.mouseMoveTo(startPosX, startPosY); 52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 53 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 54 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 55 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 56 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 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 description("Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom"); 65 if (window.eventSender) { 66 setTimeout(scrollTest, 0); 67 return; 68 } 69 70 var messageLocation = document.getElementById('parent'); 71 var message = document.createElement('div'); 72 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 73 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the " 74 + "down past the div.<p>" 75 + "<p>You should not see the row of END labels if this test is successful.</p>"; 76 messageLocation.appendChild(message); 77 finishJSTest(); 78 } 79 80 window.addEventListener('load', () => { 81 setupTopLevel(); 82 }, false); 33 83 </script> 34 84 </head> 35 <body onload="onLoad();"> 36 <script> 37 38 var divTarget; 39 var pageScrollPositionBefore; 40 var divScrollPositionBefore; 41 var continueCount = 5; 42 43 function checkForScroll() 44 { 45 // The div should not have scrolled at all. 46 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 47 var divScrollPositionAfter = divTarget.scrollTop; 48 49 if (pageScrollPositionBefore != pageScrollPositionAfter) 50 testFailed("Page received wheel events."); 51 else 52 testPassed("Page did not receive wheel events."); 53 54 testRunner.notifyDone(); 55 } 56 57 function scrollTest() 58 { 59 pageScrollPositionBefore = document.scrollingElement.scrollTop; 60 61 divTarget = document.getElementById('target'); 62 divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100; 63 64 divScrollPositionBefore = divTarget.scrollTop; 65 66 // Scroll the #source until we reach the #target. 67 var startPosX = Math.round(divTarget.offsetLeft) + 20; 68 var startPosY = Math.round(divTarget.offsetTop) + 100; // One wheel turn before end. 69 eventSender.mouseMoveTo(startPosX, startPosY); 70 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 71 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 72 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 73 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 74 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 75 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 76 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 77 setTimeout(checkForScroll, 100); 78 } 79 80 function setupTopLevel() 81 { 82 if (window.eventSender) { 83 testRunner.dumpAsText(); 84 testRunner.waitUntilDone(); 85 86 setTimeout(scrollTest, 1000); 87 } else { 88 var messageLocation = document.getElementById('parent'); 89 var message = document.createElement('div'); 90 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 91 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>" 92 + "down past the div.<br/><br/>" 93 + "You should not see the row of END labels if this test is successful.</p>"; 94 messageLocation.appendChild(message); 95 } 96 } 97 98 </script> 85 <body> 99 86 <div id="parent" style="height: 2000px; width: 2000px;"> 100 87 <div id="source" style="height: 100px; width: 500px;"> … … 103 90 <div class="scrollable_region"> 104 91 <h3>Scrollable Region</h3> 105 <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 350px;'> 106 <table class="table" style='width: 99%'> 107 <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr> 108 <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr> 109 <tr><td>1</td><td>0.1100</td><td>40</td></tr> 110 <tr><td>2</td><td>0.1155</td><td>39</td></tr> 111 <tr><td>3</td><td>0.2200</td><td>38</td></tr> 112 <tr><td>4</td><td>0.2255</td><td>37</td></tr> 113 <tr><td>5</td><td>0.3300</td><td>36</td></tr> 114 <tr><td>6</td><td>0.3355</td><td>35</td></tr> 115 <tr><td>7</td><td>0.4400</td><td>34</td></tr> 116 <tr><td>8</td><td>0.4455</td><td>33</td></tr> 117 <tr><td>9</td><td>0.5500</td><td>32</td></tr> 118 <tr><td>10</td><td>0.5555</td><td>31</td></tr> 119 <tr><td>11</td><td>0.6600</td><td>30</td></tr> 120 <tr><td>12</td><td>0.6655</td><td>29</td></tr> 121 <tr><td>13</td><td>0.7700</td><td>28</td></tr> 122 <tr><td>14</td><td>0.7755</td><td>27</td></tr> 123 <tr><td>15</td><td>0.8800</td><td>26</td></tr> 124 <tr><td>16</td><td>0.8855</td><td>25</td></tr> 125 <tr><td>17</td><td>0.9900</td><td>24</td></tr> 126 <tr><td>18</td><td>0.9955</td><td>23</td></tr> 127 <tr><td>19</td><td>0.9999</td><td>22</td></tr> 128 <tr><td>20</td><td>1.0000</td><td>21</td></tr> 129 <tr><td>21</td><td>1.0000</td><td>20</td></tr> 130 <tr><td>22</td><td>0.9999</td><td>19</td></tr> 131 <tr><td>23</td><td>0.9955</td><td>18</td></tr> 132 <tr><td>24</td><td>0.9900</td><td>17</td></tr> 133 <tr><td>25</td><td>0.8855</td><td>16</td></tr> 134 <tr><td>26</td><td>0.8800</td><td>15</td></tr> 135 <tr><td>27</td><td>0.7755</td><td>14</td></tr> 136 <tr><td>28</td><td>0.7700</td><td>13</td></tr> 137 <tr><td>29</td><td>0.6655</td><td>12</td></tr> 138 <tr><td>30</td><td>0.6600</td><td>11</td></tr> 139 <tr><td>31</td><td>0.5555</td><td>10</td></tr> 140 <tr><td>32</td><td>0.5500</td><td>9</td></tr> 141 <tr><td>33</td><td>0.4455</td><td>8</td></tr> 142 <tr><td>34</td><td>0.4400</td><td>7</td></tr> 143 <tr><td>35</td><td>0.3355</td><td>6</td></tr> 144 <tr><td>36</td><td>0.3300</td><td>5</td></tr> 145 <tr><td>37</td><td>0.2255</td><td>4</td></tr> 146 <tr><td>38</td><td>0.2200</td><td>3</td></tr> 147 <tr><td>39</td><td>0.1155</td><td>2</td></tr> 148 <tr><td>40</td><td>0.1100</td><td>1</td></tr> 149 <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr> 150 </table> 92 <div id="target" style="overflow-y: auto; overflow-x: hidden; max-height: 350px;"> 93 <div class="contents"> 94 Scrolled contents 95 </div> 151 96 </div> 152 97 </div> 153 98 </div> 154 <div id="console"></div>155 <script>156 description("Tests that a scrollable div doesn't pass wheel events to main frame when scrolling at bottom");157 </script>158 99 <script src="../../../resources/js-test-post.js"></script> 159 100 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-mainframe-expected.txt
r188160 r259121 2 2 Scrollable Region 3 3 4 Count DATA Rev Count 5 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP 6 1 0.1100 40 7 2 0.1155 39 8 3 0.2200 38 9 4 0.2255 37 10 5 0.3300 36 11 6 0.3355 35 12 7 0.4400 34 13 8 0.4455 33 14 9 0.5500 32 15 10 0.5555 31 16 11 0.6600 30 17 12 0.6655 29 18 13 0.7700 28 19 14 0.7755 27 20 15 0.8800 26 21 16 0.8855 25 22 17 0.9900 24 23 18 0.9955 23 24 19 0.9999 22 25 20 1.0000 21 26 21 1.0000 20 27 22 0.9999 19 28 23 0.9955 18 29 24 0.9900 17 30 25 0.8855 16 31 26 0.8800 15 32 27 0.7755 14 33 28 0.7700 13 34 29 0.6655 12 35 30 0.6600 11 36 31 0.5555 10 37 32 0.5500 9 38 33 0.4455 8 39 34 0.4400 7 40 35 0.3355 6 41 36 0.3300 5 42 37 0.2255 4 43 38 0.2200 3 44 39 0.1155 2 45 40 0.1100 1 46 END END END END END END END END END END END END END END END 4 Scrolled contents 47 5 Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame. 48 6 … … 50 8 51 9 10 Mouse moved to (28, 125) 11 PASS Scrollable div did not receive wheel events. 52 12 PASS successfullyParsed is true 53 13 54 14 TEST COMPLETE 55 Mouse moved to (28, 125)56 PASS Scrollable div did not receive wheel events.57 15 -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-latched-mainframe.html
r235893 r259121 7 7 } 8 8 9 .table td, .table th { 10 padding: 2px; 9 .contents { 10 height: 1036px; 11 width: 100%; 12 background-image: repeating-linear-gradient(silver, white 200px); 11 13 } 12 13 .table th {14 height: 20px;15 text-align: left;16 font-weight: strong;17 }18 19 .table tr:nth-child(odd) {20 background: #f3f3f3;21 }22 23 .scrollable_select option:nth-child(odd) {24 background: #f3f3f3;25 }26 27 14 </style> 28 15 <script src="../../../resources/js-test-pre.js"></script> 29 16 <script> 30 function onLoad() { 31 setupTopLevel(); 32 } 17 jsTestIsAsync = true; 18 19 var divTarget; 20 var pageScrollPositionBefore; 21 var divScrollPositionBefore; 22 23 function checkForScroll() 24 { 25 // The div should not have scrolled at all. 26 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 27 var divScrollPositionAfter = divTarget.scrollTop; 28 29 if (divScrollPositionBefore != divScrollPositionAfter) 30 testFailed("Scrollable div consumed wheel events."); 31 else 32 testPassed("Scrollable div did not receive wheel events."); 33 34 finishJSTest(); 35 } 36 37 function scrollTest() 38 { 39 pageScrollPositionBefore = document.scrollingElement.scrollTop; 40 41 divTarget = document.getElementById('target'); 42 43 divScrollPositionBefore = divTarget.scrollTop; 44 45 // Scroll the #source until we reach the #target. 46 var startPosX = Math.round(divTarget.offsetLeft) + 20; 47 var startPosY = Math.round(divTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the iframe 48 49 eventSender.monitorWheelEvents(); 50 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iframe 51 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 53 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 54 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 55 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 56 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 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 description("Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame."); 65 if (window.eventSender) { 66 setTimeout(scrollTest, 0); 67 return; 68 } 69 70 var messageLocation = document.getElementById('parent'); 71 var message = document.createElement('div'); 72 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 73 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the " 74 + "down past the div.<p>" 75 + "<p>The scrollable div should not scroll.</p>"; 76 messageLocation.appendChild(message); 77 finishJSTest(); 78 } 79 80 window.addEventListener('load', () => { 81 setupTopLevel(); 82 }, false); 33 83 </script> 34 84 </head> 35 <body onload="onLoad();"> 36 <script> 37 38 var divTarget; 39 var pageScrollPositionBefore; 40 var divScrollPositionBefore; 41 var continueCount = 5; 42 43 function checkForScroll() { 44 45 // The div should not have scrolled at all. 46 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 47 var divScrollPositionAfter = divTarget.scrollTop; 48 49 //debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore); 50 //debug("Page after: " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter); 51 52 if (divScrollPositionBefore != divScrollPositionAfter) 53 testFailed("Scrollable div consumed wheel events."); 54 else 55 testPassed("Scrollable div did not receive wheel events."); 56 57 testRunner.notifyDone(); 58 } 59 60 function scrollTest() { 61 // See where our IFrame lives: 62 pageScrollPositionBefore = document.scrollingElement.scrollTop; 63 64 divTarget = document.getElementById('target'); 65 66 divScrollPositionBefore = divTarget.scrollTop; 67 68 // Scroll the #source until we reach the #target. 69 var startPosX = Math.round(divTarget.offsetLeft) + 20; 70 var startPosY = Math.round(divTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the IFrame 71 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 72 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 73 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 74 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 75 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 76 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 77 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 79 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 80 setTimeout(checkForScroll, 100); 81 } 82 83 function setupTopLevel() { 84 85 if (window.eventSender) { 86 testRunner.waitUntilDone(); 87 88 setTimeout(scrollTest, 1000); 89 } else { 90 var messageLocation = document.getElementById('parent'); 91 var message = document.createElement('div'); 92 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 93 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>" 94 + "down past the div.<br/><br/>" 95 + "You should not see the row of END labels if this test is successful.</p>"; 96 messageLocation.appendChild(message); 97 } 98 } 99 100 </script> 85 <body> 101 86 <div id="parent" style="height: 2000px; width: 2000px;"> 102 87 <div id="source" style="height: 100px; width: 500px;"> … … 106 91 <h3>Scrollable Region</h3> 107 92 <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485px;'> 108 <table class="table" style='width: 99%'> 109 <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr> 110 <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr> 111 <tr><td>1</td><td>0.1100</td><td>40</td></tr> 112 <tr><td>2</td><td>0.1155</td><td>39</td></tr> 113 <tr><td>3</td><td>0.2200</td><td>38</td></tr> 114 <tr><td>4</td><td>0.2255</td><td>37</td></tr> 115 <tr><td>5</td><td>0.3300</td><td>36</td></tr> 116 <tr><td>6</td><td>0.3355</td><td>35</td></tr> 117 <tr><td>7</td><td>0.4400</td><td>34</td></tr> 118 <tr><td>8</td><td>0.4455</td><td>33</td></tr> 119 <tr><td>9</td><td>0.5500</td><td>32</td></tr> 120 <tr><td>10</td><td>0.5555</td><td>31</td></tr> 121 <tr><td>11</td><td>0.6600</td><td>30</td></tr> 122 <tr><td>12</td><td>0.6655</td><td>29</td></tr> 123 <tr><td>13</td><td>0.7700</td><td>28</td></tr> 124 <tr><td>14</td><td>0.7755</td><td>27</td></tr> 125 <tr><td>15</td><td>0.8800</td><td>26</td></tr> 126 <tr><td>16</td><td>0.8855</td><td>25</td></tr> 127 <tr><td>17</td><td>0.9900</td><td>24</td></tr> 128 <tr><td>18</td><td>0.9955</td><td>23</td></tr> 129 <tr><td>19</td><td>0.9999</td><td>22</td></tr> 130 <tr><td>20</td><td>1.0000</td><td>21</td></tr> 131 <tr><td>21</td><td>1.0000</td><td>20</td></tr> 132 <tr><td>22</td><td>0.9999</td><td>19</td></tr> 133 <tr><td>23</td><td>0.9955</td><td>18</td></tr> 134 <tr><td>24</td><td>0.9900</td><td>17</td></tr> 135 <tr><td>25</td><td>0.8855</td><td>16</td></tr> 136 <tr><td>26</td><td>0.8800</td><td>15</td></tr> 137 <tr><td>27</td><td>0.7755</td><td>14</td></tr> 138 <tr><td>28</td><td>0.7700</td><td>13</td></tr> 139 <tr><td>29</td><td>0.6655</td><td>12</td></tr> 140 <tr><td>30</td><td>0.6600</td><td>11</td></tr> 141 <tr><td>31</td><td>0.5555</td><td>10</td></tr> 142 <tr><td>32</td><td>0.5500</td><td>9</td></tr> 143 <tr><td>33</td><td>0.4455</td><td>8</td></tr> 144 <tr><td>34</td><td>0.4400</td><td>7</td></tr> 145 <tr><td>35</td><td>0.3355</td><td>6</td></tr> 146 <tr><td>36</td><td>0.3300</td><td>5</td></tr> 147 <tr><td>37</td><td>0.2255</td><td>4</td></tr> 148 <tr><td>38</td><td>0.2200</td><td>3</td></tr> 149 <tr><td>39</td><td>0.1155</td><td>2</td></tr> 150 <tr><td>40</td><td>0.1100</td><td>1</td></tr> 151 <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr> 152 </table> 93 <div class="contents"> 94 Scrolled contents 95 </div> 153 96 </div> 154 97 </div> 155 98 </div> 156 99 <div id="console"></div> 157 <script>158 description("Tests that a scrollable div doesn't consume wheel events when scroll is latched to main frame.");159 </script>160 100 <script src="../../../resources/js-test-post.js"></script> 161 101 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-no-latching-expected.txt
r188160 r259121 5 5 6 6 7 PASS Page received wheel events. 7 8 PASS successfullyParsed is true 8 9 9 10 TEST COMPLETE 10 PASS Page received wheel events.11 11 -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-no-latching.html
r227781 r259121 23 23 <script src="../../../resources/js-test-pre.js"></script> 24 24 <script> 25 function onLoad() { 26 setupTopLevel(); 27 } 28 </script> 29 </head> 30 <body onload="onLoad();"> 31 <script> 25 jsTestIsAsync = true; 32 26 33 var divTarget; 34 var pageScrollPositionBefore; 35 var divScrollPositionBefore; 36 var continueCount = 5; 27 var divTarget; 28 var pageScrollPositionBefore; 29 var divScrollPositionBefore; 37 30 38 function checkForScroll() { 39 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 40 var divScrollPositionAfter = divTarget.scrollLeft; 31 function checkForScroll() 32 { 33 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 34 var divScrollPositionAfter = divTarget.scrollLeft; 41 35 42 //debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore); 43 //debug("Page after: " + pageScrollPositionAfter + ", div after: " + divScrollPositionAfter); 36 if (pageScrollPositionBefore != pageScrollPositionAfter) 37 testPassed("Page received wheel events."); 38 else 39 testFailed("Page did not receive wheel events."); 44 40 45 if (pageScrollPositionBefore != pageScrollPositionAfter) 46 testPassed("Page received wheel events."); 47 else 48 testFailed("Page did not receive wheel events."); 41 finishJSTest(); 42 } 49 43 50 testRunner.notifyDone(); 51 } 44 function scrollTest() 45 { 46 pageScrollPositionBefore = document.scrollingElement.scrollTop; 52 47 53 function scrollTest() { 54 // See where our IFrame lives: 55 pageScrollPositionBefore = document.scrollingElement.scrollTop; 48 divTarget = document.getElementById('parent'); 56 49 57 divTarget = document.getElementById('parent');50 divScrollPositionBefore = divTarget.scrollLeft; 58 51 59 divScrollPositionBefore = divTarget.scrollLeft; 52 var startPosX = divTarget.offsetLeft + 20; 53 var startPosY = divTarget.offsetTop + (divTarget.clientHeight / 2); // One wheel turn before end. 54 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 60 55 61 var startPosX = divTarget.offsetLeft + 20; 62 //debug("div display height = " + divTarget.clientHeight); 63 var startPosY = divTarget.offsetTop + (divTarget.clientHeight / 2); // One wheel turn before end. 64 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 65 //debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 56 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 57 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none'); 58 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 59 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none'); 66 60 67 //debug("Page before: " + pageScrollPositionBefore + ", div before: " + divScrollPositionBefore); 68 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 69 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none'); 70 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 71 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 1, 'none', 'none'); 61 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 62 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 63 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 64 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 72 65 73 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 74 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 75 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 76 eventSender.mouseScrollByWithWheelAndMomentumPhases(-1, 0, 'none', 'none'); 66 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 67 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 68 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 77 69 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 79 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 80 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'none'); 70 setTimeout(checkForScroll, 100); 71 } 81 72 82 setTimeout(checkForScroll, 100); 83 } 73 function setupTopLevel() 74 { 75 description("Tests that scroll events of type 'none' work properly."); 76 if (window.eventSender) { 77 setTimeout(scrollTest, 0); 78 return; 79 } 84 80 85 function setupTopLevel() {86 87 if (window.eventSender) {88 testRunner.waitUntilDone();89 90 setTimeout(scrollTest, 1000);91 } else {92 81 var messageLocation = document.getElementById('parent'); 93 82 var message = document.createElement('div'); … … 97 86 + "The final set of vertical moves should modify the parent page scroll position.</p>"; 98 87 messageLocation.appendChild(message); 88 finishJSTest(); 99 89 } 100 }101 90 91 window.addEventListener('load', () => { 92 setupTopLevel(); 93 }, false); 102 94 </script> 95 </head> 96 <body> 103 97 <div id="parent" class="post"> 104 98 <div id="target" class="content"> … … 108 102 </div> 109 103 <div id="console"></div> 110 <script>111 description("Tests that scroll events of type 'none' work properly.");112 </script>113 104 <script src="../../../resources/js-test-post.js"></script> 114 105 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe-expected.txt
r188160 r259121 6 6 7 7 8 PASS successfullyParsed is true9 10 TEST COMPLETE11 8 PASS div did scroll. 12 9 PASS Page did NOT scroll. -
trunk/LayoutTests/fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html
r235893 r259121 2 2 <html> 3 3 <head> 4 <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-WheelEvent">5 4 <script src="../../../resources/js-test-pre.js"></script> 5 <script> 6 jsTestIsAsync = true; 7 8 var divTarget; 9 var pageScrollPositionBefore; 10 var divScrollPositionBefore; 11 12 function locationInWindowCoordinates(element) 13 { 14 var position = {}; 15 position.x = element.offsetLeft; 16 position.y = element.offsetTop; 17 18 while (element.offsetParent) { 19 position.x = position.x + element.offsetParent.offsetLeft; 20 position.y = position.y + element.offsetParent.offsetTop; 21 if (element == document.getElementsByTagName("body")[0]) 22 break; 23 24 element = element.offsetParent; 25 } 26 27 return position; 28 } 29 30 function checkForScroll() 31 { 32 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 33 var divScrollPositionAfter = divTarget.scrollTop; 34 35 if (divScrollPositionBefore != divScrollPositionAfter) 36 testPassed("div did scroll."); 37 else 38 testFailed("div did NOT scroll."); 39 40 if (pageScrollPositionBefore == pageScrollPositionAfter) 41 testPassed("Page did NOT scroll."); 42 else 43 testFailed("Page DID scroll."); 44 45 finishJSTest(); 46 } 47 48 function scrollTest() 49 { 50 pageScrollPositionBefore = document.scrollingElement.scrollTop; 51 52 divTarget = document.getElementById('scrollable_div'); 53 54 var windowPosition = locationInWindowCoordinates(divTarget); 55 56 var startPosX = windowPosition.x + 0.5 * divTarget.clientWidth; 57 var startPosY = windowPosition.y + 0.5 * divTarget.clientHeight; 58 59 divScrollPositionBefore = divTarget.scrollTop; 60 61 eventSender.monitorWheelEvents(); 62 eventSender.mouseMoveTo(startPosX, startPosY); 63 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 64 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 65 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 66 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 67 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 68 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 69 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 70 eventSender.callAfterScrollingCompletes(checkForScroll); 71 } 72 73 function setupTopLevel() 74 { 75 description("Tests that iframe does scroll when inner iframe is NOT scrollable."); 76 if (window.eventSender) { 77 setTimeout(scrollTest, 0); 78 return; 79 } 80 81 var messageLocation = document.getElementById('parent'); 82 var message = document.createElement('div'); 83 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 84 + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>" 85 + "<p>The test passes if you scroll to the bottom of the iframe but the main page does not scroll.</p>"; 86 messageLocation.appendChild(message); 87 finishJSTest(); 88 } 89 </script> 6 90 </head> 7 91 <body> 8 <script>9 10 var divTarget;11 var pageScrollPositionBefore;12 var divScrollPositionBefore;13 14 function locationInWindowCoordinates(element)15 {16 var position = {};17 position.x = element.offsetLeft;18 position.y = element.offsetTop;19 20 while (element.offsetParent) {21 position.x = position.x + element.offsetParent.offsetLeft;22 position.y = position.y + element.offsetParent.offsetTop;23 if (element == document.getElementsByTagName("body")[0])24 break;25 26 element = element.offsetParent;27 }28 29 return position;30 }31 32 function finishTest()33 {34 finishJSTest();35 testRunner.notifyDone();36 }37 38 function checkForScroll()39 {40 var pageScrollPositionAfter = document.scrollingElement.scrollTop;41 var divScrollPositionAfter = divTarget.scrollTop;42 43 if (divScrollPositionBefore != divScrollPositionAfter)44 testPassed("div did scroll.");45 else46 testFailed("div did NOT scroll.");47 48 if (pageScrollPositionBefore == pageScrollPositionAfter)49 testPassed("Page did NOT scroll.");50 else51 testFailed("Page DID scroll.");52 53 finishTest();54 }55 56 function scrollTest()57 {58 pageScrollPositionBefore = document.scrollingElement.scrollTop;59 60 divTarget = document.getElementById('scrollable_div');61 62 var windowPosition = locationInWindowCoordinates(divTarget);63 64 var startPosX = windowPosition.x + 0.5 * divTarget.clientWidth;65 var startPosY = windowPosition.y + 0.5 * divTarget.clientHeight;66 67 divScrollPositionBefore = divTarget.scrollTop;68 69 eventSender.mouseMoveTo(startPosX, startPosY);70 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');71 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');72 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');73 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');74 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');75 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');76 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');77 eventSender.callAfterScrollingCompletes(checkForScroll);78 }79 80 function setupTopLevel()81 {82 if (window.eventSender) {83 jsTestIsAsync = true;84 testRunner.waitUntilDone();85 86 eventSender.monitorWheelEvents();87 setTimeout(scrollTest, 0);88 } else {89 var messageLocation = document.getElementById('parent');90 var message = document.createElement('div');91 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"92 + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"93 + "<br/><br/>"94 + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";95 messageLocation.appendChild(message);96 }97 }98 99 </script>100 92 <div id="parent" style="height: 2000px"> 101 93 <div id="source" style="height: 20px"> … … 103 95 </div> 104 96 <div id="scrollable_div" style="height: 400px; width: 430px; overflow-y:auto; padding: 0;"> 105 <iframe id="non_scrollable_iframe" src="resources/background.html" s tyle="height: 2100px; width:410px; overflow:hidden; scrolling: no" onload="setupTopLevel();">97 <iframe id="non_scrollable_iframe" src="resources/background.html" scrolling="no" style="height: 2100px; width:410px;" onload="setupTopLevel();"> 106 98 </iframe> 107 99 </div> 108 100 </div> 109 101 <div id="console"></div> 110 <script>111 description("Tests that iframe does scroll when inner iframe is NOT scrollable.");112 </script>113 102 <script src="../../../resources/js-test-post.js"></script> 114 103 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-fragment-expected.txt
r188160 r259121 5 5 6 6 7 IFrame display height = 500 8 Mouse moved to (28, 466) 9 PASS IFrame received wheel events. 7 10 PASS successfullyParsed is true 8 11 9 12 TEST COMPLETE 10 IFrame display height = 50011 Mouse moved to (28, 466)12 PASS IFrame received wheel events.13 13 -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-fragment.html
r235893 r259121 1 1 <!DOCTYPE html> 2 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> 3 <head> 4 <script src="../../../resources/js-test-pre.js"></script> 5 <script> 6 jsTestIsAsync = true; 7 9 8 var iframeTarget; 10 9 var pageScrollPositionBefore; 11 var iFrameScrollPositionBefore; 12 var continueCount = 5; 10 var iframeScrollPositionBefore; 13 11 14 function checkForScroll() { 12 function checkForScroll() 13 { 14 // The iframe should have scrolled, but not the main page. 15 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 16 var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop; 15 17 16 // The IFrame should have scrolled, but not the main page. 17 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 18 var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop; 19 20 if (iFrameScrollPositionBefore != iFrameScrollPositionAfter) 18 if (iframeScrollPositionBefore != iframeScrollPositionAfter) 21 19 testPassed("IFrame received wheel events."); 22 20 else 23 21 testFailed("IFrame did not receive wheel events."); 24 22 25 testRunner.notifyDone();23 finishJSTest(); 26 24 } 27 25 28 function scrollTest() {29 // See where our IFrame lives:26 function scrollTest() 27 { 30 28 pageScrollPositionBefore = document.scrollingElement.scrollTop; 31 29 32 30 iframeTarget = document.getElementById('target'); 33 31 34 var i FrameBody = window.frames['target'].document.body;35 i FrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;32 var iframeScrollingElement = window.frames['target'].document.scrollingElement; 33 iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100; 36 34 37 i FrameScrollPositionBefore = iFrameBody.scrollTop;35 iframeScrollPositionBefore = iframeScrollingElement.scrollTop; 38 36 39 37 // Scroll the #source until we reach the #target. … … 41 39 debug("IFrame display height = " + iframeTarget.clientHeight); 42 40 var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end. 41 42 eventSender.monitorWheelEvents(); 43 43 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 44 44 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 45 45 46 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 46 47 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); … … 50 51 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 51 52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 52 setTimeout(checkForScroll, 100);53 eventSender.callAfterScrollingCompletes(checkForScroll); 53 54 } 54 55 55 function setupTopLevel() { 56 function setupTopLevel() 57 { 58 // FIXME: This seems like a basic iframe latching test, but that contradicts with the test name 59 // and the iframe contents. 60 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom"); 56 61 if (window.eventSender) { 57 testRunner.waitUntilDone(); 58 59 setTimeout(scrollTest, 1000); 60 } else { 61 var messageLocation = document.getElementById('parent'); 62 var message = document.createElement('div'); 63 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 64 + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>" 65 + "<br/><br/>" 66 + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>"; 67 messageLocation.appendChild(message); 62 setTimeout(scrollTest, 0); 63 return; 68 64 } 65 66 var message = document.createElement('div'); 67 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 68 + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>" 69 + "<p>The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>"; 70 document.body.appendChild(message); 71 finishJSTest(); 69 72 } 70 </script>71 <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;"72 src= "data:text/html, 73 <html>74 <head>75 <style>div { width: 400px; height: 200px; } </style>76 </head>77 <body>78 <div id='notToBeScrolled' style='height: 1000px; width: 1000px;'>79 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/>80 This should still be visible inside the frame after you scroll down81 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>82 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>83 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>84 This should NOT be visible inside the frame after you scroll down<br/>85 86 END END END END END END END END END END END END END87 </div>88 </body>89 </html>"90 onload="setupTopLevel();">91 </iframe>92 <div id="console"></div>93 <script>94 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");95 </script>96 97 73 74 </script> 75 </head> 76 <body> 77 <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 78 src= "data:text/html, 79 <html> 80 <head> 81 <style>div { width: 400px; height: 200px; } </style> 82 </head> 83 <body> 84 <div style='height: 1000px; width: 1000px;'> 85 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/> 86 This should still be visible inside the frame after you scroll down 87 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 88 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 89 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 90 This should NOT be visible inside the frame after you scroll down<br/> 91 <br/> 92 END END END END END END END END END END END END END 93 </div> 94 </body> 95 </html>" 96 onload="setupTopLevel();"> 97 </iframe> 98 <div id="console"></div> 99 <script src="../../../resources/js-test-post.js"></script> 100 </body> 98 101 </html> -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-in-overflow-expected.txt
r192124 r259121 1 1 PASS The iframe scrolled but the wrapper did not. 2 PASS successfullyParsed is true 2 3 4 TEST COMPLETE 5 -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-in-overflow.html
r192124 r259121 22 22 </style> 23 23 <script> 24 window.jsTestIsAsync = true;24 jsTestIsAsync = true; 25 25 26 26 function checkForScroll() { … … 32 32 testFailed("The iframe's scroll position is: " + iframe.contentWindow.scrollY + ", and the wrapper's scroll position is: " + wrapper.scrollTop); 33 33 34 testRunner.notifyDone();34 finishJSTest(); 35 35 } 36 36 37 function scrollTest() { 37 function scrollTest() 38 { 39 eventSender.monitorWheelEvents(); 38 40 eventSender.mouseMoveTo(200, 50); 39 41 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, "began", "none"); … … 56 58 function setup() { 57 59 if (window.eventSender) { 58 eventSender.monitorWheelEvents();59 60 setTimeout(scrollTest, 0); 60 } else { 61 var message = document.createElement("div"); 62 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 63 + "inside the IFrame, then use a two-finger swipe to scroll the iframe to the bottom (and beyond).<br/>" 64 + "<br/><br/>" 65 + "The test passes if the overflow container does not scroll but the iframe scrolls to the bottom.</p>"; 66 document.body.appendChild(message); 61 return; 67 62 } 63 64 var message = document.createElement("div"); 65 message.innerHTML = "<p>To run this test manually, place the mouse pointer " 66 + "inside the iframe, then use a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>" 67 + "<p>The test passes if the overflow container does not scroll but the iframe scrolls to the bottom.</p>"; 68 document.body.appendChild(message); 69 finishJSTest(); 68 70 } 69 71 -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-iframe-expected.txt
r188160 r259121 6 6 7 7 8 IFrame display height = 500 9 Mouse moved to (28, 566) 10 PASS Page did not receive wheel events. 8 11 PASS successfullyParsed is true 9 12 10 13 TEST COMPLETE 11 IFrame display height = 50012 Mouse moved to (28, 566)13 PASS Page did not receive wheel events.14 14 -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-iframe.html
r235893 r259121 2 2 <html> 3 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> 4 <script src="../../../resources/js-test-pre.js"></script> 5 <script> 6 jsTestIsAsync = true; 7 8 var iframeTarget; 9 var pageScrollPositionBefore; 10 var iframeScrollPositionBefore; 11 12 function checkForScroll() 13 { 14 // The iframe should not have scrolled at all. 15 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 16 var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop; 17 18 if (pageScrollPositionBefore != pageScrollPositionAfter) 19 testFailed("Page received wheel events."); 20 else 21 testPassed("Page did not receive wheel events."); 22 23 finishJSTest(); 24 } 25 26 function scrollTest() 27 { 28 pageScrollPositionBefore = document.scrollingElement.scrollTop; 29 30 iframeTarget = document.getElementById('target'); 31 32 var iframeScrollingElement = window.frames['target'].document.scrollingElement; 33 iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100; 34 35 iframeScrollPositionBefore = iframeScrollingElement.scrollTop; 36 37 // Scroll the #source until we reach the #target. 38 var startPosX = iframeTarget.offsetLeft + 20; 39 debug("IFrame display height = " + iframeTarget.clientHeight); 40 var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end. 41 42 eventSender.monitorWheelEvents(); 43 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 44 45 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 46 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 47 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 48 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 49 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 50 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 51 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 53 eventSender.callAfterScrollingCompletes(checkForScroll); 54 } 55 56 function setupTopLevel() 57 { 58 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom"); 59 if (window.eventSender) { 60 setTimeout(scrollTest, 0); 61 return; 62 } 63 64 var messageLocation = document.getElementById('parent'); 65 var message = document.createElement('div'); 66 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 67 + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).<br/>" 68 + "<br/><br/>" 69 + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>"; 70 messageLocation.appendChild(message); 71 finishJSTest(); 72 } 73 74 </script> 75 6 76 </head> 7 77 <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.scrollingElement.scrollTop;19 var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.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 else27 testPassed("Page did not receive wheel events.");28 29 testRunner.notifyDone();30 }31 32 function scrollTest() {33 // See where our IFrame lives:34 pageScrollPositionBefore = document.scrollingElement.scrollTop;35 36 iframeTarget = document.getElementById('target');37 38 var iFrameBody = window.frames['target'].document.body;39 iFrameBody.scrollTop = iFrameBody.scrollHeight - iframeTarget.clientHeight - 100;40 41 iFrameScrollPositionBefore = iFrameBody.scrollTop;42 43 // Scroll the #source until we reach the #target.44 var startPosX = iframeTarget.offsetLeft + 20;45 debug("IFrame display height = " + iframeTarget.clientHeight);46 var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end.47 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame48 debug("Mouse moved to (" + 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, 0, 'none', 'end');56 setTimeout(checkForScroll, 100);57 }58 59 function setupTopLevel() {60 61 if (window.eventSender) {62 testRunner.waitUntilDone();63 64 setTimeout(scrollTest, 1000);65 } else {66 var messageLocation = document.getElementById('parent');67 var message = document.createElement('div');68 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"69 + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"70 + "<br/><br/>"71 + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";72 messageLocation.appendChild(message);73 }74 }75 76 </script>77 78 <div id="parent" style="height: 2000px"> 78 79 <div id="source" style="height: 100px"> … … 81 82 <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 82 83 src= "data:text/html, 83 <div id='notToBeScrolled'style='height: 1000px; width: 1000px;'>84 <div style='height: 1000px; width: 1000px;'> 84 85 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/> 85 86 This should still be visible inside the frame after you scroll down … … 97 98 </div> 98 99 <div id="console"></div> 99 <script>100 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom");101 </script>102 100 <script src="../../../resources/js-test-post.js"></script> 103 101 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-mainframe-expected.txt
r188160 r259121 6 6 7 7 8 Mouse moved to (28, 66) 9 PASS IFrame did not receive wheel events. 8 10 PASS successfullyParsed is true 9 11 10 12 TEST COMPLETE 11 Mouse moved to (28, 66)12 PASS IFrame did not receive wheel events.13 13 -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-latched-mainframe.html
r235893 r259121 2 2 <html> 3 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> 4 <script src="../../../resources/js-test-pre.js"></script> 5 <script> 6 jsTestIsAsync = true; 7 8 var iframeTarget; 9 var pageScrollPositionBefore; 10 var iframeScrollPositionBefore; 11 12 function checkForScroll() 13 { 14 // The iframe should not have scrolled at all. 15 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 16 var iframeScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop; 17 18 if (iframeScrollPositionBefore != iframeScrollPositionAfter) 19 testFailed("IFrame consumed wheel events."); 20 else 21 testPassed("IFrame did not receive wheel events."); 22 23 finishJSTest(); 24 } 25 26 function scrollTest() 27 { 28 pageScrollPositionBefore = document.scrollingElement.scrollTop; 29 iframeScrollPositionBefore = window.frames['target'].document.scrollingElement.scrollTop; 30 31 iframeTarget = document.getElementById('target'); 32 33 // Scroll the #source until we reach the #target. 34 var startPosX = iframeTarget.offsetLeft + 20; 35 var startPosY = iframeTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the iframe 36 37 eventSender.monitorWheelEvents(); 38 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 39 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 40 41 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 42 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 43 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 44 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 45 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 46 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 47 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 48 eventSender.callAfterScrollingCompletes(checkForScroll); 49 } 50 51 function setupTopLevel() 52 { 53 description("Tests that iframe doesn't consume wheel events when scroll "); 54 if (window.eventSender) { 55 setTimeout(scrollTest, 0); 56 return; 57 } 58 59 var messageLocation = document.getElementById('parent'); 60 var message = document.createElement('div'); 61 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 62 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the " 63 + "down past the iframe.</p>" 64 + "<p>You should not see the row of END labels if this test is successful.</p>"; 65 messageLocation.appendChild(message); 66 finishJSTest(); 67 } 68 69 </script> 6 70 </head> 7 71 <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.scrollingElement.scrollTop;19 var iFrameScrollPositionAfter = window.frames['target'].document.scrollingElement.scrollTop;20 21 //debug("Page before: " + pageScrollPositionBefore + ", IFrame before: " + iFrameScrollPositionBefore);22 //debug("Page after: " + pageScrollPositionAfter + ", IFrame after: " + iFrameScrollPositionAfter);23 24 if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)25 testFailed("IFrame consumed wheel events.");26 else27 testPassed("IFrame did not receive wheel events.");28 29 testRunner.notifyDone();30 }31 32 function scrollTest() {33 // See where our IFrame lives:34 pageScrollPositionBefore = document.scrollingElement.scrollTop;35 iFrameScrollPositionBefore = window.frames['target'].document.scrollingElement.scrollTop;36 37 iframeTarget = document.getElementById('target');38 39 // Scroll the #source until we reach the #target.40 var startPosX = iframeTarget.offsetLeft + 20;41 var startPosY = iframeTarget.offsetTop - 42; // Slightly more than one wheel scroll away from the IFrame42 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame43 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");44 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');45 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');46 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');47 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');48 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');49 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');50 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');51 setTimeout(checkForScroll, 100);52 }53 54 function setupTopLevel() {55 56 if (window.eventSender) {57 testRunner.waitUntilDone();58 59 setTimeout(scrollTest, 1000);60 } else {61 var messageLocation = document.getElementById('parent');62 var message = document.createElement('div');63 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"64 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>"65 + "down past the IFrame.<br/><br/>"66 + "You should not see the row of END labels if this test is successful.</p>";67 messageLocation.appendChild(message);68 }69 }70 71 </script>72 72 <div id="parent" style="height: 2000px"> 73 73 <div id="source" style="height: 100px"> … … 76 76 <iframe id="target" name="target" style="border:solid 1px green; height: 500px; width: 500px;" 77 77 src= "data:text/html, 78 <div id='notToBeScrolled'style='height: 1000px; width: 1000px;'>78 <div style='height: 1000px; width: 1000px;'> 79 79 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/> 80 80 This should still be visible inside the frame after you scroll down … … 92 92 </div> 93 93 <div id="console"></div> 94 <script>95 description("Tests that iframe doesn't consume wheel events when scroll ");96 </script>97 94 <script src="../../../resources/js-test-post.js"></script> 98 95 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-webkit1-latching-bug-expected.txt
r188160 r259121 5 5 6 6 7 iframe display height = 150 8 Mouse moved to (28, 116) 9 PASS iframe received wheel events. 7 10 PASS successfullyParsed is true 8 11 9 12 TEST COMPLETE 10 iframe display height = 15011 Mouse moved to (28, 116)12 PASS iframe received wheel events.13 13 -
trunk/LayoutTests/fast/scrolling/latching/scroll-iframe-webkit1-latching-bug.html
r235893 r259121 1 1 <!DOCTYPE html> 2 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 id="parent" style="height: 2000px"> 8 <script> 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 jsTestIsAsync = true; 9 8 var iframeTarget; 10 9 var pageScrollPositionBefore; 11 10 var iframeScrollPositionBefore; 12 var continueCount = 5;13 11 14 function checkForScroll() {15 12 function checkForScroll() 13 { 16 14 // The iframe should have scrolled, but not the main page. 17 15 var pageScrollPositionAfter = document.scrollingElement.scrollTop; … … 23 21 testFailed("iframe did not receive wheel events."); 24 22 25 testRunner.notifyDone();23 finishJSTest(); 26 24 } 27 25 28 function scrollTest() {29 // See where our iframe lives:26 function scrollTest() 27 { 30 28 pageScrollPositionBefore = document.scrollingElement.scrollTop; 31 29 32 30 iframeTarget = document.getElementById('target'); 33 31 34 var iframe Body = window.frames['target'].document.body;35 iframe Body.scrollTop = iframeBody.scrollHeight - iframeTarget.clientHeight - 100;32 var iframeScrollingElement = window.frames['target'].document.scrollingElement; 33 iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100; 36 34 37 iframeScrollPositionBefore = iframe Body.scrollTop;35 iframeScrollPositionBefore = iframeScrollingElement.scrollTop; 38 36 39 37 // Scroll the #source until we reach the #target. … … 41 39 debug("iframe display height = " + iframeTarget.clientHeight); 42 40 var startPosY = iframeTarget.offsetTop + iframeTarget.clientHeight - 42; // One wheel turn before end. 41 42 eventSender.monitorWheelEvents(); 43 43 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iframe 44 44 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); … … 50 50 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 51 51 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 52 setTimeout(checkForScroll, 100);52 eventSender.callAfterScrollingCompletes(checkForScroll); 53 53 } 54 54 55 function setupTopLevel() { 55 function setupTopLevel() 56 { 57 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom"); 56 58 if (window.eventSender) { 57 testRunner.waitUntilDone(); 59 setTimeout(scrollTest, 0); 60 return; 61 } 62 var messageLocation = document.getElementById('parent'); 63 var message = document.createElement('div'); 64 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer " 65 + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>" 66 + "<p>The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>"; 67 messageLocation.appendChild(message); 68 finishJSTest(); 69 } 70 </script> 71 </head> 72 <body id="parent" style="height: 2000px"> 58 73 59 setTimeout(scrollTest, 1000); 60 } else { 61 var messageLocation = document.getElementById('parent'); 62 var message = document.createElement('div'); 63 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 64 + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).<br/>" 65 + "<br/><br/>" 66 + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>"; 67 messageLocation.appendChild(message); 68 } 69 } 70 </script> 71 <iframe id="target" name="target" style="border:solid 1px green; height: 150px; width: 300px;" 72 src= "data:text/html, 73 <html style='height: 100%'> 74 <body style='height: 100%'> 75 <div style='height: 100px; width: 200px'> 76 <div style='overflow-y: auto; overflow-x: hidden;'> 77 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/> 78 This should still be visible inside the frame after you scroll down 79 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 80 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 81 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 82 This should NOT be visible inside the frame after you scroll down<br/> 83 <br/> 84 END END END END END END END END END END END END END 85 </div> 74 <iframe id="target" name="target" style="border:solid 1px green; height: 150px; width: 300px;" 75 src= "data:text/html, 76 <html style='height: 100%'> 77 <body style='height: 100%'> 78 <div style='height: 100px; width: 200px'> 79 <div style='overflow-y: auto; overflow-x: hidden;'> 80 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP<br/><br/> 81 This should still be visible inside the frame after you scroll down 82 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 83 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 84 <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 85 This should NOT be visible inside the frame after you scroll down<br/> 86 <br/> 87 END END END END END END END END END END END END END 86 88 </div> 87 </body> 88 </html>" 89 onload="setupTopLevel();"> 90 </iframe> 91 <div id="console"></div> 92 <script> 93 description("Tests that iframe doesn't pass wheel events to main frame when scrolling at bottom"); 94 </script> 95 <script src="../../../resources/js-test-post.js"></script> 96 </body> 89 </div> 90 </body> 91 </html>" 92 onload="setupTopLevel();"> 93 </iframe> 94 <div id="console"></div> 95 <script src="../../../resources/js-test-post.js"></script> 96 </body> 97 97 </html> -
trunk/LayoutTests/fast/scrolling/latching/scroll-latched-nested-div-expected.txt
r188160 r259121 2 2 Scrollable Region 3 3 4 Count DATA Rev Count5 TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP TOP6 1 0.1100 407 2 0.1155 398 3 0.2200 389 4 0.2255 3710 5 0.3300 3611 6 0.3355 3512 7 0.4400 3413 8 0.4455 3314 9 0.5500 3215 10 0.5555 3116 11 0.6600 3017 12 0.6655 2918 13 0.7700 2819 14 0.7755 2720 15 0.8800 2621 16 0.8855 2522 17 0.9900 2423 18 0.9955 2324 19 0.9999 2225 20 1.0000 2126 21 1.0000 2027 22 0.9999 1928 23 0.9955 1829 24 0.9900 1730 25 0.8855 1631 26 0.8800 1532 27 0.7755 1433 28 0.7700 1334 29 0.6655 1235 30 0.6600 1136 31 0.5555 1037 32 0.5500 938 33 0.4455 839 34 0.4400 740 35 0.3355 641 36 0.3300 542 37 0.2255 443 38 0.2200 344 39 0.1155 245 40 0.1100 146 END END END END END END END END END END END END END END END47 4 A set of information at the bottom of the table. 48 5 … … 52 9 53 10 54 PASS successfullyParsed is true55 56 TEST COMPLETE57 11 wrapperTarget = [object HTMLDivElement] 58 12 First scroll event: … … 64 18 PASS Wrapper did not receive wheel events during the second gesture. 65 19 PASS div did not receive wheel events during the second gesture. 20 PASS successfullyParsed is true 66 21 22 TEST COMPLETE 23 -
trunk/LayoutTests/fast/scrolling/latching/scroll-latched-nested-div.html
r227781 r259121 6 6 width: 680px; 7 7 } 8 9 .table td, .table th { 10 padding: 2px;8 .contents { 9 height: 1024px; 10 background-image: repeating-linear-gradient(silver, white 200px); 11 11 } 12 13 .table th {14 height: 20px;15 text-align: left;16 font-weight: strong;17 }18 19 .table tr:nth-child(odd) {20 background: #f3f3f3;21 }22 23 .scrollable_select option:nth-child(odd) {24 background: #f3f3f3;25 }26 27 12 </style> 28 13 <script src="../../../resources/js-test-pre.js"></script> 29 14 <script> 30 function onLoad() { 31 setupTopLevel(); 32 } 15 jsTestIsAsync = true; 16 17 var wrapperTarget; 18 var divTarget; 19 var pageScrollPositionBefore; 20 var wrapperScrollPositionBefore; 21 var divScrollPositionBefore; 22 23 function checkForSecondScroll() 24 { 25 // 'parent' should have scrolled, the content of 'target' should 26 // not have scrolled, and 'wrapper' should not have scrolled. 27 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 28 var wrapperScrollPositionAfter = wrapperTarget.scrollTop; 29 var divScrollPositionAfter = divTarget.scrollTop; 30 31 debug("Second scroll event:"); 32 if (pageScrollPositionBefore != pageScrollPositionAfter) 33 testPassed("Page received wheel events during the second gesture."); 34 else 35 testFailed("Page did not receive wheel events during the second gesture."); 36 37 if (wrapperScrollPositionBefore != wrapperScrollPositionAfter) 38 testFailed("Wrapper received wheel events during the second gesture."); 39 else 40 testPassed("Wrapper did not receive wheel events during the second gesture."); 41 42 if (divScrollPositionBefore != divScrollPositionAfter) 43 testFailed("div received wheel events during the second gesture."); 44 else 45 testPassed("div did not receive wheel events during the second gesture."); 46 47 finishJSTest(); 48 } 49 50 function checkForFirstScroll() 51 { 52 // 'parent' should not have scrolled, and the content of 'target' should 53 // not have moved. However, 'wrapper' should have moved. 54 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 55 var wrapperScrollPositionAfter = wrapperTarget.scrollTop; 56 var divScrollPositionAfter = divTarget.scrollTop; 57 58 debug("First scroll event:"); 59 if (pageScrollPositionBefore != pageScrollPositionAfter) 60 testFailed("Page received wheel events during the first gesture."); 61 else 62 testPassed("Page did not receive wheel events during the first gesture."); 63 64 if (wrapperScrollPositionBefore != wrapperScrollPositionAfter) 65 testPassed("Wrapper received wheel events during the first gesture."); 66 else 67 testFailed("Wrapper did not receive wheel events during the first gesture."); 68 69 if (divScrollPositionBefore != divScrollPositionAfter) 70 testFailed("div received wheel events during the first gesture."); 71 else 72 testPassed("div did not receive wheel events during the first gesture."); 73 74 wrapperScrollPositionBefore = wrapperTarget.scrollTop; 75 76 eventSender.monitorWheelEvents(); 77 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 79 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 80 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 81 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 82 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 83 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 84 eventSender.callAfterScrollingCompletes(checkForSecondScroll); 85 } 86 87 function scrollTest() 88 { 89 pageScrollPositionBefore = document.scrollingElement.scrollTop; 90 91 divTarget = document.getElementById('target'); 92 divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100; 93 94 divScrollPositionBefore = divTarget.scrollTop; 95 96 wrapperTarget = document.getElementById('wrapper'); 97 wrapperScrollPositionBefore = wrapperTarget.scrollTop; 98 debug("wrapperTarget = " + wrapperTarget); 99 100 // Move mouse to a position to the right side of the table, and near the bottom. 101 var startPosX = divTarget.offsetLeft + divTarget.clientWidth + 50; 102 var startPosY = Math.round(divTarget.offsetTop) - 42; // One wheel turn before end. 103 104 eventSender.monitorWheelEvents(); 105 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 106 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 107 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 108 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 109 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 110 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -5, 'none', 'begin'); 111 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -10, 'none', 'continue'); 112 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 113 eventSender.callAfterScrollingCompletes(checkForFirstScroll); 114 } 115 116 function setupTopLevel() 117 { 118 description("Tests that a scrollable div nested inside another scrollable div properly handles wheel events under sub-pixel conditions."); 119 if (window.eventSender) { 120 setTimeout(scrollTest, 0); 121 return; 122 } 123 124 finishJSTest(); 125 } 126 127 window.addEventListener('load', () => { 128 setupTopLevel(); 129 }, false); 33 130 </script> 34 131 </head> 35 <body onload="onLoad();"> 36 <script> 37 38 var wrapperTarget; 39 var divTarget; 40 var pageScrollPositionBefore; 41 var wrapperScrollPositionBefore; 42 var divScrollPositionBefore; 43 var continueCount = 5; 44 45 function checkForSecondScroll() { 46 // 'parent' should have scrolled, the content of 'target' should 47 // not have scrolled, and 'wrapper' should not have scrolled. 48 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 49 var wrapperScrollPositionAfter = wrapperTarget.scrollTop; 50 var divScrollPositionAfter = divTarget.scrollTop; 51 52 debug("Second scroll event:"); 53 if (pageScrollPositionBefore != pageScrollPositionAfter) 54 testPassed("Page received wheel events during the second gesture."); 55 else 56 testFailed("Page did not receive wheel events during the second gesture."); 57 58 if (wrapperScrollPositionBefore != wrapperScrollPositionAfter) 59 testFailed("Wrapper received wheel events during the second gesture."); 60 else 61 testPassed("Wrapper did not receive wheel events during the second gesture."); 62 63 if (divScrollPositionBefore != divScrollPositionAfter) 64 testFailed("div received wheel events during the second gesture."); 65 else 66 testPassed("div did not receive wheel events during the second gesture."); 67 68 testRunner.notifyDone(); 69 } 70 71 function checkForFirstScroll() { 72 // 'parent' should not have scrolled, and the content of 'target' should 73 // not have moved. However, 'wrapper' should have moved. 74 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 75 var wrapperScrollPositionAfter = wrapperTarget.scrollTop; 76 var divScrollPositionAfter = divTarget.scrollTop; 77 78 debug("First scroll event:"); 79 if (pageScrollPositionBefore != pageScrollPositionAfter) 80 testFailed("Page received wheel events during the first gesture."); 81 else 82 testPassed("Page did not receive wheel events during the first gesture."); 83 84 if (wrapperScrollPositionBefore != wrapperScrollPositionAfter) 85 testPassed("Wrapper received wheel events during the first gesture."); 86 else 87 testFailed("Wrapper did not receive wheel events during the first gesture."); 88 89 if (divScrollPositionBefore != divScrollPositionAfter) 90 testFailed("div received wheel events during the first gesture."); 91 else 92 testPassed("div did not receive wheel events during the first gesture."); 93 94 wrapperScrollPositionBefore = wrapperTarget.scrollTop; 95 96 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 97 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 98 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 99 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 100 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin'); 101 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue'); 102 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 103 // The timeout used to be only 100, but when we added support for rubber-banding in overflow 104 // areas, we found we had to increase the timeout to allow the rubber-band to finish. 105 setTimeout(checkForSecondScroll, 1000); 106 } 107 108 function scrollTest() { 109 // See where our IFrame lives: 110 pageScrollPositionBefore = document.scrollingElement.scrollTop; 111 112 divTarget = document.getElementById('target'); 113 divTarget.scrollTop = divTarget.scrollHeight - divTarget.clientHeight - 100; 114 115 divScrollPositionBefore = divTarget.scrollTop; 116 117 wrapperTarget = document.getElementById('wrapper'); 118 wrapperScrollPositionBefore = wrapperTarget.scrollTop; 119 debug("wrapperTarget = " + wrapperTarget); 120 121 // Move mouse to a position to the right side of the table, and near the bottom. 122 var startPosX = divTarget.offsetLeft + divTarget.clientWidth + 50; 123 var startPosY = Math.round(divTarget.offsetTop) - 42; // One wheel turn before end. 124 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 125 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none'); 126 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 127 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none'); 128 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none'); 129 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -5, 'none', 'begin'); 130 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -10, 'none', 'continue'); 131 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end'); 132 // The timeout used to be only 100, but when we added support for rubber-banding in overflow 133 // areas, we found we had to increase the timeout to allow the rubber-band to finish. 134 setTimeout(checkForFirstScroll, 1000); 135 } 136 137 function setupTopLevel() { 138 139 if (window.eventSender) { 140 testRunner.waitUntilDone(); 141 142 setTimeout(scrollTest, 1000); 143 } else { 144 var messageLocation = document.getElementById('parent'); 145 var message = document.createElement('div'); 146 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 147 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll the<br/>" 148 + "down past the div.<br/><br/>" 149 + "You should not see the row of END labels if this test is successful.</p>"; 150 messageLocation.appendChild(message); 151 } 152 } 153 154 </script> 132 <body> 155 133 <div id="parent" style="height: 2000px; width: 800px;"> 156 134 <div id="wrapper" style='overflow-y: auto; overflow-x: hidden; max-height: 600px;'> … … 162 140 <h3>Scrollable Region</h3> 163 141 <div id="target" style='overflow-y: auto; overflow-x: hidden; max-height: 485.55px;'> 164 <table class="table" style='width: 99%'> 165 <tr><th>Count</th><th>DATA</th><th>Rev Count</th></tr> 166 <tr><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td><td>TOP TOP TOP TOP TOP</td></tr> 167 <tr><td>1</td><td>0.1100</td><td>40</td></tr> 168 <tr><td>2</td><td>0.1155</td><td>39</td></tr> 169 <tr><td>3</td><td>0.2200</td><td>38</td></tr> 170 <tr><td>4</td><td>0.2255</td><td>37</td></tr> 171 <tr><td>5</td><td>0.3300</td><td>36</td></tr> 172 <tr><td>6</td><td>0.3355</td><td>35</td></tr> 173 <tr><td>7</td><td>0.4400</td><td>34</td></tr> 174 <tr><td>8</td><td>0.4455</td><td>33</td></tr> 175 <tr><td>9</td><td>0.5500</td><td>32</td></tr> 176 <tr><td>10</td><td>0.5555</td><td>31</td></tr> 177 <tr><td>11</td><td>0.6600</td><td>30</td></tr> 178 <tr><td>12</td><td>0.6655</td><td>29</td></tr> 179 <tr><td>13</td><td>0.7700</td><td>28</td></tr> 180 <tr><td>14</td><td>0.7755</td><td>27</td></tr> 181 <tr><td>15</td><td>0.8800</td><td>26</td></tr> 182 <tr><td>16</td><td>0.8855</td><td>25</td></tr> 183 <tr><td>17</td><td>0.9900</td><td>24</td></tr> 184 <tr><td>18</td><td>0.9955</td><td>23</td></tr> 185 <tr><td>19</td><td>0.9999</td><td>22</td></tr> 186 <tr><td>20</td><td>1.0000</td><td>21</td></tr> 187 <tr><td>21</td><td>1.0000</td><td>20</td></tr> 188 <tr><td>22</td><td>0.9999</td><td>19</td></tr> 189 <tr><td>23</td><td>0.9955</td><td>18</td></tr> 190 <tr><td>24</td><td>0.9900</td><td>17</td></tr> 191 <tr><td>25</td><td>0.8855</td><td>16</td></tr> 192 <tr><td>26</td><td>0.8800</td><td>15</td></tr> 193 <tr><td>27</td><td>0.7755</td><td>14</td></tr> 194 <tr><td>28</td><td>0.7700</td><td>13</td></tr> 195 <tr><td>29</td><td>0.6655</td><td>12</td></tr> 196 <tr><td>30</td><td>0.6600</td><td>11</td></tr> 197 <tr><td>31</td><td>0.5555</td><td>10</td></tr> 198 <tr><td>32</td><td>0.5500</td><td>9</td></tr> 199 <tr><td>33</td><td>0.4455</td><td>8</td></tr> 200 <tr><td>34</td><td>0.4400</td><td>7</td></tr> 201 <tr><td>35</td><td>0.3355</td><td>6</td></tr> 202 <tr><td>36</td><td>0.3300</td><td>5</td></tr> 203 <tr><td>37</td><td>0.2255</td><td>4</td></tr> 204 <tr><td>38</td><td>0.2200</td><td>3</td></tr> 205 <tr><td>39</td><td>0.1155</td><td>2</td></tr> 206 <tr><td>40</td><td>0.1100</td><td>1</td></tr> 207 <tr><td>END END END END END</td><td>END END END END END</td><td>END END END END END</td></tr> 208 </table> 142 <div class="contents"> 143 </div> 209 144 </div> 210 145 <div id="bottom" style="height: 100px; width: 600px;"> … … 215 150 </div> 216 151 <div id="console"></div> 217 <script>218 description("Tests that a scrollable div nested inside another scrollable div properly handles wheel events under sub-pixel conditions.");219 </script>220 152 <script src="../../../resources/js-test-post.js"></script> 221 153 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-nested-iframe-expected.txt
r188160 r259121 6 6 7 7 8 IFrame display height = 1000 9 Mouse moved to (28, 88) 10 PASS iframe did scroll. 8 11 PASS successfullyParsed is true 9 12 10 13 TEST COMPLETE 11 IFrame display height = 100012 Mouse moved to (28, 88)13 PASS iframe did scroll.14 14 -
trunk/LayoutTests/fast/scrolling/latching/scroll-nested-iframe.html
r227781 r259121 2 2 <html> 3 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 4 <style> 7 5 iframe { … … 10 8 } 11 9 </style> 10 <script src="../../../resources/js-test-pre.js"></script> 11 <script> 12 jsTestIsAsync = true; 13 14 var iframeTarget; 15 var pageScrollPositionBefore; 16 var iframeScrollPositionBefore; 17 18 function checkForScroll() 19 { 20 // The iframe should not have scrolled at all. 21 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 22 var iframeScrollPositionAfter = window.frames['scrollable_iframe'].document.scrollingElement.scrollTop; 23 24 if (iframeScrollPositionBefore != iframeScrollPositionAfter) 25 testPassed("iframe did scroll."); 26 else 27 testFailed("iframe did NOT scroll."); 28 29 finishJSTest(); 30 } 31 32 function scrollTest() 33 { 34 pageScrollPositionBefore = document.scrollingElement.scrollTop; 35 36 iframeTarget = document.getElementById('scrollable_iframe'); 37 38 var iframeScrollingElement = window.frames['scrollable_iframe'].document.scrollingElement; 39 iframeScrollingElement.scrollTop = iframeScrollingElement.scrollHeight - iframeTarget.clientHeight - 100; 40 41 iframeScrollPositionBefore = iframeScrollingElement.scrollTop; 42 43 // Scroll the #source until we reach the #target. 44 var startPosX = iframeTarget.offsetLeft + 20; 45 debug("IFrame display height = " + iframeTarget.clientHeight); 46 var startPosY = iframeTarget.offsetTop + 60; // One wheel turn before end. 47 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 48 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 49 50 eventSender.monitorWheelEvents(); 51 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true); 52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 53 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 54 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true); 55 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true); 56 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true); 57 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true); 58 eventSender.callAfterScrollingCompletes(checkForScroll); 59 } 60 61 function setupTopLevel() 62 { 63 description("Tests that iframe does scroll when inner iframe is NOT scrollable."); 64 if (window.eventSender) { 65 setTimeout(scrollTest, 1000); 66 return; 67 } 68 var messageLocation = document.getElementById('parent'); 69 var message = document.createElement('div'); 70 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 71 + "inside the iframe, then use the mouse wheel or a two-finger swipe to scroll the iframe to the bottom (and beyond).</p>" 72 + "<p>The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>"; 73 messageLocation.appendChild(message); 74 finishJSTest(); 75 } 76 </script> 12 77 </head> 13 78 <body> 14 <script>15 16 var iframeTarget;17 var pageScrollPositionBefore;18 var iFrameScrollPositionBefore;19 var continueCount = 5;20 21 function checkForScroll() {22 23 // The IFrame should not have scrolled at all.24 var pageScrollPositionAfter = document.scrollingElement.scrollTop;25 var iFrameScrollPositionAfter = window.frames['scrollable_iframe'].document.scrollingElement.scrollTop;26 27 if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)28 testPassed("iframe did scroll.");29 else30 testFailed("iframe did NOT scroll.");31 32 testRunner.notifyDone();33 }34 35 function scrollTest() {36 // See where our IFrame lives:37 pageScrollPositionBefore = document.scrollingElement.scrollTop;38 39 iframeTarget = document.getElementById('scrollable_iframe');40 41 var iFrameScrollingElement = window.frames['scrollable_iframe'].document.scrollingElement;42 iFrameScrollingElement.scrollTop = iFrameScrollingElement.scrollHeight - iframeTarget.clientHeight - 100;43 44 iFrameScrollPositionBefore = iFrameScrollingElement.scrollTop;45 46 // Scroll the #source until we reach the #target.47 var startPosX = iframeTarget.offsetLeft + 20;48 debug("IFrame display height = " + iframeTarget.clientHeight);49 var startPosY = iframeTarget.offsetTop + 60; // One wheel turn before end.50 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame51 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")");52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true);53 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);54 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true);55 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true);56 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true);57 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true);58 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true);59 setTimeout(checkForScroll, 100);60 }61 62 function setupTopLevel() {63 64 if (window.eventSender) {65 testRunner.waitUntilDone();66 67 setTimeout(scrollTest, 1000);68 } else {69 var messageLocation = document.getElementById('parent');70 var message = document.createElement('div');71 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"72 + "inside the IFrame, then use the mouse wheel or a two-finger swipe to scroll the IFrame to the bottom (and beyond).<br/>"73 + "<br/><br/>"74 + "The test passes if you scroll far enough to see the row of END labels but the main page does not scroll.</p>";75 messageLocation.appendChild(message);76 }77 }78 79 </script>80 79 <div id="parent" style="height: 2000px"> 81 80 <div id="source" style="height: 20px"> … … 86 85 </div> 87 86 <div id="console"></div> 88 <script>89 description("Tests that iframe does scroll when inner iframe is NOT scrollable.");90 </script>91 87 <script src="../../../resources/js-test-post.js"></script> 92 88 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-select-bottom-test-expected.txt
r188160 r259121 8 8 9 9 10 div display height = 111 11 Mouse moved to (30, 378) 12 PASS Page did not receive wheel events. 10 13 PASS successfullyParsed is true 11 14 12 15 TEST COMPLETE 13 div display height = 11114 Mouse moved to (30, 378)15 PASS Page did not receive wheel events.16 16 -
trunk/LayoutTests/fast/scrolling/latching/scroll-select-bottom-test.html
r235893 r259121 6 6 width: 680px; 7 7 } 8 9 .table td, .table th {10 padding: 2px;11 }12 13 .table th {14 height: 20px;15 text-align: left;16 font-weight: strong;17 }18 19 .table tr:nth-child(odd) {20 background: #f3f3f3;21 }22 23 8 .scrollable_select option:nth-child(odd) { 24 9 background: #f3f3f3; 25 10 } 26 27 11 </style> 28 12 <script src="../../../resources/js-test-pre.js"></script> 29 13 <script> 30 function onLoad() { 31 setupTopLevel(); 32 } 14 jsTestIsAsync = true; 15 var clientInset = 100; 16 17 var selectTarget; 18 var pageScrollPositionBefore; 19 var selectScrollPositionBefore; 20 21 function checkForScroll() 22 { 23 // The page should not have scrolled at all. 24 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 25 var selectScrollPositionAfter = selectTarget.scrollTop; 26 27 if (pageScrollPositionBefore != pageScrollPositionAfter) 28 testFailed("Page received wheel events."); 29 else 30 testPassed("Page did not receive wheel events."); 31 32 finishJSTest(); 33 } 34 35 function scrollTest() 36 { 37 pageScrollPositionBefore = document.scrollingElement.scrollTop; 38 39 selectTarget = document.getElementById('target'); 40 selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100; 41 42 selectScrollPositionBefore = selectTarget.scrollTop; 43 44 // Scroll the #source until we reach the #target. 45 var startPosX = selectTarget.offsetLeft + 20; 46 debug("div display height = " + selectTarget.clientHeight); 47 var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) + clientInset - 2; // Very near top (accounting for top content inset). 48 eventSender.mouseMoveTo(startPosX, startPosY); 49 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 50 51 eventSender.monitorWheelEvents(); 52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true); 53 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 54 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 55 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true); 56 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true); 57 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true); 58 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true); 59 eventSender.callAfterScrollingCompletes(checkForScroll); 60 } 61 62 function setupTopLevel() 63 { 64 description("Tests that a select doesn't pass wheel events to main frame when scrolling at bottom"); 65 66 if (window.internals) 67 window.internals.setTopContentInset(clientInset); 68 69 if (window.eventSender) { 70 setTimeout(scrollTest, 0); 71 return; 72 } 73 74 var messageLocation = document.getElementById('parent'); 75 var message = document.createElement('div'); 76 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 77 + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger " 78 + "swipe to scroll through the rest of the select options.</p>" 79 + "<p>You should not see the page position change if this test is successful.</p>"; 80 messageLocation.appendChild(message); 81 finishJSTest(); 82 } 83 84 window.addEventListener('load', () => { 85 setupTopLevel(); 86 }, false); 33 87 </script> 34 88 </head> 35 <body onload="onLoad();"> 36 <script> 37 38 var clientInset = 100; 39 40 var selectTarget; 41 var pageScrollPositionBefore; 42 var selectScrollPositionBefore; 43 var continueCount = 5; 44 45 function checkForScroll() { 46 47 // The page should not have scrolled at all. 48 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 49 var selectScrollPositionAfter = selectTarget.scrollTop; 50 51 //debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore); 52 //debug("Page after: " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter); 53 54 if (pageScrollPositionBefore != pageScrollPositionAfter) 55 testFailed("Page received wheel events."); 56 else 57 testPassed("Page did not receive wheel events."); 58 59 testRunner.notifyDone(); 60 } 61 62 function scrollTest() { 63 // See where our IFrame lives: 64 pageScrollPositionBefore = document.scrollingElement.scrollTop; 65 66 selectTarget = document.getElementById('target'); 67 selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100; 68 69 selectScrollPositionBefore = selectTarget.scrollTop; 70 71 // Scroll the #source until we reach the #target. 72 var startPosX = selectTarget.offsetLeft + 20; 73 debug("div display height = " + selectTarget.clientHeight); 74 var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) + clientInset - 2; // Very near top (accounting for top content inset). 75 eventSender.mouseMoveTo(startPosX, startPosY); 76 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 77 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true); 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 79 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 80 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true); 81 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true); 82 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true); 83 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true); 84 setTimeout(checkForScroll, 100); 85 } 86 87 function setupTopLevel() { 88 89 if (window.eventSender) { 90 testRunner.dumpAsText(true); 91 testRunner.waitUntilDone(); 92 93 setTimeout(scrollTest, 1000); 94 } else { 95 var messageLocation = document.getElementById('parent'); 96 var message = document.createElement('div'); 97 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 98 + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger<br/>" 99 + "swipe to scroll through the rest of the select options.<br/><br/>" 100 + "You should not see the page position change if this test is successful.</p>"; 101 messageLocation.appendChild(message); 102 } 103 104 if (window.internals) 105 window.internals.setTopContentInset(clientInset); 106 } 107 108 </script> 89 <body> 109 90 <div id="parent" style="height: 2000px; width: 2000px;"> 110 91 <div id="source" style="height: 100px; width: 500px;"> … … 140 121 </div> 141 122 <div id="console"></div> 142 <script>143 description("Tests that a select doesn't pass wheel events to main frame when scrolling at bottom");144 </script>145 123 <script src="../../../resources/js-test-post.js"></script> 146 124 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-mainframe-expected.txt
r188160 r259121 8 8 9 9 10 Mouse moved to (30, 127) 11 PASS Select did not receive wheel events. 10 12 PASS successfullyParsed is true 11 13 12 14 TEST COMPLETE 13 Mouse moved to (30, 127)14 PASS Select did not receive wheel events.15 15 -
trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-mainframe.html
r235893 r259121 5 5 .scrollable_region { 6 6 width: 680px; 7 }8 9 .table td, .table th {10 padding: 2px;11 }12 13 .table th {14 height: 20px;15 text-align: left;16 font-weight: strong;17 }18 19 .table tr:nth-child(odd) {20 background: #f3f3f3;21 7 } 22 8 … … 28 14 <script src="../../../resources/js-test-pre.js"></script> 29 15 <script> 30 function onLoad() { 31 setupTopLevel(); 32 } 33 </script> 34 </head> 35 <body onload="onLoad();"> 36 <script> 16 jsTestIsAsync = true; 37 17 38 var selectTarget; 39 var pageScrollPositionBefore; 40 var selectScrollPositionBefore; 41 var continueCount = 5; 18 var selectTarget; 19 var pageScrollPositionBefore; 20 var selectScrollPositionBefore; 42 21 43 function checkForScroll() { 22 function checkForScroll() 23 { 24 // The select should not have scrolled at all. 25 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 26 var selectScrollPositionAfter = selectTarget.scrollTop; 44 27 45 // The select should not have scrolled at all. 46 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 47 var selectScrollPositionAfter = selectTarget.scrollTop; 28 if (selectScrollPositionBefore != selectScrollPositionAfter) 29 testFailed("Select consumed wheel events."); 30 else 31 testPassed("Select did not receive wheel events."); 48 32 49 //debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore);50 //debug("Page after: " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter);33 finishJSTest(); 34 } 51 35 52 if (selectScrollPositionBefore != selectScrollPositionAfter) 53 testFailed("Select consumed wheel events."); 54 else 55 testPassed("Select did not receive wheel events."); 36 function scrollTest() 37 { 38 pageScrollPositionBefore = document.scrollingElement.scrollTop; 56 39 57 testRunner.notifyDone(); 58 } 40 selectTarget = document.getElementById('target'); 59 41 60 function scrollTest() { 61 // See where our IFrame lives: 62 pageScrollPositionBefore = document.scrollingElement.scrollTop; 42 selectScrollPositionBefore = selectTarget.scrollTop; 63 43 64 selectTarget = document.getElementById('target'); 44 // Scroll the #source until we reach the #target. 45 var startPosX = Math.round(selectTarget.offsetLeft) + 20; 46 var startPosY = Math.round(selectTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the iframe 47 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 48 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 65 49 66 selectScrollPositionBefore = selectTarget.scrollTop; 50 eventSender.monitorWheelEvents(); 51 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true); 52 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 53 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 54 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true); 55 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true); 56 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true); 57 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true); 58 eventSender.callAfterScrollingCompletes(checkForScroll); 59 } 67 60 68 // Scroll the #source until we reach the #target. 69 var startPosX = Math.round(selectTarget.offsetLeft) + 20; 70 var startPosY = Math.round(selectTarget.offsetTop) - 42; // Slightly more than one wheel scroll away from the IFrame 71 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 72 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 73 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true); 74 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 75 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 76 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true); 77 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true); 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true); 79 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true); 80 setTimeout(checkForScroll, 100); 81 } 61 function setupTopLevel() 62 { 63 description("Tests that a select doesn't consume wheel events when scroll is latched to main frame."); 82 64 83 function setupTopLevel() { 84 85 if (window.eventSender) { 86 testRunner.waitUntilDone(); 87 88 setTimeout(scrollTest, 1000); 89 } else { 65 if (window.eventSender) { 66 setTimeout(scrollTest, 0); 67 return; 68 } 69 90 70 var messageLocation = document.getElementById('parent'); 91 71 var message = document.createElement('div'); 92 message.innerHTML = "<p>T his test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>"93 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll down <br/>"94 + "past the selectTarget.< br/><br/>"95 + " You should not see the 'content21' label if this test is successful.</p>";72 message.innerHTML = "<p>To manually run this test, place the mouse pointer " 73 + "at the top of the page, and then use the mouse wheel or a two-finger swipe to scroll down " 74 + "past the selectTarget.</p>" 75 + "<p>You should not see the 'content21' label if this test is successful.</p>"; 96 76 messageLocation.appendChild(message); 77 finishJSTest(); 97 78 } 98 }99 79 100 </script> 80 window.addEventListener('load', () => { 81 setupTopLevel(); 82 }, false); 83 </script> 84 </head> 85 <body> 101 86 <div id="parent" style="height: 2000px; width: 2000px;"> 102 87 <div id="source" style="height: 100px; width: 500px;"> … … 132 117 </div> 133 118 <div id="console"></div> 134 <script>135 description("Tests that a select doesn't consume wheel events when scroll is latched to main frame.");136 </script>137 119 <script src="../../../resources/js-test-post.js"></script> 138 120 </body> -
trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-select-expected.txt
r188160 r259121 8 8 9 9 10 div display height = 111 11 Mouse moved to (30, 238) 12 PASS Page did not receive wheel events. 10 13 PASS successfullyParsed is true 11 14 12 15 TEST COMPLETE 13 div display height = 11114 Mouse moved to (30, 238)15 PASS Page did not receive wheel events.16 16 -
trunk/LayoutTests/fast/scrolling/latching/scroll-select-latched-select.html
r235893 r259121 24 24 background: #f3f3f3; 25 25 } 26 27 26 </style> 28 27 <script src="../../../resources/js-test-pre.js"></script> 29 28 <script> 30 function onLoad() { 31 setupTopLevel(); 32 } 29 jsTestIsAsync = true; 30 31 var selectTarget; 32 var pageScrollPositionBefore; 33 var selectScrollPositionBefore; 34 35 function checkForScroll() 36 { 37 // The page should not have scrolled at all. 38 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 39 var selectScrollPositionAfter = selectTarget.scrollTop; 40 41 if (pageScrollPositionBefore != pageScrollPositionAfter) 42 testFailed("Page received wheel events."); 43 else 44 testPassed("Page did not receive wheel events."); 45 46 finishJSTest(); 47 } 48 49 function scrollTest() 50 { 51 pageScrollPositionBefore = document.scrollingElement.scrollTop; 52 53 selectTarget = document.getElementById('target'); 54 selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100; 55 56 selectScrollPositionBefore = selectTarget.scrollTop; 57 58 // Scroll the #source until we reach the #target. 59 var startPosX = Math.round(selectTarget.offsetLeft) + 20; 60 debug("div display height = " + selectTarget.clientHeight); 61 var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) - 42; // One wheel turn before end. 62 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 63 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 64 65 eventSender.monitorWheelEvents(); 66 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true); 67 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 68 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 69 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true); 70 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true); 71 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true); 72 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true); 73 eventSender.callAfterScrollingCompletes(checkForScroll); 74 } 75 76 function setupTopLevel() { 77 78 if (window.eventSender) { 79 setTimeout(scrollTest, 0); 80 return; 81 } 82 83 var messageLocation = document.getElementById('parent'); 84 var message = document.createElement('div'); 85 message.innerHTML = "<p>To manually test it, place the mouse pointer " 86 + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger " 87 + "swipe to scroll through the rest of the select options.</p>" 88 + "<p>You should not see the page position change if this test is successful.</p>"; 89 messageLocation.appendChild(message); 90 finishJSTest(); 91 } 92 93 window.addEventListener('load', () => { 94 setupTopLevel(); 95 }, false); 33 96 </script> 34 97 </head> 35 <body onload="onLoad();"> 36 <script> 37 38 var selectTarget; 39 var pageScrollPositionBefore; 40 var selectScrollPositionBefore; 41 var continueCount = 5; 42 43 function checkForScroll() { 44 45 // The page should not have scrolled at all. 46 var pageScrollPositionAfter = document.scrollingElement.scrollTop; 47 var selectScrollPositionAfter = selectTarget.scrollTop; 48 49 //debug("Page before: " + pageScrollPositionBefore + ", select before: " + selectScrollPositionBefore); 50 //debug("Page after: " + pageScrollPositionAfter + ", select after: " + selectScrollPositionAfter); 51 52 if (pageScrollPositionBefore != pageScrollPositionAfter) 53 testFailed("Page received wheel events."); 54 else 55 testPassed("Page did not receive wheel events."); 56 57 testRunner.notifyDone(); 58 } 59 60 function scrollTest() { 61 // See where our IFrame lives: 62 pageScrollPositionBefore = document.scrollingElement.scrollTop; 63 64 selectTarget = document.getElementById('target'); 65 selectTarget.scrollTop = selectTarget.scrollHeight - selectTarget.clientHeight - 100; 66 67 selectScrollPositionBefore = selectTarget.scrollTop; 68 69 // Scroll the #source until we reach the #target. 70 var startPosX = Math.round(selectTarget.offsetLeft) + 20; 71 debug("div display height = " + selectTarget.clientHeight); 72 var startPosY = Math.round(selectTarget.offsetTop) + Math.round(selectTarget.clientHeight) - 42; // One wheel turn before end. 73 eventSender.mouseMoveTo(startPosX, startPosY); // Make sure we are just outside the iFrame 74 debug("Mouse moved to (" + startPosX + ", " + startPosY + ")"); 75 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none', true); 76 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 77 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none', true); 78 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none', true); 79 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin', true); 80 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue', true); 81 eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end', true); 82 setTimeout(checkForScroll, 100); 83 } 84 85 function setupTopLevel() { 86 87 if (window.eventSender) { 88 testRunner.dumpAsText(true); 89 testRunner.waitUntilDone(); 90 91 setTimeout(scrollTest, 1000); 92 } else { 93 var messageLocation = document.getElementById('parent'); 94 var message = document.createElement('div'); 95 message.innerHTML = "<p>This test is better run under DumpRenderTree. To manually test it, place the mouse pointer<br/>" 96 + "inside the select box, and scroll near (but not AT) the bottom of the range. Use the mouse wheel or a two-finger<br/>" 97 + "swipe to scroll through the rest of the select options.<br/><br/>" 98 + "You should not see the page position change if this test is successful.</p>"; 99 messageLocation.appendChild(message); 100 } 101 } 102 103 </script> 98 <body> 104 99 <div id="parent" style="height: 2000px; width: 2000px;"> 105 100 <div id="source" style="height: 100px; width: 500px;"> -
trunk/LayoutTests/platform/mac-wk2/TestExpectations
r259120 r259121 795 795 webkit.org/b/183869 [ HighSierra+ ] media/modern-media-controls/seek-backward-support/seek-backward-support.html [ Pass Failure ] 796 796 797 webkit.org/b/183879 [ Debug ] fast/scrolling/latching/scroll-div-no-latching.html [ Pass Failure ]798 799 797 webkit.org/b/183860 [ Sierra Release ] http/wpt/service-workers/third-party-registration.html [ Pass Failure ] 800 798 … … 920 918 webkit.org/b/207060 imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html [ Pass Failure ] 921 919 922 webkit.org/b/207063 fast/scrolling/latching/scroll-div-with-nested-nonscrollable-iframe.html [ Pass Failure ]923 924 920 webkit.org/b/207078 webgpu/whlsl/textures-sample-level.html [ Pass ImageOnlyFailure Crash ] 925 921 … … 948 944 webkit.org/b/206718 inspector/canvas/shaderProgram-add-remove-webgl2.html [ Pass Crash ] 949 945 950 webkit.org/b/207209 946 webkit.org/b/207209 inspector/heap/getPreview.html [ Pass Failure Timeout ] 951 947 952 948 webkit.org/b/207222 webgpu/whlsl/zero-initialize-values-2.html [ Pass ImageOnlyFailure ] … … 995 991 996 992 webkit.org/b/207728 [ Release ] accessibility/press-targets-center-point.html [ Pass Failure ] 997 998 webkit.org/b/207732 fast/scrolling/latching/iframe_in_iframe.html [ Pass Failure ]999 993 1000 994 webkit.org/b/206699 http/tests/media/now-playing-info.html [ Pass Failure ]
Note: See TracChangeset
for help on using the changeset viewer.