tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_continuous_wheel_events.html (171846B)


      1 <!DOCTYPE HTML>
      2 <html style="font-size: 32px;">
      3 <head>
      4  <title>Test for D3E WheelEvent</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script src="/tests/SimpleTest/EventUtils.js"></script>
      7  <script src="/tests/SimpleTest/paint_listener.js"></script>
      8  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      9 </head>
     10 <body onload="bodyLoaded()">
     11 <p id="display"></p>
     12 <div id="scrollable" style="font-family: 'Courier New', monospace; font-size: 18px; line-height: 1; overflow: auto; width: 200px; height: 200px;">
     13  <div id="scrolled" style="font-size: 64px; width: 5000px; height: 5000px;">
     14    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>
     15    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>
     16    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>
     17    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>
     18    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>
     19    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>
     20    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>
     21    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>
     22    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>
     23    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>
     24    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>
     25    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>
     26    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>
     27    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>
     28    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>
     29    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>
     30    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>
     31    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>
     32    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>
     33    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>
     34    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>
     35    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>
     36    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>
     37    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>
     38    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>
     39    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>
     40  </div>
     41 </div>
     42 <div id="content" style="display: none">
     43 
     44 </div>
     45 <pre id="test">
     46 <script type="application/javascript">
     47 
     48 var gScrollableElement;
     49 var gScrolledElement;
     50 
     51 SimpleTest.waitForExplicitFinish();
     52 function bodyLoaded() {
     53  gScrollableElement = document.getElementById("scrollable");
     54  gScrolledElement = document.getElementById("scrolled");
     55  runTests();
     56 }
     57 
     58 var gLineHeight = 0;
     59 var gHorizontalLine = 0;
     60 var gPageHeight = 0;
     61 var gPageWidth  = 0;
     62 
     63 function sendWheelAndWait(aX, aY, aEvent)
     64 {
     65  sendWheelAndPaint(gScrollableElement, aX, aY, aEvent, continueTest);
     66 }
     67 
     68 function* prepareScrollUnits()
     69 {
     70  var result = -1;
     71  function handler(aEvent)
     72  {
     73    result = aEvent.detail;
     74    aEvent.preventDefault();
     75  }
     76  window.addEventListener("MozMousePixelScroll", handler, { capture: true, passive: false });
     77 
     78  yield sendWheelAndWait(10, 10,
     79                         { deltaMode: WheelEvent.DOM_DELTA_LINE,
     80                           deltaY: 1.0, lineOrPageDeltaY: 1 });
     81  gLineHeight = result;
     82  ok(gLineHeight > 10 && gLineHeight < 25, "prepareScrollUnits: gLineHeight may be illegal value, got " + gLineHeight);
     83 
     84  result = -1;
     85  yield sendWheelAndWait(10, 10,
     86                         { deltaMode: WheelEvent.DOM_DELTA_LINE,
     87                           deltaX: 1.0, lineOrPageDeltaX: 1 });
     88  gHorizontalLine = result;
     89  ok(gHorizontalLine > 5 && gHorizontalLine < 16, "prepareScrollUnits: gHorizontalLine may be illegal value, got " + gHorizontalLine);
     90 
     91  result = -1;
     92  yield sendWheelAndWait(10, 10,
     93                         { deltaMode: WheelEvent.DOM_DELTA_PAGE,
     94                           deltaY: 1.0, lineOrPageDeltaY: 1 });
     95  gPageHeight = result;
     96  // XXX Cannot we know the actual scroll port size?
     97  ok(gPageHeight >= 150 && gPageHeight <= 200,
     98     "prepareScrollUnits: gPageHeight is strange value, got " + gPageHeight);
     99 
    100  result = -1;
    101  yield sendWheelAndWait(10, 10,
    102                         { deltaMode: WheelEvent.DOM_DELTA_PAGE,
    103                           deltaX: 1.0, lineOrPageDeltaX: 1 });
    104  gPageWidth = result;
    105  ok(gPageWidth >= 150 && gPageWidth <= 200,
    106     "prepareScrollUnits: gPageWidth is strange value, got " + gPageWidth);
    107 
    108  window.removeEventListener("MozMousePixelScroll", handler, true);
    109 }
    110 
    111 // Tests continuous trusted wheel events. Trusted wheel events should cause
    112 // legacy mouse scroll events when its lineOrPageDelta value is not zero or
    113 // accumulated delta values of pixel scroll events of pixel only device
    114 // become over the line height.
    115 function* testContinuousTrustedEvents()
    116 {
    117  const kSynthesizedWheelEventTests = [
    118    { description: "Simple horizontal wheel event by pixels (16.0 - 1) #1",
    119      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    120               deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    121               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    122               isCustomizedByPrefs: false,
    123               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    124      wheel: {
    125        expected: true, preventDefault: false,
    126        deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0
    127      },
    128      DOMMouseScroll: {
    129        horizontal: { expected: true,  preventDefault: false, detail: 1 },
    130        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    131      MozMousePixelScroll: {
    132        horizontal: { expected: true,  preventDefault: false, detail: 16 },
    133        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    134    },
    135    { description: "Simple horizontal wheel event by pixels (16.0 - 1) #2",
    136      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    137               deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    138               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    139               isCustomizedByPrefs: false,
    140               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    141      wheel: {
    142        expected: true, preventDefault: false,
    143        deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0
    144      },
    145      DOMMouseScroll: {
    146        horizontal: { expected: true,  preventDefault: false, detail: 1 },
    147        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    148      MozMousePixelScroll: {
    149        horizontal: { expected: true,  preventDefault: false, detail: 16 },
    150        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    151    },
    152    { description: "Simple horizontal wheel event by pixels (16.0 - 1) #3",
    153      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    154               deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    155               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    156               isCustomizedByPrefs: false,
    157               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    158      wheel: {
    159        expected: true, preventDefault: false,
    160        deltaX: 16.0, deltaY: 0.0, deltaZ: 0.0
    161      },
    162      DOMMouseScroll: {
    163        horizontal: { expected: true,  preventDefault: false, detail: 1 },
    164        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    165      MozMousePixelScroll: {
    166        horizontal: { expected: true,  preventDefault: false, detail: 16 },
    167        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    168    },
    169 
    170    { description: "Simple vertical wheel event by pixels (16.0 - 1) #1",
    171      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    172               deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0, isMomentum: false,
    173               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
    174               isCustomizedByPrefs: false,
    175               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    176      wheel: {
    177        expected: true, preventDefault: false,
    178        deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0
    179      },
    180      DOMMouseScroll: {
    181        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    182        vertical:   { expected: true,   preventDefault: false, detail: 1 } },
    183      MozMousePixelScroll: {
    184        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    185        vertical:   { expected: true,   preventDefault: false, detail: 16 } }
    186    },
    187    { description: "Simple vertical wheel event by pixels (16.0 - 1) #2",
    188      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    189               deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0, isMomentum: false,
    190               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
    191               isCustomizedByPrefs: false,
    192               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    193      wheel: {
    194        expected: true, preventDefault: false,
    195        deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0
    196      },
    197      DOMMouseScroll: {
    198        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    199        vertical:   { expected: true,   preventDefault: false, detail: 1 } },
    200      MozMousePixelScroll: {
    201        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    202        vertical:   { expected: true,   preventDefault: false, detail: 16 } }
    203    },
    204    { description: "Simple vertical wheel event by pixels (16.0 - 1) #3",
    205      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    206               deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0, isMomentum: false,
    207               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
    208               isCustomizedByPrefs: false,
    209               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    210      wheel: {
    211        expected: true, preventDefault: false,
    212        deltaX: 0.0, deltaY: 16.0, deltaZ: 0.0
    213      },
    214      DOMMouseScroll: {
    215        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    216        vertical:   { expected: true,   preventDefault: false, detail: 1 } },
    217      MozMousePixelScroll: {
    218        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    219        vertical:   { expected: true,   preventDefault: false, detail: 16 } }
    220    },
    221 
    222    { description: "Simple z-direction wheel event by pixels (16.0 - 1)",
    223      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    224               deltaX: 0.0, deltaY: 0.0, deltaZ: 16.0, isMomentum: false,
    225               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    226               isCustomizedByPrefs: false,
    227               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    228      wheel: {
    229        expected: true, preventDefault: false,
    230        deltaX: 0.0, deltaY: 0.0, deltaZ: 16.0
    231      },
    232      DOMMouseScroll: {
    233        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    234        vertical:   { expected: false,  preventDefault: false, detail: 0 } },
    235      MozMousePixelScroll: {
    236        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    237        vertical:   { expected: false,  preventDefault: false, detail: 0 } }
    238    },
    239 
    240    { description: "Simple horizontal wheel event by pixels (-16.0 - -1) #1",
    241      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    242               deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    243               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    244               isCustomizedByPrefs: false,
    245               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    246      wheel: {
    247        expected: true, preventDefault: false,
    248        deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0
    249      },
    250      DOMMouseScroll: {
    251        horizontal: { expected: true,  preventDefault: false, detail: -1 },
    252        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    253      MozMousePixelScroll: {
    254        horizontal: { expected: true,  preventDefault: false, detail: -16 },
    255        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    256    },
    257    { description: "Simple horizontal wheel event by pixels (-16.0 - -1) #2",
    258      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    259               deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    260               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    261               isCustomizedByPrefs: false,
    262               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    263      wheel: {
    264        expected: true, preventDefault: false,
    265        deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0
    266      },
    267      DOMMouseScroll: {
    268        horizontal: { expected: true,  preventDefault: false, detail: -1 },
    269        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    270      MozMousePixelScroll: {
    271        horizontal: { expected: true,  preventDefault: false, detail: -16 },
    272        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    273    },
    274    { description: "Simple horizontal wheel event by pixels (-16.0 - -1) #3",
    275      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    276               deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    277               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    278               isCustomizedByPrefs: false,
    279               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    280      wheel: {
    281        expected: true, preventDefault: false,
    282        deltaX: -16.0, deltaY: 0.0, deltaZ: 0.0
    283      },
    284      DOMMouseScroll: {
    285        horizontal: { expected: true,  preventDefault: false, detail: -1 },
    286        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    287      MozMousePixelScroll: {
    288        horizontal: { expected: true,  preventDefault: false, detail: -16 },
    289        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    290    },
    291 
    292    { description: "Simple vertical wheel event by pixels (-16.0 - -1) #1",
    293      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    294               deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0, isMomentum: false,
    295               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
    296               isCustomizedByPrefs: false,
    297               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    298      wheel: {
    299        expected: true, preventDefault: false,
    300        deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0
    301      },
    302      DOMMouseScroll: {
    303        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    304        vertical:   { expected: true,   preventDefault: false, detail: -1 } },
    305      MozMousePixelScroll: {
    306        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    307        vertical:   { expected: true,   preventDefault: false, detail: -16 } }
    308    },
    309    { description: "Simple vertical wheel event by pixels (-16.0 - -1) #2",
    310      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    311               deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0, isMomentum: false,
    312               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
    313               isCustomizedByPrefs: false,
    314               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    315      wheel: {
    316        expected: true, preventDefault: false,
    317        deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0
    318      },
    319      DOMMouseScroll: {
    320        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    321        vertical:   { expected: true,   preventDefault: false, detail: -1 } },
    322      MozMousePixelScroll: {
    323        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    324        vertical:   { expected: true,   preventDefault: false, detail: -16 } }
    325    },
    326    { description: "Simple vertical wheel event by pixels (-16.0 - -1) #3",
    327      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    328               deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0, isMomentum: false,
    329               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
    330               isCustomizedByPrefs: false,
    331               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    332      wheel: {
    333        expected: true, preventDefault: false,
    334        deltaX: 0.0, deltaY: -16.0, deltaZ: 0.0
    335      },
    336      DOMMouseScroll: {
    337        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    338        vertical:   { expected: true,   preventDefault: false, detail: -1 } },
    339      MozMousePixelScroll: {
    340        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    341        vertical:   { expected: true,   preventDefault: false, detail: -16 } }
    342    },
    343 
    344    { description: "Simple z-direction wheel event by pixels (-16.0 - -1)",
    345      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    346               deltaX: 0.0, deltaY: 0.0, deltaZ: -16.0, isMomentum: false,
    347               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    348               isCustomizedByPrefs: false,
    349               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    350      wheel: {
    351        expected: true, preventDefault: false,
    352        deltaX: 0.0, deltaY: 0.0, deltaZ: -16.0
    353      },
    354      DOMMouseScroll: {
    355        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    356        vertical:   { expected: false,  preventDefault: false, detail: 0 } },
    357      MozMousePixelScroll: {
    358        horizontal: { expected: false,  preventDefault: false, detail: 0 },
    359        vertical:   { expected: false,  preventDefault: false, detail: 0 } }
    360    },
    361 
    362    // 3 scroll events per line, and legacy line scroll will be fired first.
    363    { description: "Horizontal wheel event by pixels (5.3 - 1) #1",
    364      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    365               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    366               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    367               isCustomizedByPrefs: false,
    368               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    369      wheel: {
    370        expected: true, preventDefault: false,
    371        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
    372      },
    373      DOMMouseScroll: {
    374        horizontal: { expected: true,  preventDefault: false, detail: 1 },
    375        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    376      MozMousePixelScroll: {
    377        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    378        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    379    },
    380    { description: "Horizontal wheel event by pixels (5.3 - 0) #2",
    381      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    382               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    383               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    384               isCustomizedByPrefs: false,
    385               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    386      wheel: {
    387        expected: true, preventDefault: false,
    388        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
    389      },
    390      DOMMouseScroll: {
    391        horizontal: { expected: false, preventDefault: false, detail: 1 },
    392        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    393      MozMousePixelScroll: {
    394        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    395        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    396    },
    397    { description: "Vertical wheel event by pixels (5.3 - 1) #1",
    398      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    399               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    400               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
    401               isCustomizedByPrefs: false,
    402               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    403      wheel: {
    404        expected: true, preventDefault: false,
    405        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
    406      },
    407      DOMMouseScroll: {
    408        horizontal: { expected: false, preventDefault: false, detail: 0 },
    409        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
    410      MozMousePixelScroll: {
    411        horizontal: { expected: false, preventDefault: false, detail: 0 },
    412        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    413    },
    414    { description: "Vertical wheel event by pixels (5.3 - 0) #2",
    415      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    416               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    417               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    418               isCustomizedByPrefs: false,
    419               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    420      wheel: {
    421        expected: true, preventDefault: false,
    422        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
    423      },
    424      DOMMouseScroll: {
    425        horizontal: { expected: false, preventDefault: false, detail: 0 },
    426        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    427      MozMousePixelScroll: {
    428        horizontal: { expected: false, preventDefault: false, detail: 0 },
    429        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    430    },
    431    { description: "Vertical wheel event by pixels (5.3 - 0) #3",
    432      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    433               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    434               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    435               isCustomizedByPrefs: false,
    436               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    437      wheel: {
    438        expected: true, preventDefault: false,
    439        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
    440      },
    441      DOMMouseScroll: {
    442        horizontal: { expected: false, preventDefault: false, detail: 0 },
    443        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    444      MozMousePixelScroll: {
    445        horizontal: { expected: false, preventDefault: false, detail: 0 },
    446        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    447    },
    448 
    449    { description: "Horizontal wheel event by pixels (-5.3 - -1) #1",
    450      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    451               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    452               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    453               isCustomizedByPrefs: false,
    454               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    455      wheel: {
    456        expected: true, preventDefault: false,
    457        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
    458      },
    459      DOMMouseScroll: {
    460        horizontal: { expected: true,  preventDefault: false, detail: -1 },
    461        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    462      MozMousePixelScroll: {
    463        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    464        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    465    },
    466    { description: "Horizontal wheel event by pixels (-5.3 - 0) #2",
    467      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    468               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    469               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    470               isCustomizedByPrefs: false,
    471               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    472      wheel: {
    473        expected: true, preventDefault: false,
    474        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
    475      },
    476      DOMMouseScroll: {
    477        horizontal: { expected: false, preventDefault: false, detail: 0 },
    478        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    479      MozMousePixelScroll: {
    480        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    481        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    482    },
    483    { description: "Horizontal wheel event by pixels (-5.3 - 0) #3",
    484      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    485               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    486               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    487               isCustomizedByPrefs: false,
    488               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    489      wheel: {
    490        expected: true, preventDefault: false,
    491        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
    492      },
    493      DOMMouseScroll: {
    494        horizontal: { expected: false, preventDefault: false, detail: 0 },
    495        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    496      MozMousePixelScroll: {
    497        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    498        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    499    },
    500 
    501    { description: "Vertical wheel event by pixels (-5.3 - -1) #1",
    502      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    503               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    504               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
    505               isCustomizedByPrefs: false,
    506               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    507      wheel: {
    508        expected: true, preventDefault: false,
    509        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
    510      },
    511      DOMMouseScroll: {
    512        horizontal: { expected: false, preventDefault: false, detail: 0 },
    513        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
    514      MozMousePixelScroll: {
    515        horizontal: { expected: false, preventDefault: false, detail: 0 },
    516        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    517    },
    518    { description: "Vertical wheel event by pixels (-5.3 - 0) #2",
    519      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    520               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    521               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    522               isCustomizedByPrefs: false,
    523               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    524      wheel: {
    525        expected: true, preventDefault: false,
    526        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
    527      },
    528      DOMMouseScroll: {
    529        horizontal: { expected: false, preventDefault: false, detail: 0 },
    530        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    531      MozMousePixelScroll: {
    532        horizontal: { expected: false, preventDefault: false, detail: 0 },
    533        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    534    },
    535    { description: "Vertical wheel event by pixels (-5.3 - 0) #3",
    536      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    537               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    538               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    539               isCustomizedByPrefs: false,
    540               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    541      wheel: {
    542        expected: true, preventDefault: false,
    543        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
    544      },
    545      DOMMouseScroll: {
    546        horizontal: { expected: false, preventDefault: false, detail: 0 },
    547        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    548      MozMousePixelScroll: {
    549        horizontal: { expected: false, preventDefault: false, detail: 0 },
    550        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    551    },
    552 
    553    // 3 scroll events per line, and legacy line scroll will be fired last.
    554    { description: "Horizontal wheel event by pixels (5.3 - 0) #1",
    555      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    556               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    557               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    558               isCustomizedByPrefs: false,
    559               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    560      wheel: {
    561        expected: true, preventDefault: false,
    562        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
    563      },
    564      DOMMouseScroll: {
    565        horizontal: { expected: false, preventDefault: false, detail: 0 },
    566        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    567      MozMousePixelScroll: {
    568        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    569        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    570    },
    571    { description: "Horizontal wheel event by pixels (5.3 - 0) #2",
    572      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    573               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    574               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    575               isCustomizedByPrefs: false,
    576               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    577      wheel: {
    578        expected: true, preventDefault: false,
    579        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
    580      },
    581      DOMMouseScroll: {
    582        horizontal: { expected: false, preventDefault: false, detail: 0 },
    583        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    584      MozMousePixelScroll: {
    585        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    586        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    587    },
    588    { description: "Horizontal wheel event by pixels (5.3 - 1) #3",
    589      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    590               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    591               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    592               isCustomizedByPrefs: false,
    593               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    594      wheel: {
    595        expected: true, preventDefault: false,
    596        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
    597      },
    598      DOMMouseScroll: {
    599        horizontal: { expected: true,  preventDefault: false, detail: 1 },
    600        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    601      MozMousePixelScroll: {
    602        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    603        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    604    },
    605 
    606    { description: "Vertical wheel event by pixels (5.3 - 0) #1",
    607      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    608               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    609               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    610               isCustomizedByPrefs: false,
    611               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    612      wheel: {
    613        expected: true, preventDefault: false,
    614        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
    615      },
    616      DOMMouseScroll: {
    617        horizontal: { expected: false, preventDefault: false, detail: 0 },
    618        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    619      MozMousePixelScroll: {
    620        horizontal: { expected: false, preventDefault: false, detail: 0 },
    621        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    622    },
    623    { description: "Vertical wheel event by pixels (5.3 - 0) #2",
    624      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    625               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    626               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    627               isCustomizedByPrefs: false,
    628               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    629      wheel: {
    630        expected: true, preventDefault: false,
    631        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
    632      },
    633      DOMMouseScroll: {
    634        horizontal: { expected: false, preventDefault: false, detail: 0 },
    635        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    636      MozMousePixelScroll: {
    637        horizontal: { expected: false, preventDefault: false, detail: 0 },
    638        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    639    },
    640    { description: "Vertical wheel event by pixels (5.3 - 1) #3",
    641      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    642               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    643               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
    644               isCustomizedByPrefs: false,
    645               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    646      wheel: {
    647        expected: true, preventDefault: false,
    648        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
    649      },
    650      DOMMouseScroll: {
    651        horizontal: { expected: false, preventDefault: false, detail: 0 },
    652        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
    653      MozMousePixelScroll: {
    654        horizontal: { expected: false, preventDefault: false, detail: 0 },
    655        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    656    },
    657 
    658    { description: "Horizontal wheel event by pixels (-5.3 - 0) #1",
    659      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    660               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    661               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    662               isCustomizedByPrefs: false,
    663               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    664      wheel: {
    665        expected: true, preventDefault: false,
    666        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
    667      },
    668      DOMMouseScroll: {
    669        horizontal: { expected: false, preventDefault: false, detail: 0 },
    670        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    671      MozMousePixelScroll: {
    672        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    673        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    674    },
    675    { description: "Horizontal wheel event by pixels (-5.3 - 0) #2",
    676      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    677               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    678               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    679               isCustomizedByPrefs: false,
    680               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    681      wheel: {
    682        expected: true, preventDefault: false,
    683        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
    684      },
    685      DOMMouseScroll: {
    686        horizontal: { expected: false, preventDefault: false, detail: 0 },
    687        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    688      MozMousePixelScroll: {
    689        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    690        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    691    },
    692    { description: "Horizontal wheel event by pixels (-5.3 - 1) #3",
    693      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    694               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    695               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    696               isCustomizedByPrefs: false,
    697               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    698      wheel: {
    699        expected: true, preventDefault: false,
    700        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
    701      },
    702      DOMMouseScroll: {
    703        horizontal: { expected: true,  preventDefault: false, detail: -1 },
    704        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    705      MozMousePixelScroll: {
    706        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    707        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    708    },
    709 
    710    { description: "Vertical wheel event by pixels (-5.3 - 0) #1",
    711      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    712               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    713               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    714               isCustomizedByPrefs: false,
    715               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    716      wheel: {
    717        expected: true, preventDefault: false,
    718        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
    719      },
    720      DOMMouseScroll: {
    721        horizontal: { expected: false, preventDefault: false, detail: 0 },
    722        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    723      MozMousePixelScroll: {
    724        horizontal: { expected: false, preventDefault: false, detail: 0 },
    725        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    726    },
    727    { description: "Vertical wheel event by pixels (-5.3 - 0) #2",
    728      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    729               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    730               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    731               isCustomizedByPrefs: false,
    732               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    733      wheel: {
    734        expected: true, preventDefault: false,
    735        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
    736      },
    737      DOMMouseScroll: {
    738        horizontal: { expected: false, preventDefault: false, detail: 0 },
    739        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    740      MozMousePixelScroll: {
    741        horizontal: { expected: false, preventDefault: false, detail: 0 },
    742        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    743    },
    744    { description: "Vertical wheel event by pixels (-5.3 - -1) #3",
    745      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    746               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    747               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
    748               isCustomizedByPrefs: false,
    749               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    750      wheel: {
    751        expected: true, preventDefault: false,
    752        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
    753      },
    754      DOMMouseScroll: {
    755        horizontal: { expected: false, preventDefault: false, detail: 0 },
    756        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
    757      MozMousePixelScroll: {
    758        horizontal: { expected: false, preventDefault: false, detail: 0 },
    759        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    760    },
    761 
    762    // Oblique scroll.
    763    { description: "To bottom-right wheel event by pixels (5.3/5.2 - 1/1) #1",
    764      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    765               deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0, isMomentum: false,
    766               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
    767               isCustomizedByPrefs: false,
    768               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    769      wheel: {
    770        expected: true, preventDefault: false,
    771        deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0
    772      },
    773      DOMMouseScroll: {
    774        horizontal: { expected: true,  preventDefault: false, detail: 1 },
    775        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
    776      MozMousePixelScroll: {
    777        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    778        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    779    },
    780    { description: "To bottom-right wheel event by pixels (5.3/5.2 - 0/0) #2",
    781      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    782               deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0, isMomentum: false,
    783               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    784               isCustomizedByPrefs: false,
    785               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    786      wheel: {
    787        expected: true, preventDefault: false,
    788        deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0
    789      },
    790      DOMMouseScroll: {
    791        horizontal: { expected: false, preventDefault: false, detail: 0 },
    792        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    793      MozMousePixelScroll: {
    794        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    795        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    796    },
    797    { description: "To bottom-right wheel event by pixels (5.3/5.2 - 0/0) #3",
    798      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    799               deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0, isMomentum: false,
    800               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    801               isCustomizedByPrefs: false,
    802               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    803      wheel: {
    804        expected: true, preventDefault: false,
    805        deltaX: 5.3, deltaY: 5.2, deltaZ: 0.0
    806      },
    807      DOMMouseScroll: {
    808        horizontal: { expected: false, preventDefault: false, detail: 0 },
    809        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    810      MozMousePixelScroll: {
    811        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    812        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
    813    },
    814 
    815    { description: "To bottom-left wheel event by pixels (-5.3/5.3 - -1/1) #1",
    816      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    817               deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    818               lineOrPageDeltaX: -1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
    819               isCustomizedByPrefs: false,
    820               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    821      wheel: {
    822        expected: true, preventDefault: false,
    823        deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0
    824      },
    825      DOMMouseScroll: {
    826        horizontal: { expected: true,  preventDefault: false, detail: -1 },
    827        vertical:   { expected: true,  preventDefault: false, detail:  1 } },
    828      MozMousePixelScroll: {
    829        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    830        vertical:   { expected: true,  preventDefault: false, detail:  5 } }
    831    },
    832    { description: "To bottom-left wheel event by pixels (-5.3/5.3 - 0/0) #2",
    833      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    834               deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    835               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    836               isCustomizedByPrefs: false,
    837               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    838      wheel: {
    839        expected: true, preventDefault: false,
    840        deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0
    841      },
    842      DOMMouseScroll: {
    843        horizontal: { expected: false, preventDefault: false, detail:  0 },
    844        vertical:   { expected: false, preventDefault: false, detail:  0 } },
    845      MozMousePixelScroll: {
    846        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    847        vertical:   { expected: true,  preventDefault: false, detail:  5 } }
    848    },
    849    { description: "To bottom-left wheel event by pixels (-5.3/5.3 - 0/0) #3",
    850      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    851               deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
    852               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    853               isCustomizedByPrefs: false,
    854               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    855      wheel: {
    856        expected: true, preventDefault: false,
    857        deltaX: -5.3, deltaY: 5.3, deltaZ: 0.0
    858      },
    859      DOMMouseScroll: {
    860        horizontal: { expected: false, preventDefault: false, detail:  0 },
    861        vertical:   { expected: false, preventDefault: false, detail:  0 } },
    862      MozMousePixelScroll: {
    863        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    864        vertical:   { expected: true,  preventDefault: false, detail:  5 } }
    865    },
    866 
    867    { description: "To top-left wheel event by pixels (-5.2/-5.3 - -1/-1) #1",
    868      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    869               deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    870               lineOrPageDeltaX: -1, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
    871               isCustomizedByPrefs: false,
    872               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    873      wheel: {
    874        expected: true, preventDefault: false,
    875        deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0
    876      },
    877      DOMMouseScroll: {
    878        horizontal: { expected: true,  preventDefault: false, detail: -1 },
    879        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
    880      MozMousePixelScroll: {
    881        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    882        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    883    },
    884    { description: "To top-left wheel event by pixels (-5.2/-5.3 - 0/0) #2",
    885      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    886               deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    887               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    888               isCustomizedByPrefs: false,
    889               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    890      wheel: {
    891        expected: true, preventDefault: false,
    892        deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0
    893      },
    894      DOMMouseScroll: {
    895        horizontal: { expected: false, preventDefault: false, detail:  0 },
    896        vertical:   { expected: false, preventDefault: false, detail:  0 } },
    897      MozMousePixelScroll: {
    898        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    899        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    900    },
    901    { description: "To top-left wheel event by pixels (-5.2/-5.3 - 0/0) #3",
    902      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    903               deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    904               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    905               isCustomizedByPrefs: false,
    906               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    907      wheel: {
    908        expected: true, preventDefault: false,
    909        deltaX: -5.2, deltaY: -5.3, deltaZ: 0.0
    910      },
    911      DOMMouseScroll: {
    912        horizontal: { expected: false, preventDefault: false, detail:  0 },
    913        vertical:   { expected: false, preventDefault: false, detail:  0 } },
    914      MozMousePixelScroll: {
    915        horizontal: { expected: true,  preventDefault: false, detail: -5 },
    916        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    917    },
    918 
    919    { description: "To top-right wheel event by pixels (5.3/-5.3 - 1/-1) #1",
    920      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    921               deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    922               lineOrPageDeltaX: 1, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
    923               isCustomizedByPrefs: false,
    924               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    925      wheel: {
    926        expected: true, preventDefault: false,
    927        deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0
    928      },
    929      DOMMouseScroll: {
    930        horizontal: { expected: true,  preventDefault: false, detail:  1 },
    931        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
    932      MozMousePixelScroll: {
    933        horizontal: { expected: true,  preventDefault: false, detail:  5 },
    934        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    935    },
    936    { description: "To top-right wheel event by pixels (5.3/-5.3 - 0/0) #2",
    937      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    938               deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
    939               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
    940               isCustomizedByPrefs: false,
    941               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    942      wheel: {
    943        expected: true, preventDefault: false,
    944        deltaX: 5.3, deltaY: -5.3, deltaZ: 0.0
    945      },
    946      DOMMouseScroll: {
    947        horizontal: { expected: false, preventDefault: false, detail:  0 },
    948        vertical:   { expected: false, preventDefault: false, detail:  0 } },
    949      MozMousePixelScroll: {
    950        horizontal: { expected: true,  preventDefault: false, detail:  5 },
    951        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
    952    },
    953 
    954    // Pixel scroll only device's test. the lineOrPageDelta values should be computed
    955    // by ESM. When changing the direction for each delta value, it should be
    956    // reset at that time.
    957    { description: "Pixel only device's horizontal wheel event by pixels (5.3 - 0) #1",
    958      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    959               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    960               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
    961               isCustomizedByPrefs: false,
    962               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    963      wheel: {
    964        expected: true, preventDefault: false,
    965        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
    966      },
    967      DOMMouseScroll: {
    968        horizontal: { expected: false, preventDefault: false, detail: 0 },
    969        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    970      MozMousePixelScroll: {
    971        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    972        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    973    },
    974    { description: "Pixel only device's horizontal wheel event by pixels (5.3 - 0) #2",
    975      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    976               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    977               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
    978               isCustomizedByPrefs: false,
    979               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    980      wheel: {
    981        expected: true, preventDefault: false,
    982        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
    983      },
    984      DOMMouseScroll: {
    985        horizontal: { expected: false, preventDefault: false, detail: 0 },
    986        vertical:   { expected: false, preventDefault: false, detail: 0 } },
    987      MozMousePixelScroll: {
    988        horizontal: { expected: true,  preventDefault: false, detail: 5 },
    989        vertical:   { expected: false, preventDefault: false, detail: 0 } }
    990    },
    991    { description: "Pixel only device's horizontal wheel event by pixels (5.3 - 0) #3",
    992      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
    993               deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
    994               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
    995               isCustomizedByPrefs: false,
    996               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
    997      wheel: {
    998        expected: true, preventDefault: false,
    999        deltaX: 5.3, deltaY: 0.0, deltaZ: 0.0
   1000      },
   1001      DOMMouseScroll: {
   1002        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   1003        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1004      MozMousePixelScroll: {
   1005        horizontal: { expected: true,  preventDefault: false, detail: 5 },
   1006        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1007    },
   1008    { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #1",
   1009      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1010               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
   1011               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1012               isCustomizedByPrefs: false,
   1013               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1014      wheel: {
   1015        expected: true, preventDefault: false,
   1016        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
   1017      },
   1018      DOMMouseScroll: {
   1019        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1020        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1021      MozMousePixelScroll: {
   1022        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1023        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
   1024    },
   1025    { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #2",
   1026      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1027               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
   1028               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1029               isCustomizedByPrefs: false,
   1030               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1031      wheel: {
   1032        expected: true, preventDefault: false,
   1033        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
   1034      },
   1035      DOMMouseScroll: {
   1036        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1037        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1038      MozMousePixelScroll: {
   1039        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1040        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
   1041    },
   1042    { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #3",
   1043      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1044               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
   1045               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1046               isCustomizedByPrefs: false,
   1047               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1048      wheel: {
   1049        expected: true, preventDefault: false,
   1050        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
   1051      },
   1052      DOMMouseScroll: {
   1053        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1054        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1055      MozMousePixelScroll: {
   1056        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1057        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
   1058    },
   1059    { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 0) #4",
   1060      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1061               deltaX: 0.0, deltaY: 1.3, deltaZ: 0.0, isMomentum: false,
   1062               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1063               isCustomizedByPrefs: false,
   1064               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1065      wheel: {
   1066        expected: true, preventDefault: false,
   1067        deltaX: 0.0, deltaY: 1.3, deltaZ: 0.0
   1068      },
   1069      DOMMouseScroll: {
   1070        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1071        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1072      MozMousePixelScroll: {
   1073        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1074        vertical:   { expected: true,  preventDefault: false, detail: 1 } }
   1075    },
   1076    { description: "Pixel only device's Vertical wheel event by pixels (5.3 - 1) #5",
   1077      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1078               deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0, isMomentum: false,
   1079               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1080               isCustomizedByPrefs: false,
   1081               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1082      wheel: {
   1083        expected: true, preventDefault: false,
   1084        deltaX: 0.0, deltaY: 5.3, deltaZ: 0.0
   1085      },
   1086      DOMMouseScroll: {
   1087        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1088        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   1089      MozMousePixelScroll: {
   1090        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1091        vertical:   { expected: true,  preventDefault: false, detail: 5 } }
   1092    },
   1093 
   1094    { description: "Pixel only device's horizontal wheel event by pixels (-5.3 - 0) #1",
   1095      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1096               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1097               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1098               isCustomizedByPrefs: false,
   1099               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1100      wheel: {
   1101        expected: true, preventDefault: false,
   1102        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
   1103      },
   1104      DOMMouseScroll: {
   1105        horizontal: { expected: false, preventDefault: false, detail: -1 },
   1106        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1107      MozMousePixelScroll: {
   1108        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1109        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1110    },
   1111    { description: "Pixel only device's horizontal wheel event by pixels (-5.3 - 0) #2",
   1112      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1113               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1114               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1115               isCustomizedByPrefs: false,
   1116               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1117      wheel: {
   1118        expected: true, preventDefault: false,
   1119        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
   1120      },
   1121      DOMMouseScroll: {
   1122        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1123        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1124      MozMousePixelScroll: {
   1125        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1126        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1127    },
   1128    { description: "Pixel only device's horizontal wheel event by pixels (-5.3 - 0) #3",
   1129      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1130               deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1131               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1132               isCustomizedByPrefs: false,
   1133               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1134      wheel: {
   1135        expected: true, preventDefault: false,
   1136        deltaX: -5.3, deltaY: 0.0, deltaZ: 0.0
   1137      },
   1138      DOMMouseScroll: {
   1139        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   1140        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1141      MozMousePixelScroll: {
   1142        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1143        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1144    },
   1145 
   1146    { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #1",
   1147      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1148               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
   1149               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1150               isCustomizedByPrefs: false,
   1151               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1152      wheel: {
   1153        expected: true, preventDefault: false,
   1154        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
   1155      },
   1156      DOMMouseScroll: {
   1157        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1158        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1159      MozMousePixelScroll: {
   1160        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1161        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
   1162    },
   1163    { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #2",
   1164      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1165               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
   1166               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1167               isCustomizedByPrefs: false,
   1168               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1169      wheel: {
   1170        expected: true, preventDefault: false,
   1171        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
   1172      },
   1173      DOMMouseScroll: {
   1174        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1175        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1176      MozMousePixelScroll: {
   1177        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1178        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
   1179    },
   1180    { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #3",
   1181      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1182               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
   1183               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1184               isCustomizedByPrefs: false,
   1185               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1186      wheel: {
   1187        expected: true, preventDefault: false,
   1188        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
   1189      },
   1190      DOMMouseScroll: {
   1191        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1192        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1193      MozMousePixelScroll: {
   1194        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1195        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
   1196    },
   1197    { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - 0) #4",
   1198      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1199               deltaX: 0.0, deltaY: -1.3, deltaZ: 0.0, isMomentum: false,
   1200               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1201               isCustomizedByPrefs: false,
   1202               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1203      wheel: {
   1204        expected: true, preventDefault: false,
   1205        deltaX: 0.0, deltaY: -1.3, deltaZ: 0.0
   1206      },
   1207      DOMMouseScroll: {
   1208        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1209        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1210      MozMousePixelScroll: {
   1211        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1212        vertical:   { expected: true,  preventDefault: false, detail: -1 } }
   1213    },
   1214    { description: "Pixel only device's Vertical wheel event by pixels (-5.3 - -1) #5",
   1215      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1216               deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0, isMomentum: false,
   1217               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1218               isCustomizedByPrefs: false,
   1219               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1220      wheel: {
   1221        expected: true, preventDefault: false,
   1222        deltaX: 0.0, deltaY: -5.3, deltaZ: 0.0
   1223      },
   1224      DOMMouseScroll: {
   1225        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1226        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
   1227      MozMousePixelScroll: {
   1228        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1229        vertical:   { expected: true,  preventDefault: false, detail: -5 } }
   1230    },
   1231 
   1232    // ESM should reset an accumulated delta value only when the direction of it
   1233    // is changed but shouldn't reset the other delta.
   1234    { description: "Pixel only device's bottom-right wheel event by pixels (5.3/4.9 - 0/0) #1",
   1235      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1236               deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false,
   1237               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1238               isCustomizedByPrefs: false,
   1239               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1240      wheel: {
   1241        expected: true, preventDefault: false,
   1242        deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0
   1243      },
   1244      DOMMouseScroll: {
   1245        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1246        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1247      MozMousePixelScroll: {
   1248        horizontal: { expected: true,  preventDefault: false, detail: 5 },
   1249        vertical:   { expected: true,  preventDefault: false, detail: 4 } }
   1250    },
   1251    { description: "Pixel only device's bottom-right wheel event by pixels (5.3/4.9 - 0/0) #2",
   1252      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1253               deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false,
   1254               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1255               isCustomizedByPrefs: false,
   1256               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1257      wheel: {
   1258        expected: true, preventDefault: false,
   1259        deltaX: 5.3, deltaY: 4.9, deltaZ: 0.0
   1260      },
   1261      DOMMouseScroll: {
   1262        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1263        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1264      MozMousePixelScroll: {
   1265        horizontal: { expected: true,  preventDefault: false, detail: 5 },
   1266        vertical:   { expected: true,  preventDefault: false, detail: 4 } }
   1267    },
   1268    { description: "Pixel only device's bottom-left wheel event by pixels (-5.3/4.9 - 0/0) #4",
   1269      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1270               deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false,
   1271               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1272               isCustomizedByPrefs: false,
   1273               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1274      wheel: {
   1275        expected: true, preventDefault: false,
   1276        deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0
   1277      },
   1278      DOMMouseScroll: {
   1279        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1280        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1281      MozMousePixelScroll: {
   1282        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1283        vertical:   { expected: true,  preventDefault: false, detail: 4 } }
   1284    },
   1285    // the accumulated X should be 0 here, but Y shouldn't be reset.
   1286    { description: "Pixel only device's bottom-right wheel event by pixels (5.3/4.9 - 0/0) #5",
   1287      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1288               deltaX: 5.3, deltaY: 1.9, deltaZ: 0.0, isMomentum: false,
   1289               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1290               isCustomizedByPrefs: false,
   1291               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1292      wheel: {
   1293        expected: true, preventDefault: false,
   1294        deltaX: 5.3, deltaY: 1.9, deltaZ: 0.0
   1295      },
   1296      DOMMouseScroll: {
   1297        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1298        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1299      MozMousePixelScroll: {
   1300        horizontal: { expected: true,  preventDefault: false, detail: 5 },
   1301        vertical:   { expected: true,  preventDefault: false, detail: 1 } }
   1302    },
   1303 
   1304    { description: "Pixel only device's top-left wheel event by pixels (-5.3/-4.9 - 0/0) #1",
   1305      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1306               deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0, isMomentum: false,
   1307               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1308               isCustomizedByPrefs: false,
   1309               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1310      wheel: {
   1311        expected: true, preventDefault: false,
   1312        deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0
   1313      },
   1314      DOMMouseScroll: {
   1315        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1316        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1317      MozMousePixelScroll: {
   1318        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1319        vertical:   { expected: true,  preventDefault: false, detail: -4 } }
   1320    },
   1321    { description: "Pixel only device's top-left wheel event by pixels (-5.3/-4.9 - 0/0) #2",
   1322      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1323               deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0, isMomentum: false,
   1324               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1325               isCustomizedByPrefs: false,
   1326               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1327      wheel: {
   1328        expected: true, preventDefault: false,
   1329        deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0
   1330      },
   1331      DOMMouseScroll: {
   1332        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1333        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1334      MozMousePixelScroll: {
   1335        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1336        vertical:   { expected: true,  preventDefault: false, detail: -4 } }
   1337    },
   1338    { description: "Pixel only device's bottom-left wheel event by pixels (-5.3/4.9 - 0/0) #4",
   1339      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1340               deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0, isMomentum: false,
   1341               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1342               isCustomizedByPrefs: false,
   1343               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1344      wheel: {
   1345        expected: true, preventDefault: false,
   1346        deltaX: -5.3, deltaY: 4.9, deltaZ: 0.0
   1347      },
   1348      DOMMouseScroll: {
   1349        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   1350        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1351      MozMousePixelScroll: {
   1352        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1353        vertical:   { expected: true,  preventDefault: false, detail:  4 } }
   1354    },
   1355    // the accumulated Y should be 0 here, but X shouldn't be reset.
   1356    { description: "Pixel only device's top-left wheel event by pixels (-5.3/-4.9 - 0/0) #5",
   1357      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   1358               deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0, isMomentum: false,
   1359               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: true,
   1360               isCustomizedByPrefs: false,
   1361               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1362      wheel: {
   1363        expected: true, preventDefault: false,
   1364        deltaX: -5.3, deltaY: -4.9, deltaZ: 0.0
   1365      },
   1366      DOMMouseScroll: {
   1367        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1368        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1369      MozMousePixelScroll: {
   1370        horizontal: { expected: true,  preventDefault: false, detail: -5 },
   1371        vertical:   { expected: true,  preventDefault: false, detail: -4 } }
   1372    },
   1373 
   1374    // Simple line scroll tests.
   1375    { description: "Simple horizontal wheel event by lines (1.0 - 1) #1",
   1376      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1377               deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1378               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1379               isCustomizedByPrefs: false,
   1380               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1381      wheel: {
   1382        expected: true, preventDefault: false,
   1383        deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0
   1384      },
   1385      DOMMouseScroll: {
   1386        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   1387        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1388      MozMousePixelScroll: {
   1389        horizontal: { expected: true,  preventDefault: false, detail: gHorizontalLine },
   1390        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1391    },
   1392    { description: "Simple horizontal wheel event by lines (1.0 - 1) #2",
   1393      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1394               deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1395               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1396               isCustomizedByPrefs: false,
   1397               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1398      wheel: {
   1399        expected: true, preventDefault: false,
   1400        deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0
   1401      },
   1402      DOMMouseScroll: {
   1403        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   1404        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1405      MozMousePixelScroll: {
   1406        horizontal: { expected: true,  preventDefault: false, detail: gHorizontalLine },
   1407        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1408    },
   1409 
   1410    { description: "Simple horizontal wheel event by lines (-1.0 - -1) #1",
   1411      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1412               deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1413               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1414               isCustomizedByPrefs: false,
   1415               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1416      wheel: {
   1417        expected: true, preventDefault: false,
   1418        deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0
   1419      },
   1420      DOMMouseScroll: {
   1421        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   1422        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1423      MozMousePixelScroll: {
   1424        horizontal: { expected: true,  preventDefault: false, detail: -gHorizontalLine },
   1425        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   1426    },
   1427    { description: "Simple horizontal wheel event by lines (-1.0 - -1) #2",
   1428      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1429               deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1430               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1431               isCustomizedByPrefs: false,
   1432               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1433      wheel: {
   1434        expected: true, preventDefault: false,
   1435        deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0
   1436      },
   1437      DOMMouseScroll: {
   1438        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   1439        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1440      MozMousePixelScroll: {
   1441        horizontal: { expected: true,  preventDefault: false, detail: -gHorizontalLine },
   1442        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   1443    },
   1444 
   1445    { description: "Simple vertical wheel event by lines (-1.0 - -1) #1",
   1446      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1447               deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false,
   1448               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
   1449               isCustomizedByPrefs: false,
   1450               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1451      wheel: {
   1452        expected: true, preventDefault: false,
   1453        deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0
   1454      },
   1455      DOMMouseScroll: {
   1456        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1457        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
   1458      MozMousePixelScroll: {
   1459        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1460        vertical:   { expected: true,  preventDefault: false, detail: -gLineHeight } }
   1461    },
   1462    { description: "Simple vertical wheel event by lines (-1.0 - -1) #2",
   1463      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1464               deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false,
   1465               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
   1466               isCustomizedByPrefs: false,
   1467               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1468      wheel: {
   1469        expected: true, preventDefault: false,
   1470        deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0
   1471      },
   1472      DOMMouseScroll: {
   1473        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1474        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
   1475      MozMousePixelScroll: {
   1476        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1477        vertical:   { expected: true,  preventDefault: false, detail: -gLineHeight } }
   1478    },
   1479 
   1480    { description: "Simple vertical wheel event by lines (1.0 - 1) #1",
   1481      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1482               deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false,
   1483               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   1484               isCustomizedByPrefs: false,
   1485               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1486      wheel: {
   1487        expected: true, preventDefault: false,
   1488        deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0
   1489      },
   1490      DOMMouseScroll: {
   1491        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1492        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   1493      MozMousePixelScroll: {
   1494        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1495        vertical:   { expected: true,  preventDefault: false, detail: gLineHeight } }
   1496    },
   1497    { description: "Simple vertical wheel event by lines (1.0 - 1) #2",
   1498      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1499               deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false,
   1500               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   1501               isCustomizedByPrefs: false,
   1502               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1503      wheel: {
   1504        expected: true, preventDefault: false,
   1505        deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0
   1506      },
   1507      DOMMouseScroll: {
   1508        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1509        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   1510      MozMousePixelScroll: {
   1511        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1512        vertical:   { expected: true,  preventDefault: false, detail: gLineHeight } }
   1513    },
   1514 
   1515    // high resolution line scroll
   1516    { description: "High resolution horizontal wheel event by lines (0.333... - 0) #1",
   1517      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1518               deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1519               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1520               isCustomizedByPrefs: false,
   1521               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1522      wheel: {
   1523        expected: true, preventDefault: false,
   1524        deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1525      },
   1526      DOMMouseScroll: {
   1527        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1528        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1529      MozMousePixelScroll: {
   1530        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine / 3) },
   1531        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1532    },
   1533    { description: "High resolution horizontal wheel event by lines (0.333... - 0) #2",
   1534      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1535               deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1536               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1537               isCustomizedByPrefs: false,
   1538               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1539      wheel: {
   1540        expected: true, preventDefault: false,
   1541        deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1542      },
   1543      DOMMouseScroll: {
   1544        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1545        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1546      MozMousePixelScroll: {
   1547        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine / 3) },
   1548        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1549    },
   1550    { description: "High resolution horizontal wheel event by lines (0.333... - 1) #3",
   1551      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1552               deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1553               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1554               isCustomizedByPrefs: false,
   1555               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1556      wheel: {
   1557        expected: true, preventDefault: false,
   1558        deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1559      },
   1560      DOMMouseScroll: {
   1561        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   1562        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1563      MozMousePixelScroll: {
   1564        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine / 3) },
   1565        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1566    },
   1567 
   1568    { description: "High resolution horizontal wheel event by lines (-0.333... - 0) #1",
   1569      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1570               deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1571               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1572               isCustomizedByPrefs: false,
   1573               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1574      wheel: {
   1575        expected: true, preventDefault: false,
   1576        deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1577      },
   1578      DOMMouseScroll: {
   1579        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1580        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1581      MozMousePixelScroll: {
   1582        horizontal: { expected: true,  preventDefault: false, detail: -Math.floor(gHorizontalLine / 3) },
   1583        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   1584    },
   1585    { description: "High resolution horizontal wheel event by lines (-0.333... - 0) #2",
   1586      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1587               deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1588               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1589               isCustomizedByPrefs: false,
   1590               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1591      wheel: {
   1592        expected: true, preventDefault: false,
   1593        deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1594      },
   1595      DOMMouseScroll: {
   1596        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1597        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1598      MozMousePixelScroll: {
   1599        horizontal: { expected: true,  preventDefault: false, detail: -Math.floor(gHorizontalLine / 3) },
   1600        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   1601    },
   1602    { description: "High resolution horizontal wheel event by lines (-0.333... - -1) #3",
   1603      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1604               deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1605               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1606               isCustomizedByPrefs: false,
   1607               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1608      wheel: {
   1609        expected: true, preventDefault: false,
   1610        deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1611      },
   1612      DOMMouseScroll: {
   1613        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   1614        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1615      MozMousePixelScroll: {
   1616        horizontal: { expected: true,  preventDefault: false, detail: -Math.floor(gHorizontalLine / 3) },
   1617        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   1618    },
   1619 
   1620    { description: "High resolution vertical wheel event by lines (0.333... - 0) #1",
   1621      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1622               deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false,
   1623               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1624               isCustomizedByPrefs: false,
   1625               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1626      wheel: {
   1627        expected: true, preventDefault: false,
   1628        deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0
   1629      },
   1630      DOMMouseScroll: {
   1631        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1632        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1633      MozMousePixelScroll: {
   1634        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1635        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight / 3) } }
   1636    },
   1637    { description: "High resolution vertical wheel event by lines (0.333... - 0) #2",
   1638      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1639               deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false,
   1640               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1641               isCustomizedByPrefs: false,
   1642               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1643      wheel: {
   1644        expected: true, preventDefault: false,
   1645        deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0
   1646      },
   1647      DOMMouseScroll: {
   1648        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1649        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1650      MozMousePixelScroll: {
   1651        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1652        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight / 3) } }
   1653    },
   1654    { description: "High resolution vertical wheel event by lines (0.333... - 1) #3",
   1655      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1656               deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false,
   1657               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   1658               isCustomizedByPrefs: false,
   1659               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1660      wheel: {
   1661        expected: true, preventDefault: false,
   1662        deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0
   1663      },
   1664      DOMMouseScroll: {
   1665        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1666        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   1667      MozMousePixelScroll: {
   1668        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1669        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight / 3) } }
   1670    },
   1671 
   1672    { description: "High resolution vertical wheel event by lines (-0.333... - 0) #1",
   1673      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1674               deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false,
   1675               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1676               isCustomizedByPrefs: false,
   1677               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1678      wheel: {
   1679        expected: true, preventDefault: false,
   1680        deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0
   1681      },
   1682      DOMMouseScroll: {
   1683        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1684        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1685      MozMousePixelScroll: {
   1686        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1687        vertical:   { expected: true,  preventDefault: false, detail: -Math.floor(gLineHeight / 3) } }
   1688    },
   1689    { description: "High resolution vertical wheel event by lines (-0.333... - 0) #2",
   1690      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1691               deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false,
   1692               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1693               isCustomizedByPrefs: false,
   1694               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1695      wheel: {
   1696        expected: true, preventDefault: false,
   1697        deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0
   1698      },
   1699      DOMMouseScroll: {
   1700        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1701        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1702      MozMousePixelScroll: {
   1703        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1704        vertical:   { expected: true,  preventDefault: false, detail: -Math.floor(gLineHeight / 3) } }
   1705    },
   1706    { description: "High resolution vertical wheel event by lines (-0.333... - -1) #3",
   1707      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1708               deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false,
   1709               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
   1710               isCustomizedByPrefs: false,
   1711               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1712      wheel: {
   1713        expected: true, preventDefault: false,
   1714        deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0
   1715      },
   1716      DOMMouseScroll: {
   1717        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1718        vertical:   { expected: true,  preventDefault: false, detail: -1 } },
   1719      MozMousePixelScroll: {
   1720        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1721        vertical:   { expected: true,  preventDefault: false, detail: -Math.floor(gLineHeight / 3) } }
   1722    },
   1723 
   1724    // Oblique line scroll
   1725    { description: "Oblique wheel event by lines (-1.0/2.0 - -1/2)",
   1726      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1727               deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0, isMomentum: false,
   1728               lineOrPageDeltaX: -1, lineOrPageDeltaY: 2, isNoLineOrPageDelta: false,
   1729               isCustomizedByPrefs: false,
   1730               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1731      wheel: {
   1732        expected: true, preventDefault: false,
   1733        deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0
   1734      },
   1735      DOMMouseScroll: {
   1736        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   1737        vertical:   { expected: true,  preventDefault: false, detail:  2 } },
   1738      MozMousePixelScroll: {
   1739        horizontal: { expected: true,  preventDefault: false, detail: -gHorizontalLine },
   1740        vertical:   { expected: true,  preventDefault: false, detail:  gLineHeight * 2 } }
   1741    },
   1742 
   1743    { description: "Oblique wheel event by lines (1.0/-2.0 - 1/-2)",
   1744      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1745               deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0, isMomentum: false,
   1746               lineOrPageDeltaX: 1, lineOrPageDeltaY: -2, isNoLineOrPageDelta: false,
   1747               isCustomizedByPrefs: false,
   1748               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1749      wheel: {
   1750        expected: true, preventDefault: false,
   1751        deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0
   1752      },
   1753      DOMMouseScroll: {
   1754        horizontal: { expected: true,  preventDefault: false, detail:  1 },
   1755        vertical:   { expected: true,  preventDefault: false, detail: -2 } },
   1756      MozMousePixelScroll: {
   1757        horizontal: { expected: true,  preventDefault: false, detail:  gHorizontalLine },
   1758        vertical:   { expected: true,  preventDefault: false, detail: -gLineHeight * 2 } }
   1759    },
   1760 
   1761    { description: "High resolution oblique wheel event by lines (0.5/0.333.../-0.8 - 0/0) #1",
   1762      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1763               deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false,
   1764               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1765               isCustomizedByPrefs: false,
   1766               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1767      wheel: {
   1768        expected: true, preventDefault: false,
   1769        deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8
   1770      },
   1771      DOMMouseScroll: {
   1772        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1773        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1774      MozMousePixelScroll: {
   1775        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine / 2) },
   1776        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight / 3) } }
   1777    },
   1778    { description: "High resolution oblique wheel event by lines (0.5/0.333.../-0.8 - 1/0) #2",
   1779      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1780               deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false,
   1781               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1782               isCustomizedByPrefs: false,
   1783               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1784      wheel: {
   1785        expected: true, preventDefault: false,
   1786        deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8
   1787      },
   1788      DOMMouseScroll: {
   1789        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   1790        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1791      MozMousePixelScroll: {
   1792        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine / 2) },
   1793        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight / 3) } }
   1794    },
   1795    { description: "High resolution oblique wheel event by lines (0.5/0.333.../-0.8 - 0/1) #3",
   1796      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   1797               deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false,
   1798               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   1799               isCustomizedByPrefs: false,
   1800               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1801      wheel: {
   1802        expected: true, preventDefault: false,
   1803        deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8
   1804      },
   1805      DOMMouseScroll: {
   1806        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1807        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   1808      MozMousePixelScroll: {
   1809        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine / 2) },
   1810        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight / 3) } }
   1811    },
   1812 
   1813    // Simple page scroll tests.
   1814    { description: "Simple horizontal wheel event by pages (1.0 - 1) #1",
   1815      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1816               deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1817               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1818               isCustomizedByPrefs: false,
   1819               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1820      wheel: {
   1821        expected: true, preventDefault: false,
   1822        deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0
   1823      },
   1824      DOMMouseScroll: {
   1825        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   1826        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1827      MozMousePixelScroll: {
   1828        horizontal: { expected: true,  preventDefault: false, detail: gPageWidth },
   1829        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1830    },
   1831    { description: "Simple horizontal wheel event by pages (1.0 - 1) #2",
   1832      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1833               deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1834               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1835               isCustomizedByPrefs: false,
   1836               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1837      wheel: {
   1838        expected: true, preventDefault: false,
   1839        deltaX: 1.0, deltaY: 0.0, deltaZ: 0.0
   1840      },
   1841      DOMMouseScroll: {
   1842        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   1843        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1844      MozMousePixelScroll: {
   1845        horizontal: { expected: true,  preventDefault: false, detail: gPageWidth },
   1846        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1847    },
   1848 
   1849    { description: "Simple horizontal wheel event by pages (-1.0 - -1) #1",
   1850      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1851               deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1852               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1853               isCustomizedByPrefs: false,
   1854               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1855      wheel: {
   1856        expected: true, preventDefault: false,
   1857        deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0
   1858      },
   1859      DOMMouseScroll: {
   1860        horizontal: { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP },
   1861        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1862      MozMousePixelScroll: {
   1863        horizontal: { expected: true,  preventDefault: false, detail: -gPageWidth },
   1864        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   1865    },
   1866    { description: "Simple horizontal wheel event by pages (-1.0 - -1) #2",
   1867      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1868               deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1869               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1870               isCustomizedByPrefs: false,
   1871               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1872      wheel: {
   1873        expected: true, preventDefault: false,
   1874        deltaX: -1.0, deltaY: 0.0, deltaZ: 0.0
   1875      },
   1876      DOMMouseScroll: {
   1877        horizontal: { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP },
   1878        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   1879      MozMousePixelScroll: {
   1880        horizontal: { expected: true,  preventDefault: false, detail: -gPageWidth },
   1881        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   1882    },
   1883 
   1884    { description: "Simple vertical wheel event by pages (-1.0 - -1) #1",
   1885      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1886               deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false,
   1887               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
   1888               isCustomizedByPrefs: false,
   1889               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1890      wheel: {
   1891        expected: true, preventDefault: false,
   1892        deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0
   1893      },
   1894      DOMMouseScroll: {
   1895        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1896        vertical:   { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP } },
   1897      MozMousePixelScroll: {
   1898        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1899        vertical:   { expected: true,  preventDefault: false, detail: -gPageHeight } }
   1900    },
   1901    { description: "Simple vertical wheel event by pages (-1.0 - -1) #2",
   1902      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1903               deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0, isMomentum: false,
   1904               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
   1905               isCustomizedByPrefs: false,
   1906               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1907      wheel: {
   1908        expected: true, preventDefault: false,
   1909        deltaX: 0.0, deltaY: -1.0, deltaZ: 0.0
   1910      },
   1911      DOMMouseScroll: {
   1912        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1913        vertical:   { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP } },
   1914      MozMousePixelScroll: {
   1915        horizontal: { expected: false, preventDefault: false, detail:  0 },
   1916        vertical:   { expected: true,  preventDefault: false, detail: -gPageHeight } }
   1917    },
   1918 
   1919    { description: "Simple vertical wheel event by pages (1.0 - 1) #1",
   1920      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1921               deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false,
   1922               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   1923               isCustomizedByPrefs: false,
   1924               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1925      wheel: {
   1926        expected: true, preventDefault: false,
   1927        deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0
   1928      },
   1929      DOMMouseScroll: {
   1930        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1931        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   1932      MozMousePixelScroll: {
   1933        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1934        vertical:   { expected: true,  preventDefault: false, detail: gPageHeight } }
   1935    },
   1936    { description: "Simple vertical wheel event by pages (1.0 - 1) #2",
   1937      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1938               deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0, isMomentum: false,
   1939               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   1940               isCustomizedByPrefs: false,
   1941               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1942      wheel: {
   1943        expected: true, preventDefault: false,
   1944        deltaX: 0.0, deltaY: 1.0, deltaZ: 0.0
   1945      },
   1946      DOMMouseScroll: {
   1947        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1948        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   1949      MozMousePixelScroll: {
   1950        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1951        vertical:   { expected: true,  preventDefault: false, detail: gPageHeight } }
   1952    },
   1953 
   1954    // high resolution page scroll
   1955    { description: "High resolution horizontal wheel event by pages (0.333... - 0) #1",
   1956      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1957               deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1958               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1959               isCustomizedByPrefs: false,
   1960               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1961      wheel: {
   1962        expected: true, preventDefault: false,
   1963        deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1964      },
   1965      DOMMouseScroll: {
   1966        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1967        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1968      MozMousePixelScroll: {
   1969        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth / 3) },
   1970        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1971    },
   1972    { description: "High resolution horizontal wheel event by pages (0.333... - 0) #2",
   1973      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1974               deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1975               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1976               isCustomizedByPrefs: false,
   1977               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1978      wheel: {
   1979        expected: true, preventDefault: false,
   1980        deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1981      },
   1982      DOMMouseScroll: {
   1983        horizontal: { expected: false, preventDefault: false, detail: 0 },
   1984        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   1985      MozMousePixelScroll: {
   1986        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth / 3) },
   1987        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   1988    },
   1989    { description: "High resolution horizontal wheel event by pages (0.333... - 1) #3",
   1990      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   1991               deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   1992               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   1993               isCustomizedByPrefs: false,
   1994               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   1995      wheel: {
   1996        expected: true, preventDefault: false,
   1997        deltaX: 1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   1998      },
   1999      DOMMouseScroll: {
   2000        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2001        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2002      MozMousePixelScroll: {
   2003        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth / 3) },
   2004        vertical:   { expected: false, preventDefault: false, detail: 0 } }
   2005    },
   2006 
   2007    { description: "High resolution horizontal wheel event by pages (-0.333... - 0) #1",
   2008      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2009               deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   2010               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2011               isCustomizedByPrefs: false,
   2012               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2013      wheel: {
   2014        expected: true, preventDefault: false,
   2015        deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   2016      },
   2017      DOMMouseScroll: {
   2018        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2019        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   2020      MozMousePixelScroll: {
   2021        horizontal: { expected: true,  preventDefault: false, detail: -Math.floor(gPageWidth / 3) },
   2022        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   2023    },
   2024    { description: "High resolution horizontal wheel event by pages (-0.333... - 0) #2",
   2025      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2026               deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   2027               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2028               isCustomizedByPrefs: false,
   2029               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2030      wheel: {
   2031        expected: true, preventDefault: false,
   2032        deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   2033      },
   2034      DOMMouseScroll: {
   2035        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2036        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   2037      MozMousePixelScroll: {
   2038        horizontal: { expected: true,  preventDefault: false, detail: -Math.floor(gPageWidth / 3) },
   2039        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   2040    },
   2041    { description: "High resolution horizontal wheel event by pages (-0.333... - -1) #3",
   2042      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2043               deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0, isMomentum: false,
   2044               lineOrPageDeltaX: -1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2045               isCustomizedByPrefs: false,
   2046               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2047      wheel: {
   2048        expected: true, preventDefault: false,
   2049        deltaX: -1.0 / 3, deltaY: 0.0, deltaZ: 0.0
   2050      },
   2051      DOMMouseScroll: {
   2052        horizontal: { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP },
   2053        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   2054      MozMousePixelScroll: {
   2055        horizontal: { expected: true,  preventDefault: false, detail: -Math.floor(gPageWidth / 3) },
   2056        vertical:   { expected: false, preventDefault: false, detail:  0 } }
   2057    },
   2058 
   2059    { description: "High resolution vertical wheel event by pages (0.333... - 0) #1",
   2060      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2061               deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false,
   2062               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2063               isCustomizedByPrefs: false,
   2064               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2065      wheel: {
   2066        expected: true, preventDefault: false,
   2067        deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0
   2068      },
   2069      DOMMouseScroll: {
   2070        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2071        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2072      MozMousePixelScroll: {
   2073        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2074        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight / 3) } }
   2075    },
   2076    { description: "High resolution vertical wheel event by pages (0.333... - 0) #2",
   2077      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2078               deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false,
   2079               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2080               isCustomizedByPrefs: false,
   2081               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2082      wheel: {
   2083        expected: true, preventDefault: false,
   2084        deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0
   2085      },
   2086      DOMMouseScroll: {
   2087        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2088        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2089      MozMousePixelScroll: {
   2090        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2091        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight / 3) } }
   2092    },
   2093    { description: "High resolution vertical wheel event by pages (0.333... - 1) #3",
   2094      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2095               deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0, isMomentum: false,
   2096               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2097               isCustomizedByPrefs: false,
   2098               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2099      wheel: {
   2100        expected: true, preventDefault: false,
   2101        deltaX: 0.0, deltaY: 1.0 / 3, deltaZ: 0.0
   2102      },
   2103      DOMMouseScroll: {
   2104        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2105        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2106      MozMousePixelScroll: {
   2107        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2108        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight / 3) } }
   2109    },
   2110 
   2111    { description: "High resolution vertical wheel event by pages (-0.333... - 0) #1",
   2112      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2113               deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false,
   2114               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2115               isCustomizedByPrefs: false,
   2116               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2117      wheel: {
   2118        expected: true, preventDefault: false,
   2119        deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0
   2120      },
   2121      DOMMouseScroll: {
   2122        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2123        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   2124      MozMousePixelScroll: {
   2125        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2126        vertical:   { expected: true,  preventDefault: false, detail: -Math.floor(gPageHeight / 3) } }
   2127    },
   2128    { description: "High resolution vertical wheel event by pages (-0.333... - 0) #2",
   2129      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2130               deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false,
   2131               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2132               isCustomizedByPrefs: false,
   2133               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2134      wheel: {
   2135        expected: true, preventDefault: false,
   2136        deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0
   2137      },
   2138      DOMMouseScroll: {
   2139        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2140        vertical:   { expected: false, preventDefault: false, detail:  0 } },
   2141      MozMousePixelScroll: {
   2142        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2143        vertical:   { expected: true,  preventDefault: false, detail: -Math.floor(gPageHeight / 3) } }
   2144    },
   2145    { description: "High resolution vertical wheel event by pages (-0.333... - -1) #3",
   2146      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2147               deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0, isMomentum: false,
   2148               lineOrPageDeltaX: 0, lineOrPageDeltaY: -1, isNoLineOrPageDelta: false,
   2149               isCustomizedByPrefs: false,
   2150               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2151      wheel: {
   2152        expected: true, preventDefault: false,
   2153        deltaX: 0.0, deltaY: -1.0 / 3, deltaZ: 0.0
   2154      },
   2155      DOMMouseScroll: {
   2156        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2157        vertical:   { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP } },
   2158      MozMousePixelScroll: {
   2159        horizontal: { expected: false, preventDefault: false, detail:  0 },
   2160        vertical:   { expected: true,  preventDefault: false, detail: -Math.floor(gPageHeight / 3) } }
   2161    },
   2162 
   2163    // Oblique page scroll
   2164    { description: "Oblique wheel event by pages (-1.0/2.0 - -1/2)",
   2165      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2166               deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0, isMomentum: false,
   2167               lineOrPageDeltaX: -1, lineOrPageDeltaY: 2, isNoLineOrPageDelta: false,
   2168               isCustomizedByPrefs: false,
   2169               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2170      wheel: {
   2171        expected: true, preventDefault: false,
   2172        deltaX: -1.0, deltaY: 2.0, deltaZ: 0.0
   2173      },
   2174      DOMMouseScroll: {
   2175        horizontal: { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP },
   2176        vertical:   { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_DOWN } },
   2177      MozMousePixelScroll: {
   2178        horizontal: { expected: true,  preventDefault: false, detail: -gPageWidth },
   2179        vertical:   { expected: true,  preventDefault: false, detail:  gPageHeight * 2 } }
   2180    },
   2181 
   2182    { description: "Oblique wheel event by pages (1.0/-2.0 - 1/-2)",
   2183      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2184               deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0, isMomentum: false,
   2185               lineOrPageDeltaX: 1, lineOrPageDeltaY: -2, isNoLineOrPageDelta: false,
   2186               isCustomizedByPrefs: false,
   2187               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2188      wheel: {
   2189        expected: true, preventDefault: false,
   2190        deltaX: 1.0, deltaY: -2.0, deltaZ: 0.0
   2191      },
   2192      DOMMouseScroll: {
   2193        horizontal: { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_DOWN },
   2194        vertical:   { expected: true,  preventDefault: false, detail:  UIEvent.SCROLL_PAGE_UP } },
   2195      MozMousePixelScroll: {
   2196        horizontal: { expected: true,  preventDefault: false, detail:  gPageWidth },
   2197        vertical:   { expected: true,  preventDefault: false, detail: -gPageHeight * 2 } }
   2198    },
   2199 
   2200    { description: "High resolution oblique wheel event by pages (0.5/0.333.../-0.8 - 0/0) #1",
   2201      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2202               deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false,
   2203               lineOrPageDeltaX: 0, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2204               isCustomizedByPrefs: false,
   2205               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2206      wheel: {
   2207        expected: true, preventDefault: false,
   2208        deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8
   2209      },
   2210      DOMMouseScroll: {
   2211        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2212        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2213      MozMousePixelScroll: {
   2214        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth / 2) },
   2215        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight / 3) } }
   2216    },
   2217    { description: "High resolution oblique wheel event by pages (0.5/0.333.../-0.8 - 1/0) #2",
   2218      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2219               deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false,
   2220               lineOrPageDeltaX: 1, lineOrPageDeltaY: 0, isNoLineOrPageDelta: false,
   2221               isCustomizedByPrefs: false,
   2222               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2223      wheel: {
   2224        expected: true, preventDefault: false,
   2225        deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8
   2226      },
   2227      DOMMouseScroll: {
   2228        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2229        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2230      MozMousePixelScroll: {
   2231        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth / 2) },
   2232        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight / 3) } }
   2233    },
   2234    { description: "High resolution oblique wheel event by pages (0.5/0.333.../-0.8 - 0/1) #3",
   2235      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2236               deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8, isMomentum: false,
   2237               lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2238               isCustomizedByPrefs: false,
   2239               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2240      wheel: {
   2241        expected: true, preventDefault: false,
   2242        deltaX: 0.5, deltaY: 1.0 / 3, deltaZ: -0.8
   2243      },
   2244      DOMMouseScroll: {
   2245        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2246        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2247      MozMousePixelScroll: {
   2248        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth / 2) },
   2249        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight / 3) } }
   2250    },
   2251 
   2252    // preventDefault() shouldn't prevent other legacy events.
   2253    { description: "preventDefault() shouldn't prevent other legacy events (pixel)",
   2254      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2255               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false,
   2256               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2257               isCustomizedByPrefs: false,
   2258               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2259      wheel: {
   2260        expected: true, preventDefault: false,
   2261        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2262      },
   2263      DOMMouseScroll: {
   2264        horizontal: { expected: true,  preventDefault: true, detail: 1 },
   2265        vertical:   { expected: true,  preventDefault: true, detail: 1 } },
   2266      MozMousePixelScroll: {
   2267        horizontal: { expected: true,  preventDefault: true, detail: 16 },
   2268        vertical:   { expected: true,  preventDefault: true, detail: 16 } },
   2269    },
   2270    { description: "preventDefault() shouldn't prevent other legacy events (line)",
   2271      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2272               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2273               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2274               isCustomizedByPrefs: false,
   2275               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2276      wheel: {
   2277        expected: true, preventDefault: false,
   2278        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2279      },
   2280      DOMMouseScroll: {
   2281        horizontal: { expected: true,  preventDefault: true, detail: 1 },
   2282        vertical:   { expected: true,  preventDefault: true, detail: 1 } },
   2283      MozMousePixelScroll: {
   2284        horizontal: { expected: true,  preventDefault: true, detail: gHorizontalLine },
   2285        vertical:   { expected: true,  preventDefault: true, detail: gLineHeight } },
   2286    },
   2287    { description: "preventDefault() shouldn't prevent other legacy events (page)",
   2288      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2289               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2290               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2291               isCustomizedByPrefs: false,
   2292               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2293      wheel: {
   2294        expected: true, preventDefault: false,
   2295        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2296      },
   2297      DOMMouseScroll: {
   2298        horizontal: { expected: true,  preventDefault: true, detail: UIEvent.SCROLL_PAGE_DOWN },
   2299        vertical:   { expected: true,  preventDefault: true, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2300      MozMousePixelScroll: {
   2301        horizontal: { expected: true,  preventDefault: true, detail: gPageWidth },
   2302        vertical:   { expected: true,  preventDefault: true, detail: gPageHeight } },
   2303    },
   2304 
   2305    // If wheel event is consumed by preventDefault(), legacy events are not necessary.
   2306    { description: "If wheel event is consumed by preventDefault(), legacy events are not necessary (pixel)",
   2307      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2308               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false,
   2309               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2310               isCustomizedByPrefs: false,
   2311               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2312      wheel: {
   2313        expected: true, preventDefault: true,
   2314        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2315      },
   2316      DOMMouseScroll: {
   2317        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2318        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2319      MozMousePixelScroll: {
   2320        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2321        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2322    },
   2323    { description: "If wheel event is consumed by preventDefault(), legacy events are not necessary (line)",
   2324      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2325               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2326               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2327               isCustomizedByPrefs: false,
   2328               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2329      wheel: {
   2330        expected: true, preventDefault: true,
   2331        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2332      },
   2333      DOMMouseScroll: {
   2334        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2335        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2336      MozMousePixelScroll: {
   2337        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2338        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2339    },
   2340    { description: "If wheel event is consumed by preventDefault(), legacy events are not necessary (page)",
   2341      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2342               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2343               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2344               isCustomizedByPrefs: false,
   2345               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2346      wheel: {
   2347        expected: true, preventDefault: true,
   2348        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2349      },
   2350      DOMMouseScroll: {
   2351        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2352        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2353      MozMousePixelScroll: {
   2354        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2355        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2356    },
   2357 
   2358    // modifier key state tests
   2359    { description: "modifier key tests (shift, pixel)",
   2360      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2361               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false,
   2362               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2363               isCustomizedByPrefs: false,
   2364               shiftKey: true, ctrlKey: false, altKey: false, metaKey: false },
   2365      wheel: {
   2366        expected: true, preventDefault: false,
   2367        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2368      },
   2369      DOMMouseScroll: {
   2370        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2371        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2372      MozMousePixelScroll: {
   2373        horizontal: { expected: true,  preventDefault: true,  detail: 16 },
   2374        vertical:   { expected: true,  preventDefault: true,  detail: 16 } },
   2375    },
   2376    { description: "modifier key tests (shift, line)",
   2377      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2378               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2379               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2380               isCustomizedByPrefs: false,
   2381               shiftKey: true, ctrlKey: false, altKey: false, metaKey: false },
   2382      wheel: {
   2383        expected: true, preventDefault: false,
   2384        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2385      },
   2386      DOMMouseScroll: {
   2387        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2388        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2389      MozMousePixelScroll: {
   2390        horizontal: { expected: true,  preventDefault: true,  detail: gHorizontalLine },
   2391        vertical:   { expected: true,  preventDefault: true,  detail: gLineHeight } },
   2392    },
   2393    { description: "modifier key tests (shift, page)",
   2394      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2395               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2396               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2397               isCustomizedByPrefs: false,
   2398               shiftKey: true, ctrlKey: false, altKey: false, metaKey: false },
   2399      wheel: {
   2400        expected: true, preventDefault: false,
   2401        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2402      },
   2403      DOMMouseScroll: {
   2404        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2405        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2406      MozMousePixelScroll: {
   2407        horizontal: { expected: true,  preventDefault: true,  detail: gPageWidth },
   2408        vertical:   { expected: true,  preventDefault: true,  detail: gPageHeight } },
   2409    },
   2410 
   2411    { description: "modifier key tests (ctrl, pixel)",
   2412      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2413               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false,
   2414               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2415               isCustomizedByPrefs: false,
   2416               shiftKey: false, ctrlKey: true, altKey: false, metaKey: false },
   2417      wheel: {
   2418        expected: true, preventDefault: false,
   2419        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2420      },
   2421      DOMMouseScroll: {
   2422        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2423        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2424      MozMousePixelScroll: {
   2425        horizontal: { expected: true,  preventDefault: true,  detail: 16 },
   2426        vertical:   { expected: true,  preventDefault: true,  detail: 16 } },
   2427    },
   2428    { description: "modifier key tests (ctrl, line)",
   2429      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2430               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2431               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2432               isCustomizedByPrefs: false,
   2433               shiftKey: false, ctrlKey: true, altKey: false, metaKey: false },
   2434      wheel: {
   2435        expected: true, preventDefault: false,
   2436        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2437      },
   2438      DOMMouseScroll: {
   2439        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2440        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2441      MozMousePixelScroll: {
   2442        horizontal: { expected: true,  preventDefault: true,  detail: gHorizontalLine },
   2443        vertical:   { expected: true,  preventDefault: true,  detail: gLineHeight } },
   2444    },
   2445    { description: "modifier key tests (ctrl, page)",
   2446      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2447               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2448               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2449               isCustomizedByPrefs: false,
   2450               shiftKey: false, ctrlKey: true, altKey: false, metaKey: false },
   2451      wheel: {
   2452        expected: true, preventDefault: false,
   2453        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2454      },
   2455      DOMMouseScroll: {
   2456        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2457        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2458      MozMousePixelScroll: {
   2459        horizontal: { expected: true,  preventDefault: true,  detail: gPageWidth },
   2460        vertical:   { expected: true,  preventDefault: true,  detail: gPageHeight } },
   2461    },
   2462 
   2463    { description: "modifier key tests (alt, pixel)",
   2464      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2465               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false,
   2466               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2467               isCustomizedByPrefs: false,
   2468               shiftKey: false, ctrlKey: false, altKey: true, metaKey: false },
   2469      wheel: {
   2470        expected: true, preventDefault: false,
   2471        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2472      },
   2473      DOMMouseScroll: {
   2474        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2475        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2476      MozMousePixelScroll: {
   2477        horizontal: { expected: true,  preventDefault: true,  detail: 16 },
   2478        vertical:   { expected: true,  preventDefault: true,  detail: 16 } },
   2479    },
   2480    { description: "modifier key tests (alt, line)",
   2481      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2482               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2483               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2484               isCustomizedByPrefs: false,
   2485               shiftKey: false, ctrlKey: false, altKey: true, metaKey: false },
   2486      wheel: {
   2487        expected: true, preventDefault: false,
   2488        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2489      },
   2490      DOMMouseScroll: {
   2491        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2492        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2493      MozMousePixelScroll: {
   2494        horizontal: { expected: true,  preventDefault: true,  detail: gHorizontalLine },
   2495        vertical:   { expected: true,  preventDefault: true,  detail: gLineHeight } },
   2496    },
   2497    { description: "modifier key tests without content checking mode (alt, line)",
   2498      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2499               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2500               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2501               isCustomizedByPrefs: false,
   2502               shiftKey: false, ctrlKey: false, altKey: true, metaKey: false },
   2503      wheel: {
   2504        expected: true, preventDefault: false,
   2505        skipDeltaModeCheck: true,
   2506        deltaX: gHorizontalLine,
   2507        deltaY: gLineHeight,
   2508        deltaZ: Math.max(gHorizontalLine, gLineHeight),
   2509      },
   2510      DOMMouseScroll: {
   2511        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2512        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2513      MozMousePixelScroll: {
   2514        horizontal: { expected: true,  preventDefault: true,  detail: gHorizontalLine },
   2515        vertical:   { expected: true,  preventDefault: true,  detail: gLineHeight } },
   2516    },
   2517    { description: "modifier key tests (alt, page)",
   2518      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2519               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2520               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2521               isCustomizedByPrefs: false,
   2522               shiftKey: false, ctrlKey: false, altKey: true, metaKey: false },
   2523      wheel: {
   2524        expected: true, preventDefault: false,
   2525        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2526      },
   2527      DOMMouseScroll: {
   2528        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2529        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2530      MozMousePixelScroll: {
   2531        horizontal: { expected: true,  preventDefault: true,  detail: gPageWidth },
   2532        vertical:   { expected: true,  preventDefault: true,  detail: gPageHeight } },
   2533    },
   2534 
   2535    { description: "modifier key tests (meta, pixel)",
   2536      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2537               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false,
   2538               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2539               isCustomizedByPrefs: false,
   2540               shiftKey: false, ctrlKey: false, altKey: false, metaKey: true },
   2541      wheel: {
   2542        expected: true, preventDefault: false,
   2543        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2544      },
   2545      DOMMouseScroll: {
   2546        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2547        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2548      MozMousePixelScroll: {
   2549        horizontal: { expected: true,  preventDefault: true,  detail: 16 },
   2550        vertical:   { expected: true,  preventDefault: true,  detail: 16 } },
   2551    },
   2552    { description: "modifier key tests (meta, line)",
   2553      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2554               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2555               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2556               isCustomizedByPrefs: false,
   2557               shiftKey: false, ctrlKey: false, altKey: false, metaKey: true },
   2558      wheel: {
   2559        expected: true, preventDefault: false,
   2560        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2561      },
   2562      DOMMouseScroll: {
   2563        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2564        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2565      MozMousePixelScroll: {
   2566        horizontal: { expected: true,  preventDefault: true,  detail: gHorizontalLine },
   2567        vertical:   { expected: true,  preventDefault: true,  detail: gLineHeight } },
   2568    },
   2569    { description: "modifier key tests (meta, page)",
   2570      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2571               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: true,
   2572               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2573               isCustomizedByPrefs: false,
   2574               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2575      wheel: {
   2576        expected: true, preventDefault: false,
   2577        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2578      },
   2579      DOMMouseScroll: {
   2580        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2581        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2582      MozMousePixelScroll: {
   2583        horizontal: { expected: true,  preventDefault: true,  detail: gPageWidth },
   2584        vertical:   { expected: true,  preventDefault: true,  detail: gPageHeight } },
   2585    },
   2586 
   2587    // Momentum scroll should cause legacy events.
   2588    { description: "Momentum scroll should cause legacy events (pixel, not momentum)",
   2589      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2590               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: false,
   2591               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2592               isCustomizedByPrefs: false,
   2593               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2594      wheel: {
   2595        expected: true, preventDefault: false,
   2596        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2597      },
   2598      DOMMouseScroll: {
   2599        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2600        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2601      MozMousePixelScroll: {
   2602        horizontal: { expected: true,  preventDefault: false, detail: 16 },
   2603        vertical:   { expected: true,  preventDefault: false, detail: 16 } },
   2604    },
   2605    { description: "Momentum scroll should cause legacy events (pixel, momentum)",
   2606      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2607               deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0, isMomentum: true,
   2608               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2609               isCustomizedByPrefs: false,
   2610               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2611      wheel: {
   2612        expected: true, preventDefault: false,
   2613        deltaX: 16.0, deltaY: 16.0, deltaZ: 16.0
   2614      },
   2615      DOMMouseScroll: {
   2616        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2617        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2618      MozMousePixelScroll: {
   2619        horizontal: { expected: true,  preventDefault: false, detail: 16 },
   2620        vertical:   { expected: true,  preventDefault: false, detail: 16 } },
   2621    },
   2622    { description: "Momentum scroll should cause legacy events (line, not momentum)",
   2623      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2624               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2625               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2626               isCustomizedByPrefs: false,
   2627               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2628      wheel: {
   2629        expected: true, preventDefault: false,
   2630        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2631      },
   2632      DOMMouseScroll: {
   2633        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2634        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2635      MozMousePixelScroll: {
   2636        horizontal: { expected: true,  preventDefault: false, detail: gHorizontalLine },
   2637        vertical:   { expected: true,  preventDefault: false, detail: gLineHeight } },
   2638    },
   2639    { description: "Momentum scroll should cause legacy events (line, momentum)",
   2640      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2641               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: true,
   2642               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2643               isCustomizedByPrefs: false,
   2644               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2645      wheel: {
   2646        expected: true, preventDefault: false,
   2647        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2648      },
   2649      DOMMouseScroll: {
   2650        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2651        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2652      MozMousePixelScroll: {
   2653        horizontal: { expected: true,  preventDefault: false, detail: gHorizontalLine },
   2654        vertical:   { expected: true,  preventDefault: false, detail: gLineHeight } },
   2655    },
   2656    { description: "Momentum scroll should cause legacy events (page, not momentum)",
   2657      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2658               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: false,
   2659               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2660               isCustomizedByPrefs: false,
   2661               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2662      wheel: {
   2663        expected: true, preventDefault: false,
   2664        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2665      },
   2666      DOMMouseScroll: {
   2667        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2668        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2669      MozMousePixelScroll: {
   2670        horizontal: { expected: true,  preventDefault: false, detail: gPageWidth },
   2671        vertical:   { expected: true,  preventDefault: false, detail: gPageHeight } },
   2672    },
   2673    { description: "Momentum scroll should cause legacy events (page, momentum)",
   2674      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2675               deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0, isMomentum: true,
   2676               lineOrPageDeltaX: 1, lineOrPageDeltaY: 1, isNoLineOrPageDelta: false,
   2677               isCustomizedByPrefs: false,
   2678               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2679      wheel: {
   2680        expected: true, preventDefault: false,
   2681        deltaX: 1.0, deltaY: 1.0, deltaZ: 1.0
   2682      },
   2683      DOMMouseScroll: {
   2684        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2685        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2686      MozMousePixelScroll: {
   2687        horizontal: { expected: true,  preventDefault: false, detail: gPageWidth },
   2688        vertical:   { expected: true,  preventDefault: false, detail: gPageHeight } },
   2689    },
   2690 
   2691    // Tests for accumulation delta when delta_multiplier_is customized.
   2692    { description: "lineOrPageDelta should be recomputed by ESM (pixel) #1",
   2693      prepare () {
   2694        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 200],
   2695                                           ["mousewheel.default.delta_multiplier_y", 300]]},
   2696                                  continueTest);
   2697      },
   2698      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2699               deltaX: gHorizontalLine / 4, deltaY: gLineHeight / 8, deltaZ: 0,
   2700               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2701               isCustomizedByPrefs: false,
   2702               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2703      wheel: {
   2704        expected: true, preventDefault: false,
   2705        deltaX: gHorizontalLine / 4 * 2, deltaY: gLineHeight / 8 * 3, deltaZ: 0
   2706      },
   2707      DOMMouseScroll: {
   2708        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2709        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2710      MozMousePixelScroll: {
   2711        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine / 4 * 2) },
   2712        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight / 8 * 3) } },
   2713    },
   2714    { description: "lineOrPageDelta should be recomputed by ESM (pixel) #2",
   2715      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2716               deltaX: gHorizontalLine / 4 + 1, deltaY: gLineHeight / 8 + 1, deltaZ: 0,
   2717               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2718               isCustomizedByPrefs: false,
   2719               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2720      wheel: {
   2721        expected: true, preventDefault: false,
   2722        deltaX: (gHorizontalLine / 4 + 1) * 2, deltaY: (gLineHeight / 8 + 1) * 3, deltaZ: 0
   2723      },
   2724      DOMMouseScroll: {
   2725        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2726        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2727      MozMousePixelScroll: {
   2728        horizontal: { expected: true,   preventDefault: false, detail: Math.floor((gHorizontalLine / 4 + 1) * 2) },
   2729        vertical:   { expected: true,   preventDefault: false, detail: Math.floor((gLineHeight / 8 + 1) * 3) } },
   2730    },
   2731    { description: "lineOrPageDelta should be recomputed by ESM (pixel) #3",
   2732      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2733               deltaX: gHorizontalLine / 4 + 1, deltaY: gLineHeight / 8 + 1, deltaZ: 0,
   2734               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2735               isCustomizedByPrefs: false,
   2736               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2737      wheel: {
   2738        expected: true, preventDefault: false,
   2739        deltaX: (gHorizontalLine / 4 + 1) * 2, deltaY: (gLineHeight / 8 + 1) * 3, deltaZ: 0
   2740      },
   2741      DOMMouseScroll: {
   2742        horizontal: { expected: false,  preventDefault: false, detail: 0 },
   2743        vertical:   { expected: true,   preventDefault: false, detail: 1 } },
   2744      MozMousePixelScroll: {
   2745        horizontal: { expected: true,   preventDefault: false, detail: Math.floor((gHorizontalLine / 4 + 1) * 2) },
   2746        vertical:   { expected: true,   preventDefault: false, detail: Math.floor((gLineHeight / 8 + 1) * 3) } },
   2747      finished () {
   2748        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100],
   2749                                           ["mousewheel.default.delta_multiplier_y", 100]]},
   2750                                  continueTest);
   2751      },
   2752    },
   2753 
   2754    { description: "lineOrPageDelta should be recomputed by ESM (pixel, negative, shift) #1",
   2755      prepare () {
   2756        SpecialPowers.pushPrefEnv({"set": [["mousewheel.with_shift.delta_multiplier_x", 200],
   2757                                           ["mousewheel.with_shift.delta_multiplier_y", 300]]},
   2758                                  continueTest);
   2759      },
   2760      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2761               deltaX: -gHorizontalLine / 4, deltaY: -gLineHeight / 8, deltaZ: 0,
   2762               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   2763               isCustomizedByPrefs: false,
   2764               shiftKey: true, ctrlKey: false, altKey: false, metaKey: false },
   2765      wheel: {
   2766        expected: true, preventDefault: false,
   2767        deltaX: -gHorizontalLine / 4 * 2, deltaY: -gLineHeight / 8 * 3, deltaZ: 0
   2768      },
   2769      DOMMouseScroll: {
   2770        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2771        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2772      MozMousePixelScroll: {
   2773        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(-gHorizontalLine / 4 * 2) },
   2774        vertical:   { expected: true,  preventDefault: false, detail: Math.ceil(-gLineHeight / 8 * 3) } },
   2775    },
   2776    { description: "lineOrPageDelta should be recomputed by ESM (pixel, negative, shift) #2",
   2777      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2778               deltaX: -(gHorizontalLine / 4 + 1), deltaY: -(gLineHeight / 8 + 1), deltaZ: 0,
   2779               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   2780               isCustomizedByPrefs: false,
   2781               shiftKey: true, ctrlKey: false, altKey: false, metaKey: false },
   2782      wheel: {
   2783        expected: true, preventDefault: false,
   2784        deltaX: -(gHorizontalLine / 4 + 1) * 2, deltaY: -(gLineHeight / 8 + 1) * 3, deltaZ: 0
   2785      },
   2786      DOMMouseScroll: {
   2787        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   2788        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2789      MozMousePixelScroll: {
   2790        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(-(gHorizontalLine / 4 + 1) * 2) },
   2791        vertical:   { expected: true,  preventDefault: false, detail: Math.ceil(-(gLineHeight / 8 + 1) * 3) } },
   2792    },
   2793    { description: "lineOrPageDelta should be recomputed by ESM (pixel, negative, shift) #3",
   2794      event: { deltaMode: WheelEvent.DOM_DELTA_PIXEL,
   2795               deltaX: -(gHorizontalLine / 4 + 1), deltaY: -(gLineHeight / 8 + 1), deltaZ: 0,
   2796               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2797               isCustomizedByPrefs: false,
   2798               shiftKey: true, ctrlKey: false, altKey: false, metaKey: false },
   2799      wheel: {
   2800        expected: true, preventDefault: false,
   2801        deltaX: -(gHorizontalLine / 4 + 1) * 2, deltaY: -(gLineHeight / 8 + 1) * 3, deltaZ: 0
   2802      },
   2803      DOMMouseScroll: {
   2804        horizontal: { expected: false,  preventDefault: false, detail: 0 },
   2805        vertical:   { expected: true,   preventDefault: false, detail: -1 } },
   2806      MozMousePixelScroll: {
   2807        horizontal: { expected: true,   preventDefault: false, detail: Math.ceil(-(gHorizontalLine / 4 + 1) * 2) },
   2808        vertical:   { expected: true,   preventDefault: false, detail: Math.ceil(-(gLineHeight / 8 + 1) * 3) } },
   2809      finished () {
   2810        SpecialPowers.pushPrefEnv({"set": [["mousewheel.with_shift.delta_multiplier_x", 100],
   2811                                           ["mousewheel.with_shift.delta_multiplier_y", 100]]},
   2812                                  continueTest);
   2813      },
   2814    },
   2815 
   2816    { description: "lineOrPageDelta should be recomputed by ESM (line) #1",
   2817      prepare () {
   2818        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 200],
   2819                                           ["mousewheel.default.delta_multiplier_y", 100]]},
   2820                                  continueTest);
   2821      },
   2822      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2823               deltaX: 0.3, deltaY: 0.4, deltaZ: 0,
   2824               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2825               isCustomizedByPrefs: false,
   2826               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2827      wheel: {
   2828        expected: true, preventDefault: false,
   2829        deltaX: 0.6, deltaY: 0.4, deltaZ: 0
   2830      },
   2831      DOMMouseScroll: {
   2832        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2833        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2834      MozMousePixelScroll: {
   2835        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine * 0.6) },
   2836        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } },
   2837    },
   2838    { description: "lineOrPageDelta should be recomputed by ESM (line) #2",
   2839      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2840               deltaX: 0.3, deltaY: 0.4, deltaZ: 0,
   2841               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2842               isCustomizedByPrefs: false,
   2843               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2844      wheel: {
   2845        expected: true, preventDefault: false,
   2846        deltaX: 0.6, deltaY: 0.4, deltaZ: 0
   2847      },
   2848      DOMMouseScroll: {
   2849        horizontal: { expected: true,  preventDefault: false, detail: 1 },
   2850        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2851      MozMousePixelScroll: {
   2852        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine * 0.6) },
   2853        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } },
   2854    },
   2855    { description: "lineOrPageDelta should be recomputed by ESM (line) #3",
   2856      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2857               deltaX: 0.3, deltaY: 0.4, deltaZ: 0,
   2858               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2859               isCustomizedByPrefs: false,
   2860               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2861      wheel: {
   2862        expected: true, preventDefault: false,
   2863        deltaX: 0.6, deltaY: 0.4, deltaZ: 0
   2864      },
   2865      DOMMouseScroll: {
   2866        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2867        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2868      MozMousePixelScroll: {
   2869        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gHorizontalLine * 0.6) },
   2870        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } },
   2871      finished () {
   2872        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100],
   2873                                           ["mousewheel.default.delta_multiplier_y", 100]]},
   2874                                  continueTest);
   2875      },
   2876    },
   2877 
   2878    { description: "lineOrPageDelta should be recomputed by ESM (line, negative) #1",
   2879      prepare () {
   2880        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 200],
   2881                                           ["mousewheel.default.delta_multiplier_y", -100]]},
   2882                                  continueTest);
   2883      },
   2884      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2885               deltaX: -0.3, deltaY: -0.4, deltaZ: 0,
   2886               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   2887               isCustomizedByPrefs: false,
   2888               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2889      wheel: {
   2890        expected: true, preventDefault: false,
   2891        deltaX: -0.6, deltaY: 0.4, deltaZ: 0
   2892      },
   2893      DOMMouseScroll: {
   2894        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2895        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2896      MozMousePixelScroll: {
   2897        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(gHorizontalLine * -0.6) },
   2898        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } },
   2899    },
   2900    { description: "lineOrPageDelta should be recomputed by ESM (line, negative) #2",
   2901      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2902               deltaX: -0.3, deltaY: -0.4, deltaZ: 0,
   2903               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   2904               isCustomizedByPrefs: false,
   2905               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2906      wheel: {
   2907        expected: true, preventDefault: false,
   2908        deltaX: -0.6, deltaY: 0.4, deltaZ: 0
   2909      },
   2910      DOMMouseScroll: {
   2911        horizontal: { expected: true,  preventDefault: false, detail: -1 },
   2912        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2913      MozMousePixelScroll: {
   2914        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(gHorizontalLine * -0.6) },
   2915        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } },
   2916    },
   2917    { description: "lineOrPageDelta should be recomputed by ESM (line, negative) #3",
   2918      event: { deltaMode: WheelEvent.DOM_DELTA_LINE,
   2919               deltaX: -0.3, deltaY: -0.4, deltaZ: 0,
   2920               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   2921               isCustomizedByPrefs: false,
   2922               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2923      wheel: {
   2924        expected: true, preventDefault: false,
   2925        deltaX: -0.6, deltaY: 0.4, deltaZ: 0
   2926      },
   2927      DOMMouseScroll: {
   2928        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2929        vertical:   { expected: true,  preventDefault: false, detail: 1 } },
   2930      MozMousePixelScroll: {
   2931        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(gHorizontalLine * -0.6) },
   2932        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gLineHeight * 0.4) } },
   2933      finished () {
   2934        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100],
   2935                                           ["mousewheel.default.delta_multiplier_y", 100]]},
   2936                                  continueTest);
   2937      },
   2938    },
   2939 
   2940    { description: "lineOrPageDelta should be recomputed by ESM (page) #1",
   2941      prepare () {
   2942        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100],
   2943                                           ["mousewheel.default.delta_multiplier_y", 200]]},
   2944                                  continueTest);
   2945      },
   2946      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2947               deltaX: 0.3, deltaY: 0.4, deltaZ: 0,
   2948               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2949               isCustomizedByPrefs: false,
   2950               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2951      wheel: {
   2952        expected: true, preventDefault: false,
   2953        deltaX: 0.3, deltaY: 0.8, deltaZ: 0
   2954      },
   2955      DOMMouseScroll: {
   2956        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2957        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   2958      MozMousePixelScroll: {
   2959        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth * 0.3) },
   2960        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight * 0.8) } },
   2961    },
   2962    { description: "lineOrPageDelta should be recomputed by ESM (page) #2",
   2963      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2964               deltaX: 0.3, deltaY: 0.4, deltaZ: 0,
   2965               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2966               isCustomizedByPrefs: false,
   2967               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2968      wheel: {
   2969        expected: true, preventDefault: false,
   2970        deltaX: 0.3, deltaY: 0.8, deltaZ: 0
   2971      },
   2972      DOMMouseScroll: {
   2973        horizontal: { expected: false, preventDefault: false, detail: 0 },
   2974        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2975      MozMousePixelScroll: {
   2976        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth * 0.3) },
   2977        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight * 0.8) } },
   2978    },
   2979    { description: "lineOrPageDelta should be recomputed by ESM (page) #3",
   2980      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   2981               deltaX: 0.4, deltaY: 0.4, deltaZ: 0,
   2982               lineOrPageDeltaX: 3, lineOrPageDeltaY: 5, isNoLineOrPageDelta: false,
   2983               isCustomizedByPrefs: false,
   2984               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   2985      wheel: {
   2986        expected: true, preventDefault: false,
   2987        deltaX: 0.4, deltaY: 0.8, deltaZ: 0
   2988      },
   2989      DOMMouseScroll: {
   2990        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN },
   2991        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_DOWN } },
   2992      MozMousePixelScroll: {
   2993        horizontal: { expected: true,  preventDefault: false, detail: Math.floor(gPageWidth * 0.4) },
   2994        vertical:   { expected: true,  preventDefault: false, detail: Math.floor(gPageHeight * 0.8) } },
   2995      finished () {
   2996        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100],
   2997                                           ["mousewheel.default.delta_multiplier_y", 100]]},
   2998                                  continueTest);
   2999      },
   3000    },
   3001 
   3002    { description: "lineOrPageDelta should be recomputed by ESM (page, negative) #1",
   3003      prepare () {
   3004        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100],
   3005                                           ["mousewheel.default.delta_multiplier_y", 200]]},
   3006                                  continueTest);
   3007      },
   3008      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   3009               deltaX: -0.3, deltaY: -0.4, deltaZ: 0,
   3010               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   3011               isCustomizedByPrefs: false,
   3012               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   3013      wheel: {
   3014        expected: true, preventDefault: false,
   3015        deltaX: -0.3, deltaY: -0.8, deltaZ: 0
   3016      },
   3017      DOMMouseScroll: {
   3018        horizontal: { expected: false, preventDefault: false, detail: 0 },
   3019        vertical:   { expected: false, preventDefault: false, detail: 0 } },
   3020      MozMousePixelScroll: {
   3021        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(gPageWidth * -0.3) },
   3022        vertical:   { expected: true,  preventDefault: false, detail: Math.ceil(gPageHeight * -0.8) } },
   3023    },
   3024    { description: "lineOrPageDelta should be recomputed by ESM (page, negative) #2",
   3025      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   3026               deltaX: -0.3, deltaY: -0.4, deltaZ: 0,
   3027               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   3028               isCustomizedByPrefs: false,
   3029               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   3030      wheel: {
   3031        expected: true, preventDefault: false,
   3032        deltaX: -0.3, deltaY: -0.8, deltaZ: 0
   3033      },
   3034      DOMMouseScroll: {
   3035        horizontal: { expected: false, preventDefault: false, detail: 0 },
   3036        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } },
   3037      MozMousePixelScroll: {
   3038        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(gPageWidth * -0.3) },
   3039        vertical:   { expected: true,  preventDefault: false, detail: Math.ceil(gPageHeight * -0.8) } },
   3040    },
   3041    { description: "lineOrPageDelta should be recomputed by ESM (page, negative) #3",
   3042      event: { deltaMode: WheelEvent.DOM_DELTA_PAGE,
   3043               deltaX: -0.4, deltaY: -0.4, deltaZ: 0,
   3044               lineOrPageDeltaX: -3, lineOrPageDeltaY: -5, isNoLineOrPageDelta: false,
   3045               isCustomizedByPrefs: false,
   3046               shiftKey: false, ctrlKey: false, altKey: false, metaKey: false },
   3047      wheel: {
   3048        expected: true, preventDefault: false,
   3049        deltaX: -0.4, deltaY: -0.8, deltaZ: 0
   3050      },
   3051      DOMMouseScroll: {
   3052        horizontal: { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP },
   3053        vertical:   { expected: true,  preventDefault: false, detail: UIEvent.SCROLL_PAGE_UP } },
   3054      MozMousePixelScroll: {
   3055        horizontal: { expected: true,  preventDefault: false, detail: Math.ceil(gPageWidth * -0.4) },
   3056        vertical:   { expected: true,  preventDefault: false, detail: Math.ceil(gPageHeight * -0.8) } },
   3057      finished () {
   3058        SpecialPowers.pushPrefEnv({"set": [["mousewheel.default.delta_multiplier_x", 100],
   3059                                           ["mousewheel.default.delta_multiplier_y", 100]]},
   3060                                  continueTest);
   3061      },
   3062    },
   3063  ];
   3064 
   3065  var currentWheelEventTest;
   3066  var calledHandlers = { wheel: false,
   3067                         DOMMouseScroll: { horizontal: false, vertical: false },
   3068                         MozMousePixelScroll: { horizontal: false, vertical: false } };
   3069 
   3070  function wheelEventHandler(aEvent)
   3071  {
   3072    var description = "testContinuousTrustedEvents, ";
   3073    description += currentWheelEventTest.description + ": wheel event ";
   3074 
   3075    ok(!calledHandlers.wheel,
   3076       description + "was fired twice or more");
   3077    calledHandlers.wheel = true;
   3078 
   3079    is(aEvent.target, gScrolledElement,
   3080       description + "target was invalid");
   3081    if (!currentWheelEventTest.wheel.skipDeltaModeCheck) {
   3082      is(aEvent.deltaMode, currentWheelEventTest.event.deltaMode,
   3083         description + "deltaMode was invalid");
   3084    }
   3085    is(SpecialPowers.wrap(aEvent).deltaMode, currentWheelEventTest.event.deltaMode,
   3086       description + "deltaMode is raw value from privileged script");
   3087    for (let prop of ["deltaX", "deltaY", "deltaZ"]) {
   3088      is(aEvent[prop], currentWheelEventTest.wheel[prop],
   3089         description + prop + " was invalid");
   3090      if (currentWheelEventTest.wheel.skipDeltaModeCheck) {
   3091        is(aEvent.deltaMode, WheelEvent.DOM_DELTA_PIXEL,
   3092           description + "deltaMode should become pixels for line scrolling if unchecked by content")
   3093        if (aEvent[prop] != 0) {
   3094          isnot(aEvent[prop], SpecialPowers.wrap(aEvent)[prop],
   3095                description + "should keep returning raw value for privileged script");
   3096        }
   3097      }
   3098    }
   3099    is(aEvent.shiftKey, currentWheelEventTest.event.shiftKey,
   3100       description + "shiftKey was invalid");
   3101    is(aEvent.ctrlKey, currentWheelEventTest.event.ctrlKey,
   3102       description + "ctrlKey was invalid");
   3103    is(aEvent.altKey, currentWheelEventTest.event.altKey,
   3104       description + "shiftKey was invalid");
   3105    is(aEvent.metaKey, currentWheelEventTest.event.metaKey,
   3106       description + "metaKey was invalid");
   3107 
   3108    ok(!aEvent.defaultPrevented,
   3109       description + "defaultPrevented should be false");
   3110    if (currentWheelEventTest.wheel.preventDefault) {
   3111      aEvent.preventDefault();
   3112      ok(aEvent.defaultPrevented,
   3113         description + "defaultPrevented should be true");
   3114    }
   3115  }
   3116 
   3117  function legacyEventHandler(aEvent)
   3118  {
   3119    var description = "testContinuousTrustedEvents, ";
   3120    description += currentWheelEventTest.description + ": " + aEvent.type + " event ";
   3121 
   3122    if (aEvent.axis != MouseScrollEvent.HORIZONTAL_AXIS &&
   3123        aEvent.axis != MouseScrollEvent.VERTICAL_AXIS) {
   3124      ok(false,
   3125         description + "had invalid axis (" + aEvent.axis + ")");
   3126      return;
   3127    }
   3128 
   3129    var isHorizontal = (aEvent.axis == MouseScrollEvent.HORIZONTAL_AXIS);
   3130 
   3131    description += isHorizontal ? "(horizontal) " : "(vertical) ";
   3132 
   3133    var isScrollEvent = (aEvent.type == "DOMMouseScroll");
   3134    var expectedEvent =
   3135      isScrollEvent ? currentWheelEventTest.DOMMouseScroll :
   3136                      currentWheelEventTest.MozMousePixelScroll;
   3137    var expected =
   3138      isHorizontal ? expectedEvent.horizontal : expectedEvent.vertical;
   3139 
   3140    if (aEvent.type == "DOMMouseScroll") {
   3141      if (isHorizontal) {
   3142        ok(!calledHandlers.DOMMouseScroll.horizontal,
   3143           description + "was fired twice or more");
   3144        calledHandlers.DOMMouseScroll.horizontal = true;
   3145      } else {
   3146        ok(!calledHandlers.DOMMouseScroll.vertical,
   3147           description + "was fired twice or more");
   3148        calledHandlers.DOMMouseScroll.vertical = true;
   3149      }
   3150    } else {
   3151      if (isHorizontal) {
   3152        ok(!calledHandlers.MozMousePixelScroll.horizontal,
   3153           description + "was fired twice or more");
   3154        calledHandlers.MozMousePixelScroll.horizontal = true;
   3155      } else {
   3156        ok(!calledHandlers.MozMousePixelScroll.vertical,
   3157           description + "was fired twice or more");
   3158        calledHandlers.MozMousePixelScroll.vertical = true;
   3159      }
   3160    }
   3161 
   3162    is(aEvent.target, gScrolledElement,
   3163       description + "target was invalid");
   3164    is(aEvent.detail, expected.detail,
   3165       description + "detail was invalid");
   3166 
   3167    is(aEvent.shiftKey, currentWheelEventTest.event.shiftKey,
   3168       description + "shiftKey was invalid");
   3169    is(aEvent.ctrlKey, currentWheelEventTest.event.ctrlKey,
   3170       description + "ctrlKey was invalid");
   3171    is(aEvent.altKey, currentWheelEventTest.event.altKey,
   3172       description + "shiftKey was invalid");
   3173    is(aEvent.metaKey, currentWheelEventTest.event.metaKey,
   3174       description + "metaKey was invalid");
   3175 
   3176    var expectedDefaultPrevented =
   3177      isScrollEvent ? false :
   3178      isHorizontal ? currentWheelEventTest.DOMMouseScroll.horizontal.preventDefault :
   3179                     currentWheelEventTest.DOMMouseScroll.vertical.preventDefault;
   3180    is(aEvent.defaultPrevented, expectedDefaultPrevented,
   3181       description + "defaultPrevented should be " + expectedDefaultPrevented);
   3182 
   3183    if (expected.preventDefault) {
   3184      aEvent.preventDefault();
   3185      ok(aEvent.defaultPrevented,
   3186         description + "defaultPrevented should be true");
   3187    }
   3188  }
   3189 
   3190  window.addEventListener("wheel", wheelEventHandler, { capture: true, passive: false });
   3191  window.addEventListener("DOMMouseScroll", legacyEventHandler, { capture: true, passive: false });
   3192  window.addEventListener("MozMousePixelScroll", legacyEventHandler, { capture: true, passive: false });
   3193 
   3194  for (var i = 0; i < kSynthesizedWheelEventTests.length; i++) {
   3195    gScrollableElement.scrollTop = gScrollableElement.scrollBottom = 1000;
   3196 
   3197    currentWheelEventTest = kSynthesizedWheelEventTests[i];
   3198 
   3199    if (currentWheelEventTest.prepare) {
   3200      yield currentWheelEventTest.prepare();
   3201    }
   3202 
   3203    yield sendWheelAndWait(10, 10, currentWheelEventTest.event);
   3204 
   3205    if (currentWheelEventTest.finished) {
   3206      yield currentWheelEventTest.finished();
   3207    }
   3208 
   3209    var description = "testContinuousTrustedEvents, " +
   3210      currentWheelEventTest.description + ": ";
   3211    is(calledHandlers.wheel, currentWheelEventTest.wheel.expected,
   3212       description + "wheel event was fired or not fired");
   3213    is(calledHandlers.DOMMouseScroll.horizontal,
   3214       currentWheelEventTest.DOMMouseScroll.horizontal.expected,
   3215       description + "horizontal DOMMouseScroll event was fired or not fired");
   3216    is(calledHandlers.DOMMouseScroll.vertical,
   3217       currentWheelEventTest.DOMMouseScroll.vertical.expected,
   3218       description + "vertical DOMMouseScroll event was fired or not fired");
   3219    is(calledHandlers.MozMousePixelScroll.horizontal,
   3220       currentWheelEventTest.MozMousePixelScroll.horizontal.expected,
   3221       description + "horizontal MozMousePixelScroll event was fired or not fired");
   3222    is(calledHandlers.MozMousePixelScroll.vertical,
   3223       currentWheelEventTest.MozMousePixelScroll.vertical.expected,
   3224       description + "vertical MozMousePixelScroll event was fired or not fired");
   3225 
   3226    calledHandlers = { wheel: false,
   3227                       DOMMouseScroll: { horizontal: false, vertical: false },
   3228                       MozMousePixelScroll: { horizontal: false, vertical: false } };
   3229  }
   3230 
   3231  window.removeEventListener("wheel", wheelEventHandler, true);
   3232  window.removeEventListener("DOMMouseScroll", legacyEventHandler, true);
   3233  window.removeEventListener("MozMousePixelScroll", legacyEventHandler, true);
   3234 }
   3235 
   3236 var gTestContinuation = null;
   3237 
   3238 function continueTest()
   3239 {
   3240  if (!gTestContinuation) {
   3241    gTestContinuation = testBody();
   3242  }
   3243  var ret = gTestContinuation.next();
   3244  if (ret.done) {
   3245    SimpleTest.finish();
   3246  }
   3247 }
   3248 
   3249 function* testBody()
   3250 {
   3251  yield* prepareScrollUnits();
   3252  yield* testContinuousTrustedEvents();
   3253 }
   3254 
   3255 function runTests()
   3256 {
   3257  SpecialPowers.pushPrefEnv({"set": [
   3258    // FIXME(emilio): This test is broken in HiDPI, unclear if
   3259    // MozMousePixelScroll is not properly converting to CSS pixels, or
   3260    // whether sendWheelAndWait expectes device rather than CSS pixels, or
   3261    // something else.
   3262    ["layout.css.devPixelsPerPx", 1.0],
   3263 
   3264    ["dom.event.wheel-deltaMode-lines.disabled", true],
   3265 
   3266    ["mousewheel.system_scroll_override.enabled", false],
   3267 
   3268    ["mousewheel.transaction.timeout", 100000],
   3269    ["mousewheel.default.delta_multiplier_x", 100],
   3270    ["mousewheel.default.delta_multiplier_y", 100],
   3271    ["mousewheel.default.delta_multiplier_z", 100],
   3272    ["mousewheel.with_alt.delta_multiplier_x", 100],
   3273    ["mousewheel.with_alt.delta_multiplier_y", 100],
   3274    ["mousewheel.with_alt.delta_multiplier_z", 100],
   3275    ["mousewheel.with_control.delta_multiplier_x", 100],
   3276    ["mousewheel.with_control.delta_multiplier_y", 100],
   3277    ["mousewheel.with_control.delta_multiplier_z", 100],
   3278    ["mousewheel.with_meta.delta_multiplier_x", 100],
   3279    ["mousewheel.with_meta.delta_multiplier_y", 100],
   3280    ["mousewheel.with_meta.delta_multiplier_z", 100],
   3281    ["mousewheel.with_shift.delta_multiplier_x", 100],
   3282    ["mousewheel.with_shift.delta_multiplier_y", 100],
   3283    ["mousewheel.with_shift.delta_multiplier_z", 100],
   3284 
   3285    ["test.events.async.enabled", true]
   3286  ]}, continueTest);
   3287 }
   3288 </script>
   3289 </pre>
   3290 </body>
   3291 </html>