Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android' OR os == 'mac' OR os == 'linux' && os_version == '18.04' OR os == 'linux' && os_version == '22.04'
- Manifest: layout/base/tests/mochitest.toml
<!DOCTYPE HTML>↩
<html>↩
<head>↩
<script src="/tests/SimpleTest/SimpleTest.js"></script>↩
<script src="/tests/SimpleTest/EventUtils.js"></script>↩
<script type="text/javascript" src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script>↩
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />↩
</head>↩
<body>↩
↩
<p id="display"></p>↩
<select id="sel">↩
<option value="1">1</option>↩
<option value="2">2</option>↩
<option value="3">3</option>↩
<option value="4">4</option>↩
<option value="5">5</option>↩
<option value="6">6</option>↩
<option value="7">7</option>↩
<option value="8">8</option>↩
<option value="9">9</option>↩
<option value="10">10</option>↩
<option value="11">11</option>↩
<option value="12">12</option>↩
<option value="13">13</option>↩
<option value="14">14</option>↩
<option value="15">15</option>↩
<option value="16">16</option>↩
<option value="17">17</option>↩
<option value="18">18</option>↩
<option value="19">19</option>↩
<option value="20">20</option>↩
</select>↩
↩
<pre id="test">↩
<script class="testbody" type="text/javascript">↩
↩
↩
function clickDownButton() {↩
var sel = document.getElementById("sel");↩
var scrollbar_width = sel.offsetWidth - sel.clientWidth;↩
synthesizeMouse(sel,↩
sel.offsetWidth - scrollbar_width / 2,↩
sel.offsetHeight - scrollbar_width / 2,↩
{ type: "mousedown" });↩
↩
synthesizeMouse(sel,↩
sel.offsetWidth - scrollbar_width / 2,↩
sel.offsetHeight - scrollbar_width / 2,↩
{ type: "mouseup" });↩
}↩
↩
function waitForScrollEvent(aWindow) {↩
return new Promise(resolve => {↩
aWindow.addEventListener("scroll", () => { SimpleTest.executeSoon(resolve); }, {once: true, capture: true});↩
});↩
}↩
↩
SimpleTest.waitForExplicitFinish();↩
↩
↩
addLoadEvent(function() {↩
SpecialPowers.pushPrefEnv({↩
"set": [["general.smoothScroll", false],↩
["toolkit.scrollbox.verticalScrollDistance", 3]]},↩
async function() {↩
var sel = document.getElementById("sel");↩
sel.size = 2;↩
sel.scrollTo(0, 0);↩
await waitToClearOutAnyPotentialScrolls(window);↩
is(sel.scrollTop, 0, "sanity check that we start scrolling from 0");↩
let waitForScrolling = waitForScrollEvent(window);↩
clickDownButton();↩
await waitForScrolling;↩
var restricted_top = sel.scrollTop;↩
isnot(restricted_top, 0,↩
"Expected to scroll when clicking scrollbar button");↩
sel.size = 10;↩
sel.scrollTo(0, 0);↩
await waitToClearOutAnyPotentialScrolls(window);↩
is(sel.scrollTop, 0, "sanity check that we start scrolling from 0");↩
waitForScrolling = waitForScrollEvent(window);↩
clickDownButton();↩
await waitForScrolling;↩
isnot(sel.scrollTop, 0,↩
"Expected to scroll when clicking scrollbar button");↩
isnot(sel.scrollTop, restricted_top,↩
"Scrollbar button scrolling should be limited by page size");↩
SimpleTest.finish();↩
});↩
});↩
</script>↩
</pre>↩
</body>↩
↩
</html>↩
↩