forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: BsjkGpTpe8I --HG-- extra : rebase_source : 640807623fc70797932a0ee592b887d5c134b5f9
		
			
				
	
	
		
			154 lines
		
	
	
	
		
			5.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
	
		
			5.7 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"
 | 
						|
 | 
						|
interface nsIDOMNode;
 | 
						|
interface nsIDOMDragEvent;
 | 
						|
interface nsIDOMDataTransfer;
 | 
						|
interface nsISelection;
 | 
						|
 | 
						|
%{C++
 | 
						|
#include "mozilla/EventForwards.h"
 | 
						|
 | 
						|
namespace mozilla {
 | 
						|
namespace dom {
 | 
						|
class ContentParent;
 | 
						|
} // namespace dom
 | 
						|
} // namespace mozilla
 | 
						|
%}
 | 
						|
 | 
						|
[ptr] native ContentParentPtr(mozilla::dom::ContentParent);
 | 
						|
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  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 nsIDOMNode aDOMNode,
 | 
						|
                          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.
 | 
						|
   */
 | 
						|
  void invokeDragSessionWithImage(in nsIDOMNode aDOMNode,
 | 
						|
                                  in nsIArray aTransferableArray,
 | 
						|
                                  in nsIScriptableRegion aRegion,
 | 
						|
                                  in unsigned long aActionType,
 | 
						|
                                  in nsIDOMNode aImage,
 | 
						|
                                  in long aImageX,
 | 
						|
                                  in long aImageY,
 | 
						|
                                  in nsIDOMDragEvent aDragEvent,
 | 
						|
                                  in nsIDOMDataTransfer 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 nsISelection aSelection,
 | 
						|
                                      in nsIArray aTransferableArray,
 | 
						|
                                      in unsigned long aActionType,
 | 
						|
                                      in nsIDOMDragEvent aDragEvent,
 | 
						|
                                      in nsIDOMDataTransfer 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++
 | 
						|
 | 
						|
%}
 |