diff options
Diffstat (limited to 'toolkit/content/tests/chrome/test_mousescroll.xul')
-rw-r--r-- | toolkit/content/tests/chrome/test_mousescroll.xul | 274 |
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> |