dom/events/test/test_continuous_wheel_events.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

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

mercurial