/* -*- 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 "nsISupports.idl" #include "nsITransferable.idl" %{ C++ #include "nsSize.h" namespace mozilla { namespace dom { class DataTransfer; } // namespace dom } // namespace mozilla %} native nsSize (nsSize); [ptr] native DataTransferPtr(mozilla::dom::DataTransfer); interface nsIDOMDocument; interface nsIDOMNode; interface nsIDOMDataTransfer; [scriptable, builtinclass, uuid(25bce737-73f0-43c7-bc20-c71044a73c5a)] interface nsIDragSession : nsISupports { /** * Set the current state of the drag, whether it can be dropped or not. * usually the target "frame" sets this so the native system can render the correct feedback */ attribute boolean canDrop; /** * Indicates if the drop event should be dispatched only to chrome. */ attribute boolean onlyChromeDrop; /** * Sets the action (copy, move, link, et.c) for the current drag */ attribute unsigned long dragAction; /** * Sets the current width and height of the drag target area. * It will contain the current size of the Frame that the drag is currently in */ [noscript] attribute nsSize targetSize; /** * Get the number of items that were dropped */ readonly attribute unsigned long numDropItems; /** * The document where the drag was started, which will be null if the * drag originated outside the application. Useful for determining if a drop * originated in the same document. */ readonly attribute nsIDOMDocument sourceDocument; /** * The dom node that was originally dragged to start the session, which will be null if the * drag originated outside the application. */ readonly attribute nsIDOMNode sourceNode; /** * The URI spec of the triggering principal. This may be different than * sourceNode's principal when sourceNode is xul:browser and the drag is * triggered in a browsing context inside it. */ attribute AUTF8String triggeringPrincipalURISpec; /** * The data transfer object for the current drag. */ [binaryname(DataTransferXPCOM)] attribute nsIDOMDataTransfer dataTransfer; [notxpcom, nostdcall] DataTransferPtr getDataTransfer(); [notxpcom, nostdcall] void setDataTransfer(in DataTransferPtr aDataTransfer); /** * Get data from a Drag&Drop. Can be called while the drag is in process * or after the drop has completed. * * @param aTransferable the transferable for the data to be put into * @param aItemIndex which of multiple drag items, zero-based */ void getData ( in nsITransferable aTransferable, in unsigned long aItemIndex ) ; /** * Check to set if any of the native data on the clipboard matches this data flavor */ boolean isDataFlavorSupported ( in string aDataFlavor ) ; void userCancelled(); void dragEventDispatchedToChildProcess(); // Called when nsIDragSession implementation should update the UI for the // drag-and-drop based on the data got from the child process in response to // NS_DRAGDROP_OVER sent from parent process to child process. void updateDragEffect(); // Change the drag image, using similar arguments as // nsIDragService::InvokeDragSessionWithImage. void updateDragImage(in nsIDOMNode aImage, in long aImageX, in long aImageY); }; %{ C++ %}