123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- /* -*- 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 "nsIContentPolicyBase.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 ) ;
- /**
- * Fire a drag event at the source of the drag
- */
- [noscript] void fireDragEventAtSource(in EventMessage aEventMessage);
- /**
- * 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++
- %}
|