forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			161 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 | |
|  *
 | |
|  * This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #include "nsIArray.idl"
 | |
| #include "nsISupports.idl"
 | |
| #include "nsIDragSession.idl"
 | |
| #include "nsIScriptableRegion.idl"
 | |
| #include "nsIContentPolicy.idl"
 | |
| 
 | |
| webidl DragEvent;
 | |
| webidl Node;
 | |
| webidl Selection;
 | |
| 
 | |
| %{C++
 | |
| #include "mozilla/EventForwards.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace dom {
 | |
| class ContentParent;
 | |
| class DataTransfer;
 | |
| } // namespace dom
 | |
| } // namespace mozilla
 | |
| %}
 | |
| 
 | |
| [ptr] native ContentParentPtr(mozilla::dom::ContentParent);
 | |
| [ptr] native DataTransferPtr(mozilla::dom::DataTransfer);
 | |
| native EventMessage(mozilla::EventMessage);
 | |
| 
 | |
| [scriptable, uuid(ebd6b3a2-af16-43af-a698-3091a087dd62), builtinclass]
 | |
| interface nsIDragService : nsISupports
 | |
| {
 | |
|   const long DRAGDROP_ACTION_NONE = 0;
 | |
|   const long DRAGDROP_ACTION_COPY = 1;
 | |
|   const long DRAGDROP_ACTION_MOVE = 2;
 | |
|   const long DRAGDROP_ACTION_LINK = 4;
 | |
|   const long DRAGDROP_ACTION_UNINITIALIZED = 64;
 | |
| 
 | |
|   /**
 | |
|     * Starts a modal drag session with an array of transaferables.
 | |
|     *
 | |
|     * Note: This method is deprecated for non-native code.
 | |
|     *
 | |
|     * @param  aPrincipalURISpec - the URI of the triggering principal of the
 | |
|     *            drag, or an empty string if it's from browser chrome or OS
 | |
|     * @param  aTransferables - an array of transferables to be dragged
 | |
|     * @param  aRegion - a region containing rectangles for cursor feedback, 
 | |
|     *            in window coordinates.
 | |
|     * @param  aActionType - specified which of copy/move/link are allowed
 | |
|     * @param  aContentPolicyType - the contentPolicyType that will be
 | |
|     *           passed to the loadInfo when creating a new channel
 | |
|     *           (defaults to TYPE_OTHER)
 | |
|     */
 | |
|   void invokeDragSession (in Node aDOMNode,
 | |
|                           in AUTF8String aPrincipalURISpec,
 | |
|                           in nsIArray aTransferables, 
 | |
|                           in nsIScriptableRegion aRegion,
 | |
|                           in unsigned long aActionType,
 | |
|                           [optional] in nsContentPolicyType aContentPolicyType);
 | |
| 
 | |
|   /**
 | |
|    * Starts a modal drag session using an image. The first four arguments are
 | |
|    * the same as invokeDragSession.
 | |
|    *
 | |
|    * Note: This method is deprecated for non-native code.
 | |
|    *
 | |
|    * A custom image may be specified using the aImage argument. If this is
 | |
|    * supplied, the aImageX and aImageY arguments specify the offset within
 | |
|    * the image where the cursor would be positioned. That is, when the image
 | |
|    * is drawn, it is offset up and left the amount so that the cursor appears
 | |
|    * at that location within the image.
 | |
|    *
 | |
|    * If aImage is null, aImageX and aImageY are not used and the image is instead
 | |
|    * determined from the source node aDOMNode, and the offset calculated so that
 | |
|    * the initial location for the image appears in the same screen position as
 | |
|    * where the element is located. The node must be within a document.
 | |
|    *
 | |
|    * Currently, supported images are all DOM nodes. If this is an HTML <image> or
 | |
|    * <canvas>, the drag image is taken from the image data. If the element is in
 | |
|    * a document, it will be rendered at its displayed size, othewise, it will be
 | |
|    * rendered at its real size. For other types of elements, the element is
 | |
|    * rendered into an offscreen buffer in the same manner as it is currently
 | |
|    * displayed. The document selection is hidden while drawing.
 | |
|    *
 | |
|    * The aDragEvent must be supplied as the current screen coordinates of the
 | |
|    * event are needed to calculate the image location.
 | |
|    */
 | |
|   [noscript]
 | |
|   void invokeDragSessionWithImage(in Node aDOMNode,
 | |
|                                   in AUTF8String aPrincipalURISpec,
 | |
|                                   in nsIArray aTransferableArray,
 | |
|                                   in nsIScriptableRegion aRegion,
 | |
|                                   in unsigned long aActionType,
 | |
|                                   in Node aImage,
 | |
|                                   in long aImageX,
 | |
|                                   in long aImageY,
 | |
|                                   in DragEvent aDragEvent,
 | |
|                                   in DataTransferPtr aDataTransfer);
 | |
| 
 | |
|   /**
 | |
|    * Start a modal drag session using the selection as the drag image.
 | |
|    * The aDragEvent must be supplied as the current screen coordinates of the
 | |
|    * event are needed to calculate the image location.
 | |
|    *
 | |
|    * Note: This method is deprecated for non-native code.
 | |
|    */
 | |
|   void invokeDragSessionWithSelection(in Selection aSelection,
 | |
|                                       in AUTF8String aPrincipalURISpec,
 | |
|                                       in nsIArray aTransferableArray,
 | |
|                                       in unsigned long aActionType,
 | |
|                                       in DragEvent aDragEvent,
 | |
|                                       in DataTransferPtr aDataTransfer);
 | |
| 
 | |
|   /**
 | |
|     * Returns the current Drag Session
 | |
|     */
 | |
|   nsIDragSession getCurrentSession();
 | |
| 
 | |
|   /**
 | |
|     * Tells the Drag Service to start a drag session. This is called when
 | |
|     * an external drag occurs
 | |
|     */
 | |
|   void startDragSession ( ) ;
 | |
| 
 | |
|   /**
 | |
|     * Tells the Drag Service to end a drag session. This is called when
 | |
|     * an external drag occurs
 | |
|     *
 | |
|     * If aDoneDrag is true, the drag has finished, otherwise the drag has
 | |
|     * just left the window.
 | |
|     */
 | |
|   void endDragSession(in boolean aDoneDrag,
 | |
|                       [optional] in unsigned long aKeyModifiers);
 | |
| 
 | |
|   /**
 | |
|    * Fire a drag event at the source of the drag
 | |
|    */
 | |
|   [noscript] void fireDragEventAtSource(in EventMessage aEventMessage,
 | |
|                                         in unsigned long aKeyModifiers);
 | |
| 
 | |
|   /**
 | |
|    * Increase/decrease dragging suppress level by one.
 | |
|    * If level is greater than one, dragging is disabled.
 | |
|    */
 | |
|   void suppress();
 | |
|   void unsuppress();
 | |
| 
 | |
|   /**
 | |
|     * aX and aY are in LayoutDevice pixels.
 | |
|     */
 | |
|   [noscript] void dragMoved(in long aX, in long aY);
 | |
| 
 | |
|   [notxpcom, nostdcall] boolean maybeAddChildProcess(in ContentParentPtr aChild);
 | |
| };
 | |
| 
 | |
| 
 | |
| %{ C++
 | |
| 
 | |
| %}
 | 
