summaryrefslogtreecommitdiffstats
path: root/toolkit/content/tests/chrome/test_mousescroll.xul
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/tests/chrome/test_mousescroll.xul')
-rw-r--r--toolkit/content/tests/chrome/test_mousescroll.xul274
1 files changed, 0 insertions, 274 deletions
diff --git a/toolkit/content/tests/chrome/test_mousescroll.xul b/toolkit/content/tests/chrome/test_mousescroll.xul
deleted file mode 100644
index 91ccf5683..000000000
--- a/toolkit/content/tests/chrome/test_mousescroll.xul
+++ /dev/null
@@ -1,274 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=378028
--->
-<window title="Mozilla Bug 378028"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"/>
-
- <!-- test results are displayed in the html:body -->
- <body xmlns="http://www.w3.org/1999/xhtml">
- <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=378028"
- target="_blank">Mozilla Bug 378028</a>
- </body>
-
- <!-- richlistbox currently has no way of giving us a defined number of
- rows, so we just choose an arbitrary height limit that should give
- us plenty of vertical scrollability -->
- <richlistbox id="richlistbox" style="height:50px;">
- <richlistitem id="richlistbox_item0" hidden="true"><label value="Item 0"/></richlistitem>
- <richlistitem id="richlistbox_item1"><label value="Item 1"/></richlistitem>
- <richlistitem id="richlistbox_item2"><label value="Item 2"/></richlistitem>
- <richlistitem id="richlistbox_item3"><label value="Item 3"/></richlistitem>
- <richlistitem id="richlistbox_item4"><label value="Item 4"/></richlistitem>
- <richlistitem id="richlistbox_item5"><label value="Item 5"/></richlistitem>
- <richlistitem id="richlistbox_item6"><label value="Item 6"/></richlistitem>
- <richlistitem id="richlistbox_item7"><label value="Item 7"/></richlistitem>
- <richlistitem id="richlistbox_item8"><label value="Item 8"/></richlistitem>
- </richlistbox>
-
- <listbox id="listbox" rows="2">
- <listitem id="listbox_item0" label="Item 0" hidden="true"/>
- <listitem id="listbox_item1" label="Item 1"/>
- <listitem id="listbox_item2" label="Item 2"/>
- <listitem id="listbox_item3" label="Item 3"/>
- <listitem id="listbox_item4" label="Item 4"/>
- <listitem id="listbox_item5" label="Item 5"/>
- <listitem id="listbox_item6" label="Item 6"/>
- <listitem id="listbox_item7" label="Item 7"/>
- <listitem id="listbox_item8" label="Item 8"/>
- </listbox>
-
- <box orient="horizontal">
- <arrowscrollbox id="hscrollbox" clicktoscroll="true" orient="horizontal"
- smoothscroll="false" style="max-width:80px;" flex="1">
- <hbox style="width:40px; height:20px; background:black;" hidden="true"/>
- <hbox style="width:40px; height:20px; background:white;"/>
- <hbox style="width:40px; height:20px; background:black;"/>
- <hbox style="width:40px; height:20px; background:white;"/>
- <hbox style="width:40px; height:20px; background:black;"/>
- <hbox style="width:40px; height:20px; background:white;"/>
- <hbox style="width:40px; height:20px; background:black;"/>
- <hbox style="width:40px; height:20px; background:white;"/>
- <hbox style="width:40px; height:20px; background:black;"/>
- </arrowscrollbox>
- </box>
-
- <arrowscrollbox id="vscrollbox" clicktoscroll="true" orient="vertical"
- smoothscroll="false" style="max-height:80px;" flex="1">
- <vbox style="width:100px; height:40px; background:black;" hidden="true"/>
- <vbox style="width:100px; height:40px; background:white;"/>
- <vbox style="width:100px; height:40px; background:black;"/>
- <vbox style="width:100px; height:40px; background:white;"/>
- <vbox style="width:100px; height:40px; background:black;"/>
- <vbox style="width:100px; height:40px; background:white;"/>
- <vbox style="width:100px; height:40px; background:black;"/>
- <vbox style="width:100px; height:40px; background:white;"/>
- <vbox style="width:100px; height:40px; background:black;"/>
- <vbox style="width:100px; height:40px; background:white;"/>
- <vbox style="width:100px; height:40px; background:black;"/>
- </arrowscrollbox>
-
- <!-- test code goes here -->
- <script type="application/javascript"><![CDATA[
-
-/** Test for Bug 378028 **/
-/* and for Bug 350471 **/
-var smoothScrollPref = "general.smoothScroll";
-SpecialPowers.setBoolPref(smoothScrollPref, false);
-SimpleTest.waitForExplicitFinish();
-
-const deltaModes = [
- WheelEvent.DOM_DELTA_PIXEL, // 0
- WheelEvent.DOM_DELTA_LINE, // 1
- WheelEvent.DOM_DELTA_PAGE // 2
-];
-
-function testListbox(id)
-{
- var listbox = document.getElementById(id);
-
- function helper(aStart, aDelta, aIntDelta, aDeltaMode)
- {
- listbox.scrollToIndex(aStart);
- synthesizeWheel(listbox, 10, 10,
- { deltaMode: aDeltaMode, deltaY: aDelta,
- lineOrPageDeltaY: aIntDelta });
- var expectedPos = aStart;
- if (aIntDelta) {
- if (aDeltaMode == WheelEvent.DOM_DELTA_PAGE) {
- expectedPos += aIntDelta > 0 ? listbox.getNumberOfVisibleRows() :
- -listbox.getNumberOfVisibleRows();
- } else {
- expectedPos += aIntDelta;
- }
- }
- is(listbox.getIndexOfFirstVisibleRow(), expectedPos,
- "testListbox(" + id + "): vertical, starting " + aStart +
- " delta " + aDelta + " lineOrPageDelta " + aIntDelta +
- " aDeltaMode " + aDeltaMode);
-
- // Check that horizontal scrolling has no effect
- listbox.scrollToIndex(aStart);
- synthesizeWheel(listbox, 10, 10,
- { deltaMode: aDeltaMode, deltaX: aDelta,
- lineOrPageDeltaX: aIntDelta });
- is(listbox.getIndexOfFirstVisibleRow(), aStart,
- "testListbox(" + id + "): horizontal, starting " + aStart +
- " delta " + aDelta + " lineOrPageDelta " + aIntDelta +
- " aDeltaMode " + aDeltaMode);
- }
- deltaModes.forEach(function(aDeltaMode) {
- let delta = (aDeltaMode == WheelEvent.DOM_DELTA_PIXEL) ? 5.0 : 0.3;
- helper(5, -delta, 0, aDeltaMode);
- helper(5, -delta, -1, aDeltaMode);
- helper(5, delta, 1, aDeltaMode);
- helper(5, delta, 0, aDeltaMode);
- });
-}
-
-function testRichListbox(id, andThen)
-{
- var listbox = document.getElementById(id);
- var tests = [];
-
- var winUtils = SpecialPowers.getDOMWindowUtils(window);
- winUtils.advanceTimeAndRefresh(100);
-
- function nextTest() {
- var [aStart, aDelta, aIntDelta, aDeltaMode] = tests.shift();
- listbox.scrollToIndex(aStart);
-
- let event = {
- deltaMode: aDeltaMode,
- deltaY: aDelta,
- lineOrPageDeltaY: aIntDelta
- };
- sendWheelAndPaint(listbox, 10, 10, event, function() {
- var change = listbox.getIndexOfFirstVisibleRow() - aStart;
- var direction = (change > 0) - (change < 0);
- var expected = (aDelta > 0) - (aDelta < 0);
- is(direction, expected,
- "testRichListbox(" + id + "): vertical, starting " + aStart +
- " delta " + aDelta + " lineOrPageDeltaY " + aIntDelta +
- " aDeltaMode " + aDeltaMode);
-
- // Check that horizontal scrolling has no effect
- let event = {
- deltaMode: aDeltaMode,
- deltaX: aDelta,
- lineOrPageDeltaX: aIntDelta
- };
-
- listbox.scrollToIndex(aStart);
- sendWheelAndPaint(listbox, 10, 10, event, function() {
- is(listbox.getIndexOfFirstVisibleRow(), aStart,
- "testRichListbox(" + id + "): horizontal, starting " + aStart +
- " delta " + aDelta + " lineOrPageDeltaX " + aIntDelta +
- " aDeltaMode " + aDeltaMode);
-
- if (!tests.length) {
- winUtils.restoreNormalRefresh();
- andThen();
- return;
- }
-
- nextTest();
- });
- });
- }
-
- // richlistbox currently uses native XUL scrolling, so the "line"
- // amounts don't necessarily correspond 1-to-1 with listbox items. So
- // we just check that scrolling up/down scrolls in the right direction.
- deltaModes.forEach(function(aDeltaMode) {
- let delta = (aDeltaMode == WheelEvent.DOM_DELTA_PIXEL) ? 32.0 : 2.0;
- tests.push([5, -delta, -1, aDeltaMode]);
- tests.push([5, -delta, 0, aDeltaMode]);
- tests.push([5, delta, 1, aDeltaMode]);
- tests.push([5, delta, 0, aDeltaMode]);
- });
-
- nextTest();
-}
-
-function testArrowScrollbox(id)
-{
- var scrollbox = document.getElementById(id);
- var scrollBoxObject = scrollbox.scrollBoxObject;
- var orient = scrollbox.getAttribute("orient");
-
- function helper(aStart, aDelta, aDeltaMode, aExpected)
- {
- var lineOrPageDelta = (aDeltaMode == WheelEvent.DOM_DELTA_PIXEL) ? aDelta / 10 : aDelta;
- var orientIsHorizontal = (orient == "horizontal");
-
- scrollBoxObject.scrollTo(aStart, aStart);
-
- for (var i = orientIsHorizontal ? 2 : 0; i >= 0; i--) {
- synthesizeWheel(scrollbox, 5, 5,
- { deltaMode: aDeltaMode, deltaY: aDelta,
- lineOrPageDeltaY: lineOrPageDelta });
-
- var pos = orientIsHorizontal ? scrollBoxObject.positionX :
- scrollBoxObject.positionY;
-
- // Note, vertical mouse scrolling is allowed to scroll horizontal
- // arrowscrollboxes, because many users have no horizontal mouse scroll
- // capability
- let expected = !i ? aExpected : aStart;
- is(pos, expected,
- "testArrowScrollbox(" + id + "): vertical, starting " + aStart +
- " delta " + aDelta + " lineOrPageDelta " + lineOrPageDelta +
- " aDeltaMode " + aDeltaMode);
- }
-
- scrollBoxObject.scrollTo(aStart, aStart);
- for (var i = orientIsHorizontal ? 2 : 0; i >= 0; i--) {
- synthesizeWheel(scrollbox, 5, 5,
- { deltaMode: aDeltaMode, deltaX: aDelta,
- lineOrPageDeltaX: lineOrPageDelta });
- // horizontal mouse scrolling is never allowed to scroll vertical
- // arrowscrollboxes
- var pos = orientIsHorizontal ? scrollBoxObject.positionX :
- scrollBoxObject.positionY;
- let expected = (!i && orientIsHorizontal) ? aExpected : aStart;
- is(pos, expected,
- "testArrowScrollbox(" + id + "): horizontal, starting " + aStart +
- " delta " + aDelta + " lineOrPageDelta " + lineOrPageDelta +
- " aDeltaMode " + aDeltaMode);
- }
- }
-
- var scrolledWidth = scrollBoxObject.scrolledWidth;
- var scrolledHeight = scrollBoxObject.scrolledHeight;
- var scrollMaxX = scrolledWidth - scrollBoxObject.width;
- var scrollMaxY = scrolledHeight - scrollBoxObject.height;
- var scrollMax = orient == "horizontal" ? scrollMaxX : scrollMaxY;
-
- deltaModes.forEach(function(aDeltaMode) {
- helper(50, -1000, aDeltaMode, 0);
- helper(50, 1000, aDeltaMode, scrollMax);
- helper(50, 0, aDeltaMode, 50);
- helper(50, 0, aDeltaMode, 50);
- });
-}
-
-function runTests()
-{
- testRichListbox("richlistbox", function() {
- testListbox("listbox");
- testArrowScrollbox("hscrollbox");
- testArrowScrollbox("vscrollbox");
- SpecialPowers.clearUserPref(smoothScrollPref);
- SimpleTest.finish();
- });
-}
-
-window.onload = function() { setTimeout(runTests, 0); };
- ]]></script>
-</window>