test_bug1120705.html (3200B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test for Bug 1120705</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script src="/tests/SimpleTest/EventUtils.js"></script> 7 <script type="text/javascript" src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 9 </head> 10 <body> 11 12 <p id="display"></p> 13 <select id="sel"> 14 <option value="1">1</option> 15 <option value="2">2</option> 16 <option value="3">3</option> 17 <option value="4">4</option> 18 <option value="5">5</option> 19 <option value="6">6</option> 20 <option value="7">7</option> 21 <option value="8">8</option> 22 <option value="9">9</option> 23 <option value="10">10</option> 24 <option value="11">11</option> 25 <option value="12">12</option> 26 <option value="13">13</option> 27 <option value="14">14</option> 28 <option value="15">15</option> 29 <option value="16">16</option> 30 <option value="17">17</option> 31 <option value="18">18</option> 32 <option value="19">19</option> 33 <option value="20">20</option> 34 </select> 35 36 <pre id="test"> 37 <script class="testbody" type="text/javascript"> 38 39 40 function clickDownButton() { 41 var sel = document.getElementById("sel"); 42 var scrollbar_width = sel.offsetWidth - sel.clientWidth; 43 synthesizeMouse(sel, 44 sel.offsetWidth - scrollbar_width / 2, 45 sel.offsetHeight - scrollbar_width / 2, 46 { type: "mousedown" }); 47 48 synthesizeMouse(sel, 49 sel.offsetWidth - scrollbar_width / 2, 50 sel.offsetHeight - scrollbar_width / 2, 51 { type: "mouseup" }); 52 } 53 54 function waitForScrollEvent(aWindow) { 55 return new Promise(resolve => { 56 aWindow.addEventListener("scroll", () => { SimpleTest.executeSoon(resolve); }, {once: true, capture: true}); 57 }); 58 } 59 60 SimpleTest.waitForExplicitFinish(); 61 62 63 addLoadEvent(function() { 64 SpecialPowers.pushPrefEnv({ 65 "set": [["general.smoothScroll", false], 66 ["toolkit.scrollbox.verticalScrollDistance", 3]]}, 67 async function() { 68 var sel = document.getElementById("sel"); 69 sel.size = 2; 70 sel.scrollTo(0, 0); 71 await waitToClearOutAnyPotentialScrolls(window); 72 is(sel.scrollTop, 0, "sanity check that we start scrolling from 0"); 73 let waitForScrolling = waitForScrollEvent(window); 74 clickDownButton(); 75 await waitForScrolling; 76 var restricted_top = sel.scrollTop; 77 isnot(restricted_top, 0, 78 "Expected to scroll when clicking scrollbar button"); 79 sel.size = 10; 80 sel.scrollTo(0, 0); 81 await waitToClearOutAnyPotentialScrolls(window); 82 is(sel.scrollTop, 0, "sanity check that we start scrolling from 0"); 83 waitForScrolling = waitForScrollEvent(window); 84 clickDownButton(); 85 await waitForScrolling; 86 isnot(sel.scrollTop, 0, 87 "Expected to scroll when clicking scrollbar button"); 88 isnot(sel.scrollTop, restricted_top, 89 "Scrollbar button scrolling should be limited by page size"); 90 SimpleTest.finish(); 91 }); 92 }); 93 </script> 94 </pre> 95 </body> 96 97 </html>