1999-08-31 01:54:23 +04:00
|
|
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
1999-08-25 12:34:46 +04:00
|
|
|
*
|
2012-05-21 15:12:37 +04:00
|
|
|
* 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/. */
|
1999-08-25 12:34:46 +04:00
|
|
|
|
2016-10-18 21:56:20 +03:00
|
|
|
#include "nsIArray.idl"
|
1999-08-25 12:34:46 +04:00
|
|
|
#include "nsISupports.idl"
|
|
|
|
#include "nsIDragSession.idl"
|
2017-08-03 11:50:00 +03:00
|
|
|
#include "nsIContentPolicy.idl"
|
1999-08-25 12:34:46 +04:00
|
|
|
|
2018-04-07 01:32:25 +03:00
|
|
|
webidl DragEvent;
|
2023-03-16 09:37:18 +03:00
|
|
|
webidl Element;
|
2018-05-30 05:58:48 +03:00
|
|
|
webidl Node;
|
2018-05-08 20:52:36 +03:00
|
|
|
webidl Selection;
|
2018-04-07 01:32:25 +03:00
|
|
|
|
2020-11-11 14:14:05 +03:00
|
|
|
interface nsICookieJarSettings;
|
|
|
|
|
2015-04-08 21:48:11 +03:00
|
|
|
%{C++
|
2015-09-14 18:18:29 +03:00
|
|
|
#include "mozilla/EventForwards.h"
|
|
|
|
|
2015-04-08 21:48:11 +03:00
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
|
|
class ContentParent;
|
2018-03-13 23:24:00 +03:00
|
|
|
class DataTransfer;
|
2019-05-14 18:04:38 +03:00
|
|
|
class RemoteDragStartData;
|
2015-04-08 21:48:11 +03:00
|
|
|
} // namespace dom
|
|
|
|
} // namespace mozilla
|
|
|
|
%}
|
|
|
|
|
|
|
|
[ptr] native ContentParentPtr(mozilla::dom::ContentParent);
|
2018-03-13 23:24:00 +03:00
|
|
|
[ptr] native DataTransferPtr(mozilla::dom::DataTransfer);
|
2019-05-14 18:04:38 +03:00
|
|
|
[ptr] native RemoteDragStartDataPtr(mozilla::dom::RemoteDragStartData);
|
2015-09-14 18:18:29 +03:00
|
|
|
native EventMessage(mozilla::EventMessage);
|
2015-04-08 21:48:11 +03:00
|
|
|
|
2015-09-14 18:18:29 +03:00
|
|
|
[scriptable, uuid(ebd6b3a2-af16-43af-a698-3091a087dd62), builtinclass]
|
1999-08-25 12:34:46 +04:00
|
|
|
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;
|
2008-08-27 16:07:27 +04:00
|
|
|
const long DRAGDROP_ACTION_UNINITIALIZED = 64;
|
2007-03-20 15:14:52 +03:00
|
|
|
|
1999-08-25 12:34:46 +04:00
|
|
|
/**
|
2016-10-18 21:56:20 +03:00
|
|
|
* Starts a modal drag session with an array of transaferables.
|
|
|
|
*
|
|
|
|
* Note: This method is deprecated for non-native code.
|
1999-08-25 12:34:46 +04:00
|
|
|
*
|
2019-01-04 06:16:46 +03:00
|
|
|
* @param aPrincipal - the triggering principal of the drag, or null if
|
|
|
|
* it's from browser chrome or OS
|
2019-08-20 15:43:02 +03:00
|
|
|
* @param aCsp - The csp of the triggering Document
|
1999-08-25 12:34:46 +04:00
|
|
|
* @param aTransferables - an array of transferables to be dragged
|
|
|
|
* @param aActionType - specified which of copy/move/link are allowed
|
2015-08-10 22:56:47 +03:00
|
|
|
* @param aContentPolicyType - the contentPolicyType that will be
|
|
|
|
* passed to the loadInfo when creating a new channel
|
|
|
|
* (defaults to TYPE_OTHER)
|
1999-08-25 12:34:46 +04:00
|
|
|
*/
|
2019-05-09 23:21:28 +03:00
|
|
|
[can_run_script]
|
2018-05-30 05:58:48 +03:00
|
|
|
void invokeDragSession (in Node aDOMNode,
|
2019-01-04 06:16:46 +03:00
|
|
|
in nsIPrincipal aPrincipal,
|
2019-08-20 15:43:02 +03:00
|
|
|
in nsIContentSecurityPolicy aCsp,
|
2020-11-11 14:14:05 +03:00
|
|
|
in nsICookieJarSettings aCookieJarSettings,
|
2018-08-07 16:32:07 +03:00
|
|
|
in nsIArray aTransferables,
|
2015-08-10 22:56:47 +03:00
|
|
|
in unsigned long aActionType,
|
|
|
|
[optional] in nsContentPolicyType aContentPolicyType);
|
1999-08-25 12:34:46 +04:00
|
|
|
|
2007-03-20 15:14:52 +03:00
|
|
|
/**
|
|
|
|
* Starts a modal drag session using an image. The first four arguments are
|
|
|
|
* the same as invokeDragSession.
|
|
|
|
*
|
2016-10-18 21:56:20 +03:00
|
|
|
* Note: This method is deprecated for non-native code.
|
|
|
|
*
|
2007-03-20 15:14:52 +03:00
|
|
|
* 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.
|
|
|
|
*/
|
2019-05-09 23:21:28 +03:00
|
|
|
[noscript, can_run_script]
|
2018-05-30 05:58:48 +03:00
|
|
|
void invokeDragSessionWithImage(in Node aDOMNode,
|
2019-01-04 06:16:46 +03:00
|
|
|
in nsIPrincipal aPrincipal,
|
2019-08-20 15:43:02 +03:00
|
|
|
in nsIContentSecurityPolicy aCsp,
|
2020-11-11 14:14:05 +03:00
|
|
|
in nsICookieJarSettings aCookieJarSettings,
|
2016-10-18 21:56:20 +03:00
|
|
|
in nsIArray aTransferableArray,
|
2007-03-20 15:14:52 +03:00
|
|
|
in unsigned long aActionType,
|
2018-05-30 05:58:48 +03:00
|
|
|
in Node aImage,
|
2007-03-20 15:14:52 +03:00
|
|
|
in long aImageX,
|
|
|
|
in long aImageY,
|
2018-04-07 01:32:25 +03:00
|
|
|
in DragEvent aDragEvent,
|
2018-03-13 23:24:00 +03:00
|
|
|
in DataTransferPtr aDataTransfer);
|
2007-03-20 15:14:52 +03:00
|
|
|
|
2019-05-14 18:04:38 +03:00
|
|
|
/** Start a drag session with the data in aDragStartData from a child process.
|
|
|
|
* Other arguments are the same as invokeDragSessionWithImage.
|
|
|
|
*/
|
|
|
|
[noscript, can_run_script]
|
|
|
|
void invokeDragSessionWithRemoteImage(in Node aDOMNode,
|
|
|
|
in nsIPrincipal aPrincipal,
|
2019-08-20 15:43:02 +03:00
|
|
|
in nsIContentSecurityPolicy aCsp,
|
2020-11-11 14:14:05 +03:00
|
|
|
in nsICookieJarSettings aCookieJarSettings,
|
2019-05-14 18:04:38 +03:00
|
|
|
in nsIArray aTransferableArray,
|
|
|
|
in unsigned long aActionType,
|
|
|
|
in RemoteDragStartDataPtr aDragStartData,
|
|
|
|
in DragEvent aDragEvent,
|
|
|
|
in DataTransferPtr aDataTransfer);
|
|
|
|
|
2007-03-20 15:14:52 +03:00
|
|
|
/**
|
|
|
|
* 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.
|
2016-10-18 21:56:20 +03:00
|
|
|
*
|
|
|
|
* Note: This method is deprecated for non-native code.
|
2007-03-20 15:14:52 +03:00
|
|
|
*/
|
2019-05-09 23:21:28 +03:00
|
|
|
[can_run_script]
|
2018-05-08 20:52:36 +03:00
|
|
|
void invokeDragSessionWithSelection(in Selection aSelection,
|
2019-01-04 06:16:46 +03:00
|
|
|
in nsIPrincipal aPrincipal,
|
2019-08-20 15:43:02 +03:00
|
|
|
in nsIContentSecurityPolicy aCsp,
|
2020-11-11 14:14:05 +03:00
|
|
|
in nsICookieJarSettings aCookieJarSettings,
|
2016-10-18 21:56:20 +03:00
|
|
|
in nsIArray aTransferableArray,
|
2007-03-20 15:14:52 +03:00
|
|
|
in unsigned long aActionType,
|
2018-04-07 01:32:25 +03:00
|
|
|
in DragEvent aDragEvent,
|
2018-03-13 23:24:00 +03:00
|
|
|
in DataTransferPtr aDataTransfer);
|
2007-03-20 15:14:52 +03:00
|
|
|
|
1999-08-25 12:34:46 +04:00
|
|
|
/**
|
2018-03-13 23:24:00 +03:00
|
|
|
* Returns the current Drag Session
|
1999-08-25 12:34:46 +04:00
|
|
|
*/
|
2018-03-13 23:24:00 +03:00
|
|
|
nsIDragSession getCurrentSession();
|
1999-08-25 12:34:46 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Tells the Drag Service to start a drag session. This is called when
|
|
|
|
* an external drag occurs
|
|
|
|
*/
|
2019-12-21 15:27:06 +03:00
|
|
|
void startDragSession() ;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Similar to startDragSession(), automated tests may want to start
|
|
|
|
* session for emulating an external drag. At that time, this should
|
|
|
|
* be used instead of startDragSession().
|
|
|
|
*
|
|
|
|
* @param aAllowedEffect Set default drag action which means allowed effects
|
|
|
|
* in the session and every DnD events are initialized
|
|
|
|
* with one of specified value. So, the value can be
|
|
|
|
* DRAGDROP_ACTION_NONE, or one or more values of
|
|
|
|
* DRAGDROP_ACTION_(MOVE|COPY|LINK).
|
|
|
|
*/
|
|
|
|
void startDragSessionForTests(in unsigned long aAllowedEffect);
|
1999-08-25 12:34:46 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Tells the Drag Service to end a drag session. This is called when
|
|
|
|
* an external drag occurs
|
2007-04-12 08:37:39 +04:00
|
|
|
*
|
|
|
|
* If aDoneDrag is true, the drag has finished, otherwise the drag has
|
|
|
|
* just left the window.
|
1999-08-25 12:34:46 +04:00
|
|
|
*/
|
2019-05-09 23:21:28 +03:00
|
|
|
[can_run_script]
|
2017-02-17 06:29:42 +03:00
|
|
|
void endDragSession(in boolean aDoneDrag,
|
|
|
|
[optional] in unsigned long aKeyModifiers);
|
2007-04-12 08:37:39 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Fire a drag event at the source of the drag
|
|
|
|
*/
|
2019-05-09 23:21:28 +03:00
|
|
|
[noscript, can_run_script]
|
|
|
|
void fireDragEventAtSource(in EventMessage aEventMessage,
|
|
|
|
in unsigned long aKeyModifiers);
|
2008-03-19 03:06:22 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Increase/decrease dragging suppress level by one.
|
|
|
|
* If level is greater than one, dragging is disabled.
|
|
|
|
*/
|
2019-05-09 23:21:28 +03:00
|
|
|
[can_run_script]
|
2008-03-19 03:06:22 +03:00
|
|
|
void suppress();
|
|
|
|
void unsuppress();
|
2011-04-26 05:37:20 +04:00
|
|
|
|
2015-09-29 03:29:48 +03:00
|
|
|
/**
|
|
|
|
* aX and aY are in LayoutDevice pixels.
|
|
|
|
*/
|
2011-04-26 05:37:20 +04:00
|
|
|
[noscript] void dragMoved(in long aX, in long aY);
|
2015-04-08 21:48:11 +03:00
|
|
|
|
|
|
|
[notxpcom, nostdcall] boolean maybeAddChildProcess(in ContentParentPtr aChild);
|
2019-10-01 17:07:27 +03:00
|
|
|
[notxpcom, nostdcall] boolean removeAllChildProcesses();
|
2023-03-16 09:37:18 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when HTMLEditor maybe deleted the source node from the document.
|
|
|
|
*
|
|
|
|
* @param aEditingHost The editing host when the editor deletes selection.
|
|
|
|
*/
|
|
|
|
[noscript] void maybeEditorDeletedSourceNode(in Element aEditingHost);
|
1999-08-25 12:34:46 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
%{ C++
|
|
|
|
|
|
|
|
%}
|