Bug 1426250 - allow EventUtils to dispatch drag/mouse events through the DOM only, r?enndeakin draft
authorGijs Kruitbosch <gijskruitbosch@gmail.com>
Fri, 05 Jan 2018 21:30:42 +0000
changeset 717669 4a29dfc44a10a66f5ecd242740d976653d4448af
parent 717183 ca379fcca95b1f4a3744242ea8647004b99b3507
child 717670 da16c6bfb67b06d03ded21f5a5eaa7d37a610d04
push id94744
push userbmo:gijskruitbosch+bugs@gmail.com
push dateTue, 09 Jan 2018 10:07:53 +0000
reviewersenndeakin
bugs1426250
milestone59.0a1
Bug 1426250 - allow EventUtils to dispatch drag/mouse events through the DOM only, r?enndeakin MozReview-Commit-ID: HmdRdTQ05pm
testing/mochitest/tests/SimpleTest/EventUtils.js
--- a/testing/mochitest/tests/SimpleTest/EventUtils.js
+++ b/testing/mochitest/tests/SimpleTest/EventUtils.js
@@ -206,16 +206,20 @@ function sendDragEvent(aEvent, aTarget, 
   var relatedTargetArg = aEvent.relatedTarget || null;
   var dataTransfer     = aEvent.dataTransfer  || null;
 
   event.initDragEvent(typeArg, canBubbleArg, cancelableArg, viewArg, detailArg,
                       screenXArg, screenYArg, clientXArg, clientYArg,
                       ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg,
                       buttonArg, relatedTargetArg, dataTransfer);
 
+  if (aEvent._domDispatchOnly) {
+    return aTarget.dispatchEvent(event);
+  }
+
   var utils = _getDOMWindowUtils(aWindow);
   return utils.dispatchDOMEventViaPresShell(aTarget, event, true);
 }
 
 /**
  * Send the char aChar to the focused element.  This method handles casing of
  * chars (sends the right charcode, and sends a shift key for uppercase chars).
  * No other modifiers are handled at this point.
@@ -2129,16 +2133,17 @@ function createDragEventObject(aType, aD
   // nsContentUtils::SetDataTransferInEvent for actual impl).
   dataTransfer.dropEffect = aDataTransfer.dropEffect;
 
   return Object.assign({
     type: aType,
     screenX: destScreenX, screenY: destScreenY,
     clientX: destClientX, clientY: destClientY,
     dataTransfer: dataTransfer,
+    _domDispatchOnly: aDragEvent._domDispatchOnly,
   }, aDragEvent);
 }
 
 /**
  * Emulate a event sequence of dragstart, dragenter, and dragover.
  *
  * @param aSrcElement   The element to use to start the drag.
  * @param aDestElement  The element to fire the dragover, dragenter events