mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-30 07:48:02 +02:00 
			
		
		
		
	Bug 1957531 - Add EnableAsync flag to nsDOMWindowUtils::SendTouchEvent r=whimboo,hiro,smaug
Differential Revision: https://phabricator.services.mozilla.com/D252173
This commit is contained in:
		
							parent
							
								
									e0d0176607
								
							
						
					
					
						commit
						4ec58d14d6
					
				
					 5 changed files with 131 additions and 124 deletions
				
			
		|  | @ -897,28 +897,24 @@ nsDOMWindowUtils::SendTouchEvent( | |||
|     const nsTArray<float>& aRotationAngles, const nsTArray<float>& aForces, | ||||
|     const nsTArray<int32_t>& aTiltXs, const nsTArray<int32_t>& aTiltYs, | ||||
|     const nsTArray<int32_t>& aTwists, int32_t aModifiers, | ||||
|     bool* aPreventDefault) { | ||||
|   return SendTouchEventCommon(aType, aIdentifiers, aXs, aYs, aRxs, aRys, | ||||
|                               aRotationAngles, aForces, aTiltXs, aTiltYs, | ||||
|                               aTwists, aModifiers, | ||||
|                               /* aIsPen */ false, | ||||
|                               /* aToWindow */ false, aPreventDefault); | ||||
|     AsyncEnabledOption aAsyncEnabled, bool* aPreventDefault) { | ||||
|   return SendTouchEventCommon( | ||||
|       aType, aIdentifiers, aXs, aYs, aRxs, aRys, aRotationAngles, aForces, | ||||
|       aTiltXs, aTiltYs, aTwists, aModifiers, /* aIsPen */ false, | ||||
|       /* aToWindow */ false, aAsyncEnabled, aPreventDefault); | ||||
| } | ||||
| 
 | ||||
| NS_IMETHODIMP | ||||
| nsDOMWindowUtils::SendTouchEventAsPen(const nsAString& aType, | ||||
|                                       uint32_t aIdentifier, int32_t aX, | ||||
|                                       int32_t aY, uint32_t aRx, uint32_t aRy, | ||||
|                                       float aRotationAngle, float aForce, | ||||
|                                       int32_t aTiltX, int32_t aTiltY, | ||||
|                                       int32_t aTwist, int32_t aModifier, | ||||
|                                       bool* aPreventDefault) { | ||||
| nsDOMWindowUtils::SendTouchEventAsPen( | ||||
|     const nsAString& aType, uint32_t aIdentifier, int32_t aX, int32_t aY, | ||||
|     uint32_t aRx, uint32_t aRy, float aRotationAngle, float aForce, | ||||
|     int32_t aTiltX, int32_t aTiltY, int32_t aTwist, int32_t aModifier, | ||||
|     AsyncEnabledOption aAsyncEnabled, bool* aPreventDefault) { | ||||
|   return SendTouchEventCommon( | ||||
|       aType, nsTArray{aIdentifier}, nsTArray{aX}, nsTArray{aY}, nsTArray{aRx}, | ||||
|       nsTArray{aRy}, nsTArray{aRotationAngle}, nsTArray{aForce}, | ||||
|       nsTArray{aTiltX}, nsTArray{aTiltY}, nsTArray{aTwist}, aModifier, | ||||
|       /* aIsPen */ true, | ||||
|       /* aToWindow */ false, aPreventDefault); | ||||
|       /* aIsPen */ true, /* aToWindow */ false, aAsyncEnabled, aPreventDefault); | ||||
| } | ||||
| 
 | ||||
| NS_IMETHODIMP | ||||
|  | @ -930,11 +926,11 @@ nsDOMWindowUtils::SendTouchEventToWindow( | |||
|     const nsTArray<int32_t>& aTiltXs, const nsTArray<int32_t>& aTiltYs, | ||||
|     const nsTArray<int32_t>& aTwists, int32_t aModifiers, | ||||
|     bool* aPreventDefault) { | ||||
|   return SendTouchEventCommon(aType, aIdentifiers, aXs, aYs, aRxs, aRys, | ||||
|                               aRotationAngles, aForces, aTiltXs, aTiltYs, | ||||
|                               aTwists, aModifiers, | ||||
|                               /* aIsPen */ false, | ||||
|                               /* aToWindow */ true, aPreventDefault); | ||||
|   return SendTouchEventCommon( | ||||
|       aType, aIdentifiers, aXs, aYs, aRxs, aRys, aRotationAngles, aForces, | ||||
|       aTiltXs, aTiltYs, aTwists, aModifiers, /* aIsPen */ false, | ||||
|       /* aToWindow */ true, AsyncEnabledOption::ASYNC_DISABLED, | ||||
|       aPreventDefault); | ||||
| } | ||||
| 
 | ||||
| nsresult nsDOMWindowUtils::SendTouchEventCommon( | ||||
|  | @ -944,7 +940,7 @@ nsresult nsDOMWindowUtils::SendTouchEventCommon( | |||
|     const nsTArray<float>& aRotationAngles, const nsTArray<float>& aForces, | ||||
|     const nsTArray<int32_t>& aTiltXs, const nsTArray<int32_t>& aTiltYs, | ||||
|     const nsTArray<int32_t>& aTwists, int32_t aModifiers, bool aIsPen, | ||||
|     bool aToWindow, bool* aPreventDefault) { | ||||
|     bool aToWindow, AsyncEnabledOption aAsyncEnabled, bool* aPreventDefault) { | ||||
|   // get the widget to send the event to
 | ||||
|   nsPoint offset; | ||||
|   nsCOMPtr<nsIWidget> widget = GetWidget(&offset); | ||||
|  | @ -1006,7 +1002,8 @@ nsresult nsDOMWindowUtils::SendTouchEventCommon( | |||
|     return presShell->HandleEvent(view->GetFrame(), &event, false, &status); | ||||
|   } | ||||
| 
 | ||||
|   if (StaticPrefs::test_events_async_enabled()) { | ||||
|   if (aAsyncEnabled == AsyncEnabledOption::ASYNC_ENABLED || | ||||
|       StaticPrefs::test_events_async_enabled()) { | ||||
|     status = widget->DispatchInputEvent(&event).mContentStatus; | ||||
|   } else { | ||||
|     nsresult rv = widget->DispatchEvent(&event, status); | ||||
|  |  | |||
|  | @ -104,7 +104,7 @@ class nsDOMWindowUtils final : public nsIDOMWindowUtils, | |||
|       const nsTArray<float>& aRotationAngles, const nsTArray<float>& aForces, | ||||
|       const nsTArray<int32_t>& aTiltXs, const nsTArray<int32_t>& aTiltYs, | ||||
|       const nsTArray<int32_t>& aTwists, int32_t aModifiers, bool aIsPen, | ||||
|       bool aToWindow, bool* aPreventDefault); | ||||
|       bool aToWindow, AsyncEnabledOption aAsyncEnabled, bool* aPreventDefault); | ||||
| 
 | ||||
|   void ReportErrorMessageForWindow(const nsAString& aErrorMessage, | ||||
|                                    const char* aClassification, | ||||
|  |  | |||
|  | @ -38,7 +38,11 @@ function promiseTouchTapContent(aBrowser, aContentElementId) { | |||
|         ); | ||||
|       }); | ||||
| 
 | ||||
|       EventUtils.synthesizeTouchAtCenter(contentElement, {}, content.window); | ||||
|       EventUtils.synthesizeTouchAtCenter( | ||||
|         contentElement, | ||||
|         { asyncEnabled: true }, | ||||
|         content.window | ||||
|       ); | ||||
| 
 | ||||
|       return promise; | ||||
|     } | ||||
|  | @ -47,10 +51,7 @@ function promiseTouchTapContent(aBrowser, aContentElementId) { | |||
| 
 | ||||
| add_setup(async function () { | ||||
|   await SpecialPowers.pushPrefEnv({ | ||||
|     set: [ | ||||
|       ["dom.events.asyncClipboard.readText", true], | ||||
|       ["test.events.async.enabled", true], | ||||
|     ], | ||||
|     set: [["dom.events.asyncClipboard.readText", true]], | ||||
|   }); | ||||
| }); | ||||
| 
 | ||||
|  |  | |||
|  | @ -381,6 +381,15 @@ interface nsIDOMWindowUtils : nsISupports { | |||
|                          [optional] in long aButtons, | ||||
|                          [optional] in unsigned long aIdentifier); | ||||
| 
 | ||||
| /** | ||||
|  * AsyncEnabledOption is passed to functions to enable or disable | ||||
|  * asynchronous event dispatching. Default is disabled. | ||||
|  */ | ||||
| cenum AsyncEnabledOption : 8 { | ||||
|   ASYNC_DISABLED = 0, | ||||
|   ASYNC_ENABLED = 1 | ||||
| }; | ||||
| 
 | ||||
|   /** Synthesize a touch event. The event types supported are: | ||||
|    *    touchstart, touchend, touchmove, and touchcancel | ||||
|    * | ||||
|  | @ -394,19 +403,19 @@ interface nsIDOMWindowUtils : nsISupports { | |||
|    * window at all. | ||||
|    * | ||||
|    * @param aType event type | ||||
|    * @param xs array of offsets in CSS pixels for each touch to be sent | ||||
|    * @param ys array of offsets in CSS pixels for each touch to be sent | ||||
|    * @param rxs array of radii in CSS pixels for each touch to be sent | ||||
|    * @param rys array of radii in CSS pixels for each touch to be sent | ||||
|    * @param rotationAngles array of angles in degrees for each touch to be sent | ||||
|    * @param forces array of forces (floats from 0 to 1) for each touch to be sent | ||||
|    * @param tiltXs array of tiltX for each touch to be sent | ||||
|    * @param tiltYs array of tiltY for each touch to be sent | ||||
|    * @param twists array of twist for each touch to be sent | ||||
|    * @param count number of touches in this set | ||||
|    * @param aIdentifiers array of touch IDs | ||||
|    * @param aXs array of offsets in CSS pixels for each touch to be sent | ||||
|    * @param aYs array of offsets in CSS pixels for each touch to be sent | ||||
|    * @param aRxs array of radii in CSS pixels for each touch to be sent | ||||
|    * @param aRys array of radii in CSS pixels for each touch to be sent | ||||
|    * @param aRotationAngles array of angles in degrees for each touch to be sent | ||||
|    * @param aForces array of forces (floats from 0 to 1) for each touch to be sent | ||||
|    * @param aTiltXs array of tiltX for each touch to be sent | ||||
|    * @param aTiltYs array of tiltY for each touch to be sent | ||||
|    * @param aTwists array of twist for each touch to be sent | ||||
|    * @param aModifiers modifiers pressed, using constants defined as MODIFIER_* | ||||
|    * @param aIgnoreRootScrollFrame whether the event should ignore viewport bounds | ||||
|    *                           during dispatch | ||||
|    * @param aAsyncEnabled Enable or disable asynchronous event dispatching | ||||
|    * through APZ without being injected into the OS event queue | ||||
|    * | ||||
|    * returns true if the page called prevent default on this touch event | ||||
|    */ | ||||
|  | @ -422,7 +431,8 @@ interface nsIDOMWindowUtils : nsISupports { | |||
|                          in Array<long> aTiltXs, | ||||
|                          in Array<long> aTiltYs, | ||||
|                          in Array<long> aTwists, | ||||
|                          in long aModifiers); | ||||
|                          in long aModifiers, | ||||
|                          [optional] in nsIDOMWindowUtils_AsyncEnabledOption aAsyncEnabled); | ||||
| 
 | ||||
|   /** | ||||
|    * The same as sendTouchEvent but sets input source to "pen" to mock Windows behavior. | ||||
|  | @ -444,7 +454,8 @@ interface nsIDOMWindowUtils : nsISupports { | |||
|                               in long aTiltX, | ||||
|                               in long aTiltY, | ||||
|                               in long aTwist, | ||||
|                               in long aModifier); | ||||
|                               in long aModifier, | ||||
|                               [optional] in nsIDOMWindowUtils_AsyncEnabledOption aAsyncEnabled); | ||||
| 
 | ||||
|   /** The same as sendMouseEvent but ensures that the event is dispatched to | ||||
|    *  this DOM window or one of its children. | ||||
|  |  | |||
|  | @ -566,34 +566,18 @@ function synthesizeMouse(aTarget, aOffsetX, aOffsetY, aEvent, aWindow) { | |||
|  * Synthesize one or more touches on aTarget. aTarget can be either Element | ||||
|  * or Array of Elements.  aOffsetX, aOffsetY, aEvent.id, aEvent.rx, aEvent.ry, | ||||
|  * aEvent.angle, aEvent.force, aEvent.tiltX, aEvent.tiltY and aEvent.twist can | ||||
|  * be either Number or Array of Numbers (can be mixed).  If you specify array | ||||
|  * be either number or array of numbers (can be mixed).  If you specify array | ||||
|  * to synthesize a multi-touch, you need to specify same length arrays.  If | ||||
|  * you don't specify array to them, same values (or computed default values for | ||||
|  * aEvent.id) are used for all touches. | ||||
|  * | ||||
|  * @param {Element | Element[]} aTarget The target element which you specify | ||||
|  * @param {Element | Element[]} aTarget - The target element which you specify | ||||
|  * relative offset from its top-left. | ||||
|  * @param {Number | Number[]} aOffsetX The relative offset from left of aTarget. | ||||
|  * @param {Number | Number[]} aOffsetY The relative offset from top of aTarget. | ||||
|  * @param {Object} aEvent | ||||
|  * type: The touch event type.  If undefined, "touchstart" and "touchend" will | ||||
|  * be synthesized at same point. | ||||
|  * @param {number | number[]} aOffsetX - The relative offset from left of aTarget. | ||||
|  * @param {number | number[]} aOffsetY - The relative offset from top of aTarget. | ||||
|  * @param {TouchEventData} aEvent - Details of the touch event to dispatch | ||||
|  * @param {DOMWindow} [aWindow=window] - DOM window used to dispatch the event. | ||||
|  * | ||||
|  * id: The touch id.  If you don't specify this, default touch id will be used | ||||
|  * for first touch and further touch ids are the values incremented from the | ||||
|  * first id. | ||||
|  * | ||||
|  * rx, ry: The radii of the touch. | ||||
|  * | ||||
|  * angle: The angle in degree. | ||||
|  * | ||||
|  * force: The force of the touch.  If the type is "touchend", this should be 0. | ||||
|  * If unspecified, this is default to 0 for "touchend"  or 1 for the others. | ||||
|  * | ||||
|  * tiltX, tiltY: The tilt of the touch. | ||||
|  * | ||||
|  * twist: The twist of the touch. | ||||
|  * @param {Window} aWindow Default to `window`. | ||||
|  * @returns true if and only if aEvent.type is specified and default of the | ||||
|  * event is prevented. | ||||
|  */ | ||||
|  | @ -843,37 +827,38 @@ function synthesizeMouseAtPoint(left, top, aEvent, aWindow = window) { | |||
|   return defaultPrevented; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * @typedef {Object} TouchEventData | ||||
|  * @property {boolean} [aEvent.asyncEnabled] - If `true`, the event is | ||||
|  * dispatched to the parent process through APZ, without being injected | ||||
|  * into the OS event queue. | ||||
|  * @property {string} [aEvent.type] - The touch event type. If undefined, | ||||
|  * "touchstart" and "touchend" will be synthesized at same point. | ||||
|  * @property {number | number[]} [aEvent.id] - The touch id. If you don't specify this, | ||||
|  * default touch id will be used for first touch and further touch ids | ||||
|  * are the values incremented from the first id. | ||||
|  * @property {number | number[]} [aEvent.ry] - The X radius in CSS pixels of the touch | ||||
|  * @property {number | number[]} [aEvent.ry] - The Y radius in CSS pixels of the touch | ||||
|  * @property {number | number[]} [aEvent.angle] - The angle in degrees | ||||
|  * @property {number | number[]} [aEvent.force] - The force of the touch | ||||
|  * @property {number | number[]} [aEvent.tiltX] - The X tilt of the touch | ||||
|  * @property {number | number[]} [aEvent.tiltY] - The Y tilt of the touch | ||||
|  * @property {number | number[]} [aEvent.twist] - The twist of the touch | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * Synthesize one or more touches at the points. aLeft, aTop, aEvent.id, | ||||
|  * aEvent.rx, aEvent.ry, aEvent.angle, aEvent.force, aEvent.tiltX, aEvent.tiltY | ||||
|  * and aEvent.twist can be either Number or Array of Numbers (can be mixed). | ||||
|  * and aEvent.twist can be either number or array of numbers (can be mixed). | ||||
|  * If you specify array to synthesize a multi-touch, you need to specify same | ||||
|  * length arrays.  If you don't specify array to them, same values are used for | ||||
|  * all touches. | ||||
|  * | ||||
|  * @param {Element | Element[]} aTarget The target element which you specify | ||||
|  * relative offset from its top-left. | ||||
|  * @param {Number | Number[]} aOffsetX The relative offset from left of aTarget. | ||||
|  * @param {Number | Number[]} aOffsetY The relative offset from top of aTarget. | ||||
|  * @param {Object} aEvent | ||||
|  * type: The touch event type.  If undefined, "touchstart" and "touchend" will | ||||
|  * be synthesized at same point. | ||||
|  * @param {number | number[]} aLeft - The relative offset from left of aTarget. | ||||
|  * @param {number | number[]} aTop - The relative offset from top of aTarget. | ||||
|  * @param {TouchEventData} aEvent - Details of the touch event to dispatch | ||||
|  * @param {DOMWindow} [aWindow=window] - DOM window used to dispatch the event. | ||||
|  * | ||||
|  * id: The touch id.  If you don't specify this, default touch id will be used | ||||
|  * for first touch and further touch ids are the values incremented from the | ||||
|  * first id. | ||||
|  * | ||||
|  * rx, ry: The radii of the touch. | ||||
|  * | ||||
|  * angle: The angle in degree. | ||||
|  * | ||||
|  * force: The force of the touch.  If the type is "touchend", this should be 0. | ||||
|  * If unspecified, this is default to 0 for "touchend"  or 1 for the others. | ||||
|  * | ||||
|  * tiltX, tiltY: The tilt of the touch. | ||||
|  * | ||||
|  * twist: The twist of the touch. | ||||
|  * @param {Window} aWindow Default to `window`. | ||||
|  * @returns true if and only if aEvent.type is specified and default of the | ||||
|  * event is prevented. | ||||
|  */ | ||||
|  | @ -957,6 +942,10 @@ function synthesizeTouchAtPoint(aLeft, aTop, aEvent = {}, aWindow = window) { | |||
| 
 | ||||
|   const modifiers = _parseModifiers(aEvent, aWindow); | ||||
| 
 | ||||
|   const asyncOption = aEvent.asyncEnabled | ||||
|     ? utils.ASYNC_ENABLED | ||||
|     : utils.ASYNC_DISABLED; | ||||
| 
 | ||||
|   const args = [ | ||||
|     idArray, | ||||
|     leftArray, | ||||
|  | @ -969,6 +958,7 @@ function synthesizeTouchAtPoint(aLeft, aTop, aEvent = {}, aWindow = window) { | |||
|     tiltYArray, | ||||
|     twistArray, | ||||
|     modifiers, | ||||
|     asyncOption, | ||||
|   ]; | ||||
| 
 | ||||
|   const sender = | ||||
|  | @ -994,6 +984,14 @@ function synthesizeMouseAtCenter(aTarget, aEvent, aWindow) { | |||
|     aWindow | ||||
|   ); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Synthesize one or more touches at the center of your target | ||||
|  * | ||||
|  * @param {Element | Element[]} aTarget - The target element | ||||
|  * @param {TouchEventData} aEvent - Details of the touch event to dispatch | ||||
|  * @param {DOMWindow} [aWindow=window] - DOM window used to dispatch the event. | ||||
|  */ | ||||
| function synthesizeTouchAtCenter(aTarget, aEvent = {}, aWindow = window) { | ||||
|   var rect = aTarget.getBoundingClientRect(); | ||||
|   synthesizeTouchAtPoint( | ||||
|  | @ -1395,24 +1393,24 @@ function synthesizeNativeTap( | |||
|  * @param {Element} aParams.target Origin of offsetX and offsetY, must be an element | ||||
|  * @param {Boolean} [aParams.atCenter] | ||||
|  *        Instead of offsetX/Y, synthesize the event at center of `target`. | ||||
|  * @param {Number} [aParams.offsetX] | ||||
|  * @param {number} [aParams.offsetX] | ||||
|  *        X offset in `target` (in CSS pixels if `scale` is "screenPixelsPerCSSPixel") | ||||
|  * @param {Number} [aParams.offsetY] | ||||
|  * @param {number} [aParams.offsetY] | ||||
|  *        Y offset in `target` (in CSS pixels if `scale` is "screenPixelsPerCSSPixel") | ||||
|  * @param {Number} [aParams.screenX] | ||||
|  * @param {number} [aParams.screenX] | ||||
|  *        X offset in screen (in CSS pixels if `scale` is "screenPixelsPerCSSPixel"), | ||||
|  *        Neither offsetX/Y nor atCenter must be set if this is set. | ||||
|  * @param {Number} [aParams.screenY] | ||||
|  * @param {number} [aParams.screenY] | ||||
|  *        Y offset in screen (in CSS pixels if `scale` is "screenPixelsPerCSSPixel"), | ||||
|  *        Neither offsetX/Y nor atCenter must be set if this is set. | ||||
|  * @param {String} [aParams.scale="screenPixelsPerCSSPixel"] | ||||
|  *        If scale is "screenPixelsPerCSSPixel", devicePixelRatio will be used. | ||||
|  *        If scale is "inScreenPixels", clientX/Y nor scaleX/Y are not adjusted with screenPixelsPerCSSPixel. | ||||
|  * @param {Number} [aParams.button=0] | ||||
|  * @param {number} [aParams.button=0] | ||||
|  *        Defaults to 0, if "click", "mousedown", "mouseup", set same value as DOM MouseEvent.button | ||||
|  * @param {Object} [aParams.modifiers={}] | ||||
|  *        Active modifiers, see `_parseNativeModifiers` | ||||
|  * @param {Window} [aParams.win=window] | ||||
|  * @param {DOMWindow} [aParams.win=window] | ||||
|  *        The window to use its utils. Defaults to the window in which EventUtils.js is running. | ||||
|  * @param {Element} [aParams.elementOnWidget=target] | ||||
|  *        Defaults to target. If element under the point is in another widget from target's widget, | ||||
|  | @ -1656,7 +1654,7 @@ function synthesizeAndWaitNativeMouseMove( | |||
|  *        If you need to emulate non-US keyboard layout or virtual keyboard | ||||
|  *        which doesn't emulate hardware key input, you should set this value | ||||
|  *        to empty string explicitly. | ||||
|  * @param {Number} [aEvent.repeat] | ||||
|  * @param {number} [aEvent.repeat] | ||||
|  *        If you emulate auto-repeat, you should set the count of repeat. | ||||
|  *        This method will automatically synthesize keydown (and keypress). | ||||
|  * @param {*} aEvent.location | ||||
|  | @ -1669,11 +1667,11 @@ function synthesizeAndWaitNativeMouseMove( | |||
|  *        If keydown is specified, this only fires keydown (and keypress if | ||||
|  *        it should be fired). | ||||
|  *        If keyup is specified, this only fires keyup. | ||||
|  * @param {Number} aEvent.keyCode | ||||
|  * @param {number} aEvent.keyCode | ||||
|  *        Must be 0 - 255 (0xFF). If this is specified explicitly, | ||||
|  *        .keyCode value is initialized with this value. | ||||
|  * @param {Window} aWindow | ||||
|  *        Is optional and defaults to the current window object. | ||||
|  * @param {DOMWindow} [aWindow=window] | ||||
|  *        DOM window used to dispatch the event. | ||||
|  * @param {Function} aCallback | ||||
|  *        Is optional and can be used to receive notifications from TIP. | ||||
|  * | ||||
|  | @ -2220,7 +2218,7 @@ function _getDOMWindowUtils(aWindow = window) { | |||
| } | ||||
| 
 | ||||
| /** | ||||
|  * @param {Window} aWindow The window. | ||||
|  * @param {DOMWindow} [aWindow] - DOM window | ||||
|  * @returns The scaling value applied to the top window. | ||||
|  */ | ||||
| function _getTopWindowResolution(aWindow) { | ||||
|  | @ -2235,8 +2233,8 @@ function _getTopWindowResolution(aWindow) { | |||
| } | ||||
| 
 | ||||
| /** | ||||
|  * @param {Window} aWindow The window which you want to get its x-offset in the | ||||
|  * screen. | ||||
|  * @param {DOMWindow} [aWindow] - The DOM window which you want | ||||
|  * to get its x-offset in the screen. | ||||
|  * @returns The screenX of aWindow in the unscaled CSS pixels. | ||||
|  */ | ||||
| function _getScreenXInUnscaledCSSPixels(aWindow) { | ||||
|  | @ -2258,8 +2256,8 @@ function _getScreenXInUnscaledCSSPixels(aWindow) { | |||
| } | ||||
| 
 | ||||
| /** | ||||
|  * @param {Window} aWindow The window which you want to get its y-offset in the | ||||
|  * screen. | ||||
|  * @param {DOMWindow} [aWindow] - The DOM window which you want | ||||
|  * to get its y-offset in the screen. | ||||
|  * @returns The screenY of aWindow in the unscaled CSS pixels. | ||||
|  */ | ||||
| function _getScreenYInUnscaledCSSPixels(aWindow) { | ||||
|  | @ -3229,11 +3227,11 @@ function createDragEventObject( | |||
|  *        Pass null to avoid modifying dataTransfer. | ||||
|  * @param {String} [aDropEffect="move"] | ||||
|  *        The drop effect to set during the dragstart event, or 'move' if omitted. | ||||
|  * @param {Window} [aWindow=window] | ||||
|  *        The window in which the drag happens. Defaults to the window in which | ||||
|  * @param {DOMWindow} [aWindow=window] | ||||
|  *        The DOM window in which the drag happens. Defaults to the window in which | ||||
|  *        EventUtils.js is loaded. | ||||
|  * @param {Window} [aDestWindow=aWindow] | ||||
|  *        Used when aDestElement is in a different window than aSrcElement. | ||||
|  * @param {DOMWindow} [aDestWindow=aWindow] | ||||
|  *        Used when aDestElement is in a different DOM window than aSrcElement. | ||||
|  *        Default is to match ``aWindow``. | ||||
|  * @param {Object} [aDragEvent={}] | ||||
|  *        Defaults to empty object. Overwrites an object passed to sendDragEvent. | ||||
|  | @ -3334,8 +3332,8 @@ function synthesizeDragOver( | |||
|  *        The second element of the array returned from ``synthesizeDragOver``. | ||||
|  * @param {Element} aDestElement | ||||
|  *        The element on which to fire the drop event. | ||||
|  * @param {Window} [aDestWindow=window] | ||||
|  *        The window in which the drop happens. Defaults to the window in which | ||||
|  * @param {DOMWindow} [aDestWindow=window] | ||||
|  *        The DOM window in which the drop happens. Defaults to the window in which | ||||
|  *        EventUtils.js is loaded. | ||||
|  * @param {Object} [aDragEvent={}] | ||||
|  *        Defaults to empty object. Overwrites an object passed to sendDragEvent. | ||||
|  | @ -3403,11 +3401,11 @@ function synthesizeDropAfterDragOver( | |||
|  *        Pass null to avoid modifying dataTransfer. | ||||
|  * @param {String} [aDropEffect="move"] | ||||
|  *        The drop effect to set during the dragstart event, or 'move' if omitted.. | ||||
|  * @param {Window} [aWindow=window] | ||||
|  *        The window in which the drag happens. Defaults to the window in which | ||||
|  * @param {DOMWindow} [aWindow=window] | ||||
|  *        The DOM window in which the drag happens. Defaults to the window in which | ||||
|  *        EventUtils.js is loaded. | ||||
|  * @param {Window} [aDestWindow=aWindow] | ||||
|  *        Used when aDestElement is in a different window than aSrcElement. | ||||
|  * @param {DOMWindow} [aDestWindow=aWindow] | ||||
|  *        Used when aDestElement is in a different DOM window than aSrcElement. | ||||
|  *        Default is to match ``aWindow``. | ||||
|  * @param {Object} [aDragEvent={}] | ||||
|  *        Defaults to empty object. Overwrites an object passed to sendDragEvent. | ||||
|  | @ -3538,24 +3536,24 @@ function _computeSrcElementFromSrcSelection(aSrcSelection) { | |||
|  *                The selection to start to drag, set null if srcElement is set. | ||||
|  * @param {Element|nil} aParams.destElement | ||||
|  *                The element to drop on. Pass null to emulate a drop on an invalid target. | ||||
|  * @param {Number} aParams.srcX | ||||
|  * @param {number} aParams.srcX | ||||
|  *                The initial x coordinate inside srcElement or ignored if srcSelection is set. | ||||
|  * @param {Number} aParams.srcY | ||||
|  * @param {number} aParams.srcY | ||||
|  *                The initial y coordinate inside srcElement or ignored if srcSelection is set. | ||||
|  * @param {Number} aParams.stepX | ||||
|  * @param {number} aParams.stepX | ||||
|  *                The x-axis step for mousemove inside srcElement | ||||
|  * @param {Number} aParams.stepY | ||||
|  * @param {number} aParams.stepY | ||||
|  *                The y-axis step for mousemove inside srcElement | ||||
|  * @param {Number} aParams.finalX | ||||
|  * @param {number} aParams.finalX | ||||
|  *                The final x coordinate inside srcElement | ||||
|  * @param {Number} aParams.finalY | ||||
|  * @param {number} aParams.finalY | ||||
|  *                The final x coordinate inside srcElement | ||||
|  * @param {Any} aParams.id | ||||
|  *                The pointer event id | ||||
|  * @param {Window} aParams.srcWindow | ||||
|  *                The window for dispatching event on srcElement, defaults to the current window object. | ||||
|  * @param {Window} aParams.destWindow | ||||
|  *                The window for dispatching event on destElement, defaults to the current window object. | ||||
|  * @param {DOMWindow} aParams.srcWindow | ||||
|  *                The DOM window for dispatching event on srcElement, defaults to the current window object. | ||||
|  * @param {DOMWindow} aParams.destWindow | ||||
|  *                The DOM window for dispatching event on destElement, defaults to the current window object. | ||||
|  * @param {Boolean} aParams.expectCancelDragStart | ||||
|  *                Set to true if the test cancels "dragstart" | ||||
|  * @param {Boolean} aParams.expectSrcElementDisconnected | ||||
|  | @ -4165,11 +4163,11 @@ async function synthesizePlainDragAndCancel( | |||
|  *                The element to drag. | ||||
|  * @param {Element|nil} aParams.targetElement | ||||
|  *                The element to drop on. | ||||
|  * @param {Number} aParams.step | ||||
|  * @param {number} aParams.step | ||||
|  *                The 2D step for mousemoves | ||||
|  * @param {Boolean} aParams.expectCancelDragStart | ||||
|  *                Set to true if srcElement is set up to cancel "dragstart" | ||||
|  * @param {Number} aParams.cancel | ||||
|  * @param {number} aParams.cancel | ||||
|  *                The 2D coord the mouse is moved to as the last step if | ||||
|  *                expectCancelDragStart is set | ||||
|  * @param {Boolean} aParams.expectSrcElementDisconnected | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Alex Jakobi
						Alex Jakobi