diff options
Diffstat (limited to 'dom/events/test/test_continuous_wheel_events.html')
-rw-r--r-- | dom/events/test/test_continuous_wheel_events.html | 3291 |
1 files changed, 3291 insertions, 0 deletions
diff --git a/dom/events/test/test_continuous_wheel_events.html b/dom/events/test/test_continuous_wheel_events.html new file mode 100644 index 0000000000..a922041449 --- /dev/null +++ b/dom/events/test/test_continuous_wheel_events.html @@ -0,0 +1,3291 @@ +<!DOCTYPE HTML> +<html style="font-size: 32px;"> +<head> + <title>Test for D3E WheelEvent</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script src="/tests/SimpleTest/EventUtils.js"></script> + <script src="/tests/SimpleTest/paint_listener.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body onload="bodyLoaded()"> +<p id="display"></p> +<div id="scrollable" style="font-family: 'Courier New', monospace; font-size: 18px; line-height: 1; overflow: auto; width: 200px; height: 200px;"> + <div id="scrolled" style="font-size: 64px; width: 5000px; height: 5000px;"> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text. Tere is a lot of text.<br> + </div> +</div> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script type="application/javascript"> + +var gScrollableElement; +var gScrolledElement; + +SimpleTest.waitForExplicitFinish(); +function bodyLoaded() { + gScrollableElement = document.getElementById("scrollable"); + gScrolledElement = document.getElementById("scrolled"); + runTests(); +} + +var gLineHeight = 0; +var gHorizontalLine = 0; +var gPageHeight = 0; +var gPageWidth = 0; + +function sendWheelAndWait(aX, aY, aEvent) +{ + sendWheelAndPaint(gScrollableElement, aX, aY, aEvent, continueTest); +} + +function* prepareScrollUnits() +{ + var result = -1; + function handler(aEvent) + { + result = aEvent.detail; + aEvent.preventDefault(); + } + window.addEventListener("MozMousePixelScroll", handler, { capture: true, passive: false }); + + yield sendWheelAndWait(10, 10, + { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaY: 1.0, lineOrPageDeltaY: 1 }); + gLineHeight = result; + ok(gLineHeight > 10 && gLineHeight < 25, "prepareScrollUnits: gLineHeight may be illegal value, got " + gLineHeight); + + result = -1; + yield sendWheelAndWait(10, 10, + { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, lineOrPageDeltaX: 1 }); + gHorizontalLine = result; + ok(gHorizontalLine > 5 && gHorizontalLine < 16, "prepareScrollUnits: gHorizontalLine may be illegal value, got " + gHorizontalLine); + + result = -1; + yield sendWheelAndWait(10, 10, + { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaY: 1.0, lineOrPageDeltaY: 1 }); + gPageHeight = result; + // XXX Cannot we know the actual scroll port size? + ok(gPageHeight >= 150 && gPageHeight <= 200, + "prepareScrollUnits: gPageHeight is strange value, got " + gPageHeight); + + result = -1; + yield sendWheelAndWait(10, 10, + { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, lineOrPageDeltaX: 1 }); + gPageWidth = result; + ok(gPageWidth >= 150 && gPageWidth <= 200, + "prepareScrollUnits: gPageWidth is strange value, got " + gPageWidth); + + window.removeEventListener("MozMousePixelScroll", handler, true); +} + +// Tests continuous trusted wheel events. Trusted wheel events should cause +// legacy mouse scroll events when its lineOrPageDelta value is not zero or +// accumulated delta values of pixel scroll events of pixel only device +// become over the line height. +function* testContinuousTrustedEvents() +{ + const kSynthesizedWheelEventTests = [ + { description: "Simple horizontal wheel event by pixels (16.0 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 16 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by pixels (16.0 - 1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 16 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by pixels (16.0 - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 16 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Simple vertical wheel event by pixels (16.0 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 16 } } + }, + { description: "Simple vertical wheel event by pixels (16.0 - 1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 16 } } + }, + { description: "Simple vertical wheel event by pixels (16.0 - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 16 } } + }, + + { description: "Simple z-direction wheel event by pixels (16.0 - 1)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 0.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 0.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Simple horizontal wheel event by pixels (-16.0 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -16 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by pixels (-16.0 - -1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -16 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by pixels (-16.0 - -1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -16 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Simple vertical wheel event by pixels (-16.0 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -16 } } + }, + { description: "Simple vertical wheel event by pixels (-16.0 - -1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -16 } } + }, + { description: "Simple vertical wheel event by pixels (-16.0 - -1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -16 } } + }, + + { description: "Simple z-direction wheel event by pixels (-16.0 - -1)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 0.0, deltaZ: -16.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 0.0, deltaZ: -16.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + // 3 scroll events per line, and legacy line scroll will be fired first. + { description: "Horizontal wheel event by pixels (5.3 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Horizontal wheel event by pixels (5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Vertical wheel event by pixels (5.3 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "Vertical wheel event by pixels (5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "Vertical wheel event by pixels (5.3 - 0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + + { description: "Horizontal wheel event by pixels (-5.3 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Horizontal wheel event by pixels (-5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Horizontal wheel event by pixels (-5.3 - 0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Vertical wheel event by pixels (-5.3 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "Vertical wheel event by pixels (-5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "Vertical wheel event by pixels (-5.3 - 0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + + // 3 scroll events per line, and legacy line scroll will be fired last. + { description: "Horizontal wheel event by pixels (5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Horizontal wheel event by pixels (5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Horizontal wheel event by pixels (5.3 - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Vertical wheel event by pixels (5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "Vertical wheel event by pixels (5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "Vertical wheel event by pixels (5.3 - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + + { description: "Horizontal wheel event by pixels (-5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Horizontal wheel event by pixels (-5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Horizontal wheel event by pixels (-5.3 - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Vertical wheel event by pixels (-5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "Vertical wheel event by pixels (-5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "Vertical wheel event by pixels (-5.3 - -1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + + // Oblique scroll. + { description: "To bottom-right wheel event by pixels (5.3/5.2 - 1/1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "To bottom-right wheel event by pixels (5.3/5.2 - 0/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "To bottom-right wheel event by pixels (5.3/5.2 - 0/0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + + { description: "To bottom-left wheel event by pixels (-5.3/5.3 - -1/1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "To bottom-left wheel event by pixels (-5.3/5.3 - 0/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "To bottom-left wheel event by pixels (-5.3/5.3 - 0/0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + + { description: "To top-left wheel event by pixels (-5.2/-5.3 - -1/-1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "To top-left wheel event by pixels (-5.2/-5.3 - 0/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "To top-left wheel event by pixels (-5.2/-5.3 - 0/0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + + { description: "To top-right wheel event by pixels (5.3/-5.3 - 1/-1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "To top-right wheel event by pixels (5.3/-5.3 - 0/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + + // Pixel scroll only device's test. the lineOrPageDelta values should be computed + // by ESM. When changing the direction for each delta value, it should be + // reset at that time. + { description: "Pixel only device's horizontal wheel event by pixels (5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Pixel only device's horizontal wheel event by pixels (5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Pixel only device's horizontal wheel event by pixels (5.3 - 0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #4", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 1.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 1) #5", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 5 } } + }, + + { description: "Pixel only device's horizontal wheel event by pixels (-5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Pixel only device's horizontal wheel event by pixels (-5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Pixel only device's horizontal wheel event by pixels (-5.3 - 0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #4", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -1.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } } + }, + { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - -1) #5", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -5 } } + }, + + // ESM should reset an accumulated delta value only when the direction of it + // is changed but shouldn't reset the other delta. + { description: "Pixel only device's bottom-right wheel event by pixels (5.3/4.9 - 0/0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: 4 } } + }, + { description: "Pixel only device's bottom-right wheel event by pixels (5.3/4.9 - 0/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: 4 } } + }, + { description: "Pixel only device's bottom-left wheel event by pixels (-5.3/4.9 - 0/0) #4", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: 4 } } + }, + // the accumulated X should be 0 here, but Y shouldn't be reset. + { description: "Pixel only device's bottom-right wheel event by pixels (5.3/4.9 - 0/0) #5", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 5.3, deltaY: 1.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 5.3, deltaY: 1.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 5 }, + vertical: { expected: true, preventDefault: false, detail: 1 } } + }, + + { description: "Pixel only device's top-left wheel event by pixels (-5.3/-4.9 - 0/0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: -4 } } + }, + { description: "Pixel only device's top-left wheel event by pixels (-5.3/-4.9 - 0/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: -4 } } + }, + { description: "Pixel only device's bottom-left wheel event by pixels (-5.3/4.9 - 0/0) #4", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: 4 } } + }, + // the accumulated Y should be 0 here, but X shouldn't be reset. + { description: "Pixel only device's top-left wheel event by pixels (-5.3/-4.9 - 0/0) #5", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -5 }, + vertical: { expected: true, preventDefault: false, detail: -4 } } + }, + + // Simple line scroll tests. + { description: "Simple horizontal wheel event by lines (1.0 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gHorizontalLine }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by lines (1.0 - 1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gHorizontalLine }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Simple horizontal wheel event by lines (-1.0 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -gHorizontalLine }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by lines (-1.0 - -1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -gHorizontalLine }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Simple vertical wheel event by lines (-1.0 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -gLineHeight } } + }, + { description: "Simple vertical wheel event by lines (-1.0 - -1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -gLineHeight } } + }, + + { description: "Simple vertical wheel event by lines (1.0 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: gLineHeight } } + }, + { description: "Simple vertical wheel event by lines (1.0 - 1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: gLineHeight } } + }, + + // high resolution line scroll + { description: "High resolution horizontal wheel event by lines (0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by lines (0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by lines (0.333... - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "High resolution horizontal wheel event by lines (-0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -Math.floor(gHorizontalLine / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by lines (-0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -Math.floor(gHorizontalLine / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by lines (-0.333... - -1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -Math.floor(gHorizontalLine / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "High resolution vertical wheel event by lines (0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight / 3) } } + }, + { description: "High resolution vertical wheel event by lines (0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight / 3) } } + }, + { description: "High resolution vertical wheel event by lines (0.333... - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight / 3) } } + }, + + { description: "High resolution vertical wheel event by lines (-0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -Math.floor(gLineHeight / 3) } } + }, + { description: "High resolution vertical wheel event by lines (-0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -Math.floor(gLineHeight / 3) } } + }, + { description: "High resolution vertical wheel event by lines (-0.333... - -1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -Math.floor(gLineHeight / 3) } } + }, + + // Oblique line scroll + { description: "Oblique wheel event by lines (-1.0/2.0 - -1/2)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 2, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: true, preventDefault: false, detail: 2 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -gHorizontalLine }, + vertical: { expected: true, preventDefault: false, detail: gLineHeight * 2 } } + }, + + { description: "Oblique wheel event by lines (1.0/-2.0 - 1/-2)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: -2, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: -2 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: false, detail: -gLineHeight * 2 } } + }, + + { description: "High resolution oblique wheel event by lines (0.5/0.333.../-0.8 - 0/0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine / 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight / 3) } } + }, + { description: "High resolution oblique wheel event by lines (0.5/0.333.../-0.8 - 1/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine / 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight / 3) } } + }, + { description: "High resolution oblique wheel event by lines (0.5/0.333.../-0.8 - 0/1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine / 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight / 3) } } + }, + + // Simple page scroll tests. + { description: "Simple horizontal wheel event by pages (1.0 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gPageWidth }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by pages (1.0 - 1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gPageWidth }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Simple horizontal wheel event by pages (-1.0 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -gPageWidth }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "Simple horizontal wheel event by pages (-1.0 - -1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -gPageWidth }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "Simple vertical wheel event by pages (-1.0 - -1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -gPageHeight } } + }, + { description: "Simple vertical wheel event by pages (-1.0 - -1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -gPageHeight } } + }, + + { description: "Simple vertical wheel event by pages (1.0 - 1) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: gPageHeight } } + }, + { description: "Simple vertical wheel event by pages (1.0 - 1) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: gPageHeight } } + }, + + // high resolution page scroll + { description: "High resolution horizontal wheel event by pages (0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by pages (0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by pages (0.333... - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "High resolution horizontal wheel event by pages (-0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -Math.floor(gPageWidth / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by pages (-0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -Math.floor(gPageWidth / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + { description: "High resolution horizontal wheel event by pages (-0.333... - -1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -Math.floor(gPageWidth / 3) }, + vertical: { expected: false, preventDefault: false, detail: 0 } } + }, + + { description: "High resolution vertical wheel event by pages (0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight / 3) } } + }, + { description: "High resolution vertical wheel event by pages (0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight / 3) } } + }, + { description: "High resolution vertical wheel event by pages (0.333... - 1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight / 3) } } + }, + + { description: "High resolution vertical wheel event by pages (-0.333... - 0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -Math.floor(gPageHeight / 3) } } + }, + { description: "High resolution vertical wheel event by pages (-0.333... - 0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -Math.floor(gPageHeight / 3) } } + }, + { description: "High resolution vertical wheel event by pages (-0.333... - -1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -Math.floor(gPageHeight / 3) } } + }, + + // Oblique page scroll + { description: "Oblique wheel event by pages (-1.0/2.0 - -1/2)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: -1, lineOrPageDeltaY: 2, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: -gPageWidth }, + vertical: { expected: true, preventDefault: false, detail: gPageHeight * 2 } } + }, + + { description: "Oblique wheel event by pages (1.0/-2.0 - 1/-2)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: -2, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gPageWidth }, + vertical: { expected: true, preventDefault: false, detail: -gPageHeight * 2 } } + }, + + { description: "High resolution oblique wheel event by pages (0.5/0.333.../-0.8 - 0/0) #1", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth / 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight / 3) } } + }, + { description: "High resolution oblique wheel event by pages (0.5/0.333.../-0.8 - 1/0) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth / 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight / 3) } } + }, + { description: "High resolution oblique wheel event by pages (0.5/0.333.../-0.8 - 0/1) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false, + lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth / 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight / 3) } } + }, + + // preventDefault() shouldn't prevent other legacy events. + { description: "preventDefault() shouldn't prevent other legacy events (pixel)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: true, detail: 1 }, + vertical: { expected: true, preventDefault: true, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: 16 }, + vertical: { expected: true, preventDefault: true, detail: 16 } }, + }, + { description: "preventDefault() shouldn't prevent other legacy events (line)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: true, detail: 1 }, + vertical: { expected: true, preventDefault: true, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: true, detail: gLineHeight } }, + }, + { description: "preventDefault() shouldn't prevent other legacy events (page)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: true, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: true, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gPageWidth }, + vertical: { expected: true, preventDefault: true, detail: gPageHeight } }, + }, + + // If wheel event is consumed by preventDefault(), legacy events are not necessary. + { description: "If wheel event is consumed by preventDefault(), legacy events are not necessary (pixel)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: true, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + }, + { description: "If wheel event is consumed by preventDefault(), legacy events are not necessary (line)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: true, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + }, + { description: "If wheel event is consumed by preventDefault(), legacy events are not necessary (page)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: true, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + }, + + // modifier key state tests + { description: "modifier key tests (shift, pixel)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: true, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: 16 }, + vertical: { expected: true, preventDefault: true, detail: 16 } }, + }, + { description: "modifier key tests (shift, line)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: true, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: true, detail: gLineHeight } }, + }, + { description: "modifier key tests (shift, page)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: true, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gPageWidth }, + vertical: { expected: true, preventDefault: true, detail: gPageHeight } }, + }, + + { description: "modifier key tests (ctrl, pixel)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: true, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: 16 }, + vertical: { expected: true, preventDefault: true, detail: 16 } }, + }, + { description: "modifier key tests (ctrl, line)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: true, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: true, detail: gLineHeight } }, + }, + { description: "modifier key tests (ctrl, page)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: true, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gPageWidth }, + vertical: { expected: true, preventDefault: true, detail: gPageHeight } }, + }, + + { description: "modifier key tests (alt, pixel)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: true, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: 16 }, + vertical: { expected: true, preventDefault: true, detail: 16 } }, + }, + { description: "modifier key tests (alt, line)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: true, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: true, detail: gLineHeight } }, + }, + { description: "modifier key tests without content checking mode (alt, line)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: true, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + skipDeltaModeCheck: true, + deltaX: gHorizontalLine, + deltaY: gLineHeight, + deltaZ: Math.max(gHorizontalLine, gLineHeight), + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: true, detail: gLineHeight } }, + }, + { description: "modifier key tests (alt, page)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: true, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gPageWidth }, + vertical: { expected: true, preventDefault: true, detail: gPageHeight } }, + }, + + { description: "modifier key tests (meta, pixel)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: true }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: 16 }, + vertical: { expected: true, preventDefault: true, detail: 16 } }, + }, + { description: "modifier key tests (meta, line)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: true }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: true, detail: gLineHeight } }, + }, + { description: "modifier key tests (meta, page)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: true, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: true, detail: gPageWidth }, + vertical: { expected: true, preventDefault: true, detail: gPageHeight } }, + }, + + // Momentum scroll should cause legacy events. + { description: "Momentum scroll should cause legacy events (pixel, not momentum)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 16 }, + vertical: { expected: true, preventDefault: false, detail: 16 } }, + }, + { description: "Momentum scroll should cause legacy events (pixel, momentum)", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: true, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: 16 }, + vertical: { expected: true, preventDefault: false, detail: 16 } }, + }, + { description: "Momentum scroll should cause legacy events (line, not momentum)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: false, detail: gLineHeight } }, + }, + { description: "Momentum scroll should cause legacy events (line, momentum)", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: true, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gHorizontalLine }, + vertical: { expected: true, preventDefault: false, detail: gLineHeight } }, + }, + { description: "Momentum scroll should cause legacy events (page, not momentum)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gPageWidth }, + vertical: { expected: true, preventDefault: false, detail: gPageHeight } }, + }, + { description: "Momentum scroll should cause legacy events (page, momentum)", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: true, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: gPageWidth }, + vertical: { expected: true, preventDefault: false, detail: gPageHeight } }, + }, + + // Tests for accumulation delta when delta_multiplier_is customized. + { description: "lineOrPageDelta should be recomputed by ESM (pixel) #1", + prepare () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 200], + ["mousewheel.default.delta_multiplier_y", 300]]}, + continueTest); + }, + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: gHorizontalLine / 4, deltaY: gLineHeight / 8, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: gHorizontalLine / 4 * 2, deltaY: gLineHeight / 8 * 3, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine / 4 * 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight / 8 * 3) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (pixel) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: gHorizontalLine / 4 + 1, deltaY: gLineHeight / 8 + 1, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: (gHorizontalLine / 4 + 1) * 2, deltaY: (gLineHeight / 8 + 1) * 3, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor((gHorizontalLine / 4 + 1) * 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor((gLineHeight / 8 + 1) * 3) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (pixel) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: gHorizontalLine / 4 + 1, deltaY: gLineHeight / 8 + 1, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: (gHorizontalLine / 4 + 1) * 2, deltaY: (gLineHeight / 8 + 1) * 3, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor((gHorizontalLine / 4 + 1) * 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor((gLineHeight / 8 + 1) * 3) } }, + finished () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 100]]}, + continueTest); + }, + }, + + { description: "lineOrPageDelta should be recomputed by ESM (pixel, negative, shift) #1", + prepare () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.with_shift.delta_multiplier_x", 200], + ["mousewheel.with_shift.delta_multiplier_y", 300]]}, + continueTest); + }, + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -gHorizontalLine / 4, deltaY: -gLineHeight / 8, deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: true, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -gHorizontalLine / 4 * 2, deltaY: -gLineHeight / 8 * 3, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(-gHorizontalLine / 4 * 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.ceil(-gLineHeight / 8 * 3) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (pixel, negative, shift) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -(gHorizontalLine / 4 + 1), deltaY: -(gLineHeight / 8 + 1), deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: true, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -(gHorizontalLine / 4 + 1) * 2, deltaY: -(gLineHeight / 8 + 1) * 3, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(-(gHorizontalLine / 4 + 1) * 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.ceil(-(gLineHeight / 8 + 1) * 3) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (pixel, negative, shift) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaX: -(gHorizontalLine / 4 + 1), deltaY: -(gLineHeight / 8 + 1), deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: true, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -(gHorizontalLine / 4 + 1) * 2, deltaY: -(gLineHeight / 8 + 1) * 3, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: -1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(-(gHorizontalLine / 4 + 1) * 2) }, + vertical: { expected: true, preventDefault: false, detail: Math.ceil(-(gLineHeight / 8 + 1) * 3) } }, + finished () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.with_shift.delta_multiplier_x", 100], + ["mousewheel.with_shift.delta_multiplier_y", 100]]}, + continueTest); + }, + }, + + { description: "lineOrPageDelta should be recomputed by ESM (line) #1", + prepare () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 200], + ["mousewheel.default.delta_multiplier_y", 100]]}, + continueTest); + }, + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.3, deltaY: 0.4, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.6, deltaY: 0.4, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine * 0.6) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (line) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.3, deltaY: 0.4, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.6, deltaY: 0.4, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: 1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine * 0.6) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (line) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: 0.3, deltaY: 0.4, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.6, deltaY: 0.4, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gHorizontalLine * 0.6) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } }, + finished () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 100]]}, + continueTest); + }, + }, + + { description: "lineOrPageDelta should be recomputed by ESM (line, negative) #1", + prepare () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 200], + ["mousewheel.default.delta_multiplier_y", -100]]}, + continueTest); + }, + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -0.3, deltaY: -0.4, deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -0.6, deltaY: 0.4, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(gHorizontalLine * -0.6) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (line, negative) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -0.3, deltaY: -0.4, deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -0.6, deltaY: 0.4, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: -1 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(gHorizontalLine * -0.6) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (line, negative) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaX: -0.3, deltaY: -0.4, deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -0.6, deltaY: 0.4, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: 1 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(gHorizontalLine * -0.6) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } }, + finished () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 100]]}, + continueTest); + }, + }, + + { description: "lineOrPageDelta should be recomputed by ESM (page) #1", + prepare () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 200]]}, + continueTest); + }, + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.3, deltaY: 0.4, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.3, deltaY: 0.8, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth * 0.3) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight * 0.8) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (page) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.3, deltaY: 0.4, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.3, deltaY: 0.8, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth * 0.3) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight * 0.8) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (page) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: 0.4, deltaY: 0.4, deltaZ: 0, + lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: 0.4, deltaY: 0.8, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.floor(gPageWidth * 0.4) }, + vertical: { expected: true, preventDefault: false, detail: Math.floor(gPageHeight * 0.8) } }, + finished () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 100]]}, + continueTest); + }, + }, + + { description: "lineOrPageDelta should be recomputed by ESM (page, negative) #1", + prepare () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 200]]}, + continueTest); + }, + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -0.3, deltaY: -0.4, deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -0.3, deltaY: -0.8, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: false, preventDefault: false, detail: 0 } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(gPageWidth * -0.3) }, + vertical: { expected: true, preventDefault: false, detail: Math.ceil(gPageHeight * -0.8) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (page, negative) #2", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -0.3, deltaY: -0.4, deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -0.3, deltaY: -0.8, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: false, preventDefault: false, detail: 0 }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(gPageWidth * -0.3) }, + vertical: { expected: true, preventDefault: false, detail: Math.ceil(gPageHeight * -0.8) } }, + }, + { description: "lineOrPageDelta should be recomputed by ESM (page, negative) #3", + event: { deltaMode: WheelEvent.DOM_DELTA_PAGE, + deltaX: -0.4, deltaY: -0.4, deltaZ: 0, + lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false, + isCustomizedByPrefs: false, + shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + wheel: { + expected: true, preventDefault: false, + deltaX: -0.4, deltaY: -0.8, deltaZ: 0 + }, + DOMMouseScroll: { + horizontal: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP }, + vertical: { expected: true, preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } }, + MozMousePixelScroll: { + horizontal: { expected: true, preventDefault: false, detail: Math.ceil(gPageWidth * -0.4) }, + vertical: { expected: true, preventDefault: false, detail: Math.ceil(gPageHeight * -0.8) } }, + finished () { + SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 100]]}, + continueTest); + }, + }, + ]; + + var currentWheelEventTest; + var calledHandlers = { wheel: false, + DOMMouseScroll: { horizontal: false, vertical: false }, + MozMousePixelScroll: { horizontal: false, vertical: false } }; + + function wheelEventHandler(aEvent) + { + var description = "testContinuousTrustedEvents, "; + description += currentWheelEventTest.description + ": wheel event "; + + ok(!calledHandlers.wheel, + description + "was fired twice or more"); + calledHandlers.wheel = true; + + is(aEvent.target, gScrolledElement, + description + "target was invalid"); + if (!currentWheelEventTest.wheel.skipDeltaModeCheck) { + is(aEvent.deltaMode, currentWheelEventTest.event.deltaMode, + description + "deltaMode was invalid"); + } + is(SpecialPowers.wrap(aEvent).deltaMode, currentWheelEventTest.event.deltaMode, + description + "deltaMode is raw value from privileged script"); + for (let prop of ["deltaX", "deltaY", "deltaZ"]) { + is(aEvent[prop], currentWheelEventTest.wheel[prop], + description + prop + " was invalid"); + if (currentWheelEventTest.wheel.skipDeltaModeCheck) { + is(aEvent.deltaMode, WheelEvent.DOM_DELTA_PIXEL, + description + "deltaMode should become pixels for line scrolling if unchecked by content") + if (aEvent[prop] != 0) { + isnot(aEvent[prop], SpecialPowers.wrap(aEvent)[prop], + description + "should keep returning raw value for privileged script"); + } + } + } + is(aEvent.shiftKey, currentWheelEventTest.event.shiftKey, + description + "shiftKey was invalid"); + is(aEvent.ctrlKey, currentWheelEventTest.event.ctrlKey, + description + "ctrlKey was invalid"); + is(aEvent.altKey, currentWheelEventTest.event.altKey, + description + "shiftKey was invalid"); + is(aEvent.metaKey, currentWheelEventTest.event.metaKey, + description + "metaKey was invalid"); + + ok(!aEvent.defaultPrevented, + description + "defaultPrevented should be false"); + if (currentWheelEventTest.wheel.preventDefault) { + aEvent.preventDefault(); + ok(aEvent.defaultPrevented, + description + "defaultPrevented should be true"); + } + } + + function legacyEventHandler(aEvent) + { + var description = "testContinuousTrustedEvents, "; + description += currentWheelEventTest.description + ": " + aEvent.type + " event "; + + if (aEvent.axis != MouseScrollEvent.HORIZONTAL_AXIS && + aEvent.axis != MouseScrollEvent.VERTICAL_AXIS) { + ok(false, + description + "had invalid axis (" + aEvent.axis + ")"); + return; + } + + var isHorizontal = (aEvent.axis == MouseScrollEvent.HORIZONTAL_AXIS); + + description += isHorizontal ? "(horizontal) " : "(vertical) "; + + var isScrollEvent = (aEvent.type == "DOMMouseScroll"); + var expectedEvent = + isScrollEvent ? currentWheelEventTest.DOMMouseScroll : + currentWheelEventTest.MozMousePixelScroll; + var expected = + isHorizontal ? expectedEvent.horizontal : expectedEvent.vertical; + + if (aEvent.type == "DOMMouseScroll") { + if (isHorizontal) { + ok(!calledHandlers.DOMMouseScroll.horizontal, + description + "was fired twice or more"); + calledHandlers.DOMMouseScroll.horizontal = true; + } else { + ok(!calledHandlers.DOMMouseScroll.vertical, + description + "was fired twice or more"); + calledHandlers.DOMMouseScroll.vertical = true; + } + } else { + if (isHorizontal) { + ok(!calledHandlers.MozMousePixelScroll.horizontal, + description + "was fired twice or more"); + calledHandlers.MozMousePixelScroll.horizontal = true; + } else { + ok(!calledHandlers.MozMousePixelScroll.vertical, + description + "was fired twice or more"); + calledHandlers.MozMousePixelScroll.vertical = true; + } + } + + is(aEvent.target, gScrolledElement, + description + "target was invalid"); + is(aEvent.detail, expected.detail, + description + "detail was invalid"); + + is(aEvent.shiftKey, currentWheelEventTest.event.shiftKey, + description + "shiftKey was invalid"); + is(aEvent.ctrlKey, currentWheelEventTest.event.ctrlKey, + description + "ctrlKey was invalid"); + is(aEvent.altKey, currentWheelEventTest.event.altKey, + description + "shiftKey was invalid"); + is(aEvent.metaKey, currentWheelEventTest.event.metaKey, + description + "metaKey was invalid"); + + var expectedDefaultPrevented = + isScrollEvent ? false : + isHorizontal ? currentWheelEventTest.DOMMouseScroll.horizontal.preventDefault : + currentWheelEventTest.DOMMouseScroll.vertical.preventDefault; + is(aEvent.defaultPrevented, expectedDefaultPrevented, + description + "defaultPrevented should be " + expectedDefaultPrevented); + + if (expected.preventDefault) { + aEvent.preventDefault(); + ok(aEvent.defaultPrevented, + description + "defaultPrevented should be true"); + } + } + + window.addEventListener("wheel", wheelEventHandler, { capture: true, passive: false }); + window.addEventListener("DOMMouseScroll", legacyEventHandler, { capture: true, passive: false }); + window.addEventListener("MozMousePixelScroll", legacyEventHandler, { capture: true, passive: false }); + + for (var i = 0; i < kSynthesizedWheelEventTests.length; i++) { + gScrollableElement.scrollTop = gScrollableElement.scrollBottom = 1000; + + currentWheelEventTest = kSynthesizedWheelEventTests[i]; + + if (currentWheelEventTest.prepare) { + yield currentWheelEventTest.prepare(); + } + + yield sendWheelAndWait(10, 10, currentWheelEventTest.event); + + if (currentWheelEventTest.finished) { + yield currentWheelEventTest.finished(); + } + + var description = "testContinuousTrustedEvents, " + + currentWheelEventTest.description + ": "; + is(calledHandlers.wheel, currentWheelEventTest.wheel.expected, + description + "wheel event was fired or not fired"); + is(calledHandlers.DOMMouseScroll.horizontal, + currentWheelEventTest.DOMMouseScroll.horizontal.expected, + description + "horizontal DOMMouseScroll event was fired or not fired"); + is(calledHandlers.DOMMouseScroll.vertical, + currentWheelEventTest.DOMMouseScroll.vertical.expected, + description + "vertical DOMMouseScroll event was fired or not fired"); + is(calledHandlers.MozMousePixelScroll.horizontal, + currentWheelEventTest.MozMousePixelScroll.horizontal.expected, + description + "horizontal MozMousePixelScroll event was fired or not fired"); + is(calledHandlers.MozMousePixelScroll.vertical, + currentWheelEventTest.MozMousePixelScroll.vertical.expected, + description + "vertical MozMousePixelScroll event was fired or not fired"); + + calledHandlers = { wheel: false, + DOMMouseScroll: { horizontal: false, vertical: false }, + MozMousePixelScroll: { horizontal: false, vertical: false } }; + } + + window.removeEventListener("wheel", wheelEventHandler, true); + window.removeEventListener("DOMMouseScroll", legacyEventHandler, true); + window.removeEventListener("MozMousePixelScroll", legacyEventHandler, true); +} + +var gTestContinuation = null; + +function continueTest() +{ + if (!gTestContinuation) { + gTestContinuation = testBody(); + } + var ret = gTestContinuation.next(); + if (ret.done) { + SimpleTest.finish(); + } +} + +function* testBody() +{ + yield* prepareScrollUnits(); + yield* testContinuousTrustedEvents(); +} + +function runTests() +{ + SpecialPowers.pushPrefEnv({"set": [ + // FIXME(emilio): This test is broken in HiDPI, unclear if + // MozMousePixelScroll is not properly converting to CSS pixels, or + // whether sendWheelAndWait expectes device rather than CSS pixels, or + // something else. + ["layout.css.devPixelsPerPx", 1.0], + + ["dom.event.wheel-deltaMode-lines.disabled", true], + + ["mousewheel.system_scroll_override.enabled", false], + + ["mousewheel.transaction.timeout", 100000], + ["mousewheel.default.delta_multiplier_x", 100], + ["mousewheel.default.delta_multiplier_y", 100], + ["mousewheel.default.delta_multiplier_z", 100], + ["mousewheel.with_alt.delta_multiplier_x", 100], + ["mousewheel.with_alt.delta_multiplier_y", 100], + ["mousewheel.with_alt.delta_multiplier_z", 100], + ["mousewheel.with_control.delta_multiplier_x", 100], + ["mousewheel.with_control.delta_multiplier_y", 100], + ["mousewheel.with_control.delta_multiplier_z", 100], + ["mousewheel.with_meta.delta_multiplier_x", 100], + ["mousewheel.with_meta.delta_multiplier_y", 100], + ["mousewheel.with_meta.delta_multiplier_z", 100], + ["mousewheel.with_shift.delta_multiplier_x", 100], + ["mousewheel.with_shift.delta_multiplier_y", 100], + ["mousewheel.with_shift.delta_multiplier_z", 100], + + ["test.events.async.enabled", true] + ]}, continueTest); +} +</script> +</pre> +</body> +</html> |