summaryrefslogtreecommitdiffstats
path: root/widget/nsIDragService.idl
diff options
context:
space:
mode:
Diffstat (limited to 'widget/nsIDragService.idl')
-rw-r--r--widget/nsIDragService.idl152
1 files changed, 152 insertions, 0 deletions
diff --git a/widget/nsIDragService.idl b/widget/nsIDragService.idl
new file mode 100644
index 000000000..c7779bc5c
--- /dev/null
+++ b/widget/nsIDragService.idl
@@ -0,0 +1,152 @@
+/* -*- 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++
+
+%}