Bug 1444686 part 3. Get rid of nsIDOMDataTransfer::Get/SetMozCursor. r=mystor

MozReview-Commit-ID: G7vuh1uuWGv
This commit is contained in:
Boris Zbarsky 2018-03-13 16:23:59 -04:00
Родитель 6139d9be8f
Коммит 55ed30a9c6
14 изменённых файлов: 66 добавлений и 69 удалений

Просмотреть файл

@ -6034,15 +6034,9 @@ nsContentUtils::SetDataTransferInEvent(WidgetDragEvent* aDragEvent)
nsCOMPtr<nsIDragSession> dragSession = GetDragSession();
NS_ENSURE_TRUE(dragSession, NS_OK); // no drag in progress
nsCOMPtr<nsIDOMDataTransfer> dataTransfer;
nsCOMPtr<DataTransfer> initialDataTransfer;
dragSession->GetDataTransfer(getter_AddRefs(dataTransfer));
if (dataTransfer) {
initialDataTransfer = do_QueryInterface(dataTransfer);
if (!initialDataTransfer) {
return NS_ERROR_FAILURE;
}
} else {
RefPtr<DataTransfer> initialDataTransfer =
dragSession->GetDataTransfer();
if (!initialDataTransfer) {
// A dataTransfer won't exist when a drag was started by some other
// means, for instance calling the drag service directly, or a drag
// from another application. In either case, a new dataTransfer should

Просмотреть файл

@ -483,22 +483,11 @@ DataTransfer::ClearData(const Optional<nsAString>& aFormat,
}
}
NS_IMETHODIMP
DataTransfer::GetMozCursor(nsAString& aCursorState)
{
nsString cursor;
GetMozCursor(cursor);
aCursorState = cursor;
return NS_OK;
}
NS_IMETHODIMP
void
DataTransfer::SetMozCursor(const nsAString& aCursorState)
{
// Lock the cursor to an arrow during the drag.
mCursorState = aCursorState.EqualsLiteral("default");
return NS_OK;
}
already_AddRefed<nsINode>

Просмотреть файл

@ -205,7 +205,7 @@ public:
uint32_t MozItemCount() const;
void GetMozCursor(nsString& aCursor)
void GetMozCursor(nsAString& aCursor)
{
if (mCursorState) {
aCursor.AssignLiteral("default");
@ -213,6 +213,7 @@ public:
aCursor.AssignLiteral("auto");
}
}
void SetMozCursor(const nsAString& aCursor);
already_AddRefed<DOMStringList> MozTypesAt(uint32_t aIndex,
CallerType aCallerType,

Просмотреть файл

@ -1337,8 +1337,7 @@ EventStateManager::DispatchCrossProcessEvent(WidgetEvent* aEvent,
dragSession->DragEventDispatchedToChildProcess();
dragSession->GetDragAction(&action);
dragSession->GetTriggeringPrincipalURISpec(principalURISpec);
nsCOMPtr<nsIDOMDataTransfer> initialDataTransfer;
dragSession->GetDataTransfer(getter_AddRefs(initialDataTransfer));
RefPtr<DataTransfer> initialDataTransfer = dragSession->GetDataTransfer();
if (initialDataTransfer) {
initialDataTransfer->GetDropEffectInt(&dropEffect);
}
@ -3534,8 +3533,7 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
// the initial dataTransfer is the one from the dragstart event that
// was set on the dragSession when the drag began.
nsCOMPtr<nsIDOMDataTransfer> dataTransfer;
nsCOMPtr<nsIDOMDataTransfer> initialDataTransfer;
dragSession->GetDataTransfer(getter_AddRefs(initialDataTransfer));
RefPtr<DataTransfer> initialDataTransfer = dragSession->GetDataTransfer();
WidgetDragEvent *dragEvent = aEvent->AsDragEvent();
@ -4781,8 +4779,7 @@ EventStateManager::UpdateDragDataTransfer(WidgetDragEvent* dragEvent)
if (dragSession) {
// the initial dataTransfer is the one from the dragstart event that
// was set on the dragSession when the drag began.
nsCOMPtr<nsIDOMDataTransfer> initialDataTransfer;
dragSession->GetDataTransfer(getter_AddRefs(initialDataTransfer));
RefPtr<DataTransfer> initialDataTransfer = dragSession->GetDataTransfer();
if (initialDataTransfer) {
// retrieve the current moz cursor setting and save it.
nsAutoString mozCursor;

Просмотреть файл

@ -68,20 +68,6 @@ interface nsIDOMDataTransfer : nsISupports
*/
void addElement(in nsIDOMElement element);
/**
* Sets the drag cursor state. Primarily used to control the cursor during
* tab drags, but could be expanded to other uses. XXX Currently implemented
* on Win32 only.
*
* Possible values:
* auto - use default system behavior.
* default - set the cursor to an arrow during the drag operation.
*
* Values other than 'default' are indentical to setting mozCursor to
* 'auto'.
*/
attribute DOMString mozCursor;
/**
* Will be true when the user has cancelled the drag (typically by pressing
* Escape) and when the drag has been cancelled unexpectedly. This will be

Просмотреть файл

@ -4512,9 +4512,7 @@ ContentParent::MaybeInvokeDragSession(TabParent* aParent)
dragService->GetCurrentSession(getter_AddRefs(session));
if (session) {
nsTArray<IPCDataTransfer> dataTransfers;
nsCOMPtr<nsIDOMDataTransfer> domTransfer;
session->GetDataTransfer(getter_AddRefs(domTransfer));
nsCOMPtr<DataTransfer> transfer = do_QueryInterface(domTransfer);
RefPtr<DataTransfer> transfer = session->GetDataTransfer();
if (!transfer) {
// Pass eDrop to get DataTransfer with external
// drag formats cached.
@ -4548,8 +4546,7 @@ ContentParent::RecvUpdateDropEffect(const uint32_t& aDragAction,
nsCOMPtr<nsIDragSession> dragSession = nsContentUtils::GetDragSession();
if (dragSession) {
dragSession->SetDragAction(aDragAction);
nsCOMPtr<nsIDOMDataTransfer> dt;
dragSession->GetDataTransfer(getter_AddRefs(dt));
RefPtr<DataTransfer> dt = dragSession->GetDataTransfer();
if (dt) {
dt->SetDropEffectInt(aDropEffect);
}

Просмотреть файл

@ -19,6 +19,7 @@
#include "mozilla/BrowserElementParent.h"
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/EventListenerManager.h"
#include "mozilla/dom/DataTransfer.h"
#include "mozilla/dom/indexedDB/PIndexedDBPermissionRequestChild.h"
#include "mozilla/dom/PaymentRequestChild.h"
#include "mozilla/dom/TelemetryScrollProbe.h"
@ -1955,8 +1956,7 @@ TabChild::RecvRealDragEvent(const WidgetDragEvent& aEvent,
if (dragSession) {
dragSession->SetDragAction(aDragAction);
dragSession->SetTriggeringPrincipalURISpec(aPrincipalURISpec);
nsCOMPtr<nsIDOMDataTransfer> initialDataTransfer;
dragSession->GetDataTransfer(getter_AddRefs(initialDataTransfer));
RefPtr<DataTransfer> initialDataTransfer = dragSession->GetDataTransfer();
if (initialDataTransfer) {
initialDataTransfer->SetDropEffectInt(aDropEffect);
}

Просмотреть файл

@ -1179,8 +1179,7 @@ TabParent::QueryDropLinksForVerification()
return false;
}
nsCOMPtr<nsIDOMDataTransfer> initialDataTransfer;
dragSession->GetDataTransfer(getter_AddRefs(initialDataTransfer));
RefPtr<DataTransfer> initialDataTransfer = dragSession->GetDataTransfer();
if (!initialDataTransfer) {
NS_WARNING("No initialDataTransfer to query links for verification");
return false;

Просмотреть файл

@ -17,6 +17,7 @@
#include "mozilla/MouseEvents.h"
#include "mozilla/TextEvents.h"
#include "mozilla/TouchEvents.h"
#include "mozilla/dom/DataTransfer.h"
#include "mozilla/dom/SimpleGestureEventBinding.h"
#include "nsArrayUtils.h"
@ -6260,10 +6261,10 @@ GetIntegerDeltaForEvent(NSEvent* aEvent)
// value for NSDragOperationGeneric that is passed by other applications.
// All that said, NSDragOperationNone is still reliable.
if (aOperation == NSDragOperationNone) {
nsCOMPtr<nsIDOMDataTransfer> dataTransfer;
dragService->GetDataTransfer(getter_AddRefs(dataTransfer));
if (dataTransfer)
RefPtr<dom::DataTransfer> dataTransfer = dragService->GetDataTransfer();
if (dataTransfer) {
dataTransfer->SetDropEffectInt(nsIDragService::DRAGDROP_ACTION_NONE);
}
}
mDragService->EndDragSession(

Просмотреть файл

@ -23,7 +23,6 @@
#include "nsISelection.h"
#include "nsISelectionPrivate.h"
#include "nsPresContext.h"
#include "nsIDOMDataTransfer.h"
#include "nsIImageLoadingContent.h"
#include "imgIContainer.h"
#include "imgIRequest.h"
@ -35,6 +34,7 @@
#include "mozilla/MouseEvents.h"
#include "mozilla/Preferences.h"
#include "mozilla/dom/DataTransferItemList.h"
#include "mozilla/dom/DataTransfer.h"
#include "mozilla/gfx/2D.h"
#include "mozilla/Unused.h"
#include "nsFrameLoader.h"
@ -201,7 +201,7 @@ nsBaseDragService::IsDataFlavorSupported(const char *aDataFlavor,
}
NS_IMETHODIMP
nsBaseDragService::GetDataTransfer(nsIDOMDataTransfer** aDataTransfer)
nsBaseDragService::GetDataTransferXPCOM(nsIDOMDataTransfer** aDataTransfer)
{
*aDataTransfer = mDataTransfer;
NS_IF_ADDREF(*aDataTransfer);
@ -209,10 +209,23 @@ nsBaseDragService::GetDataTransfer(nsIDOMDataTransfer** aDataTransfer)
}
NS_IMETHODIMP
nsBaseDragService::SetDataTransfer(nsIDOMDataTransfer* aDataTransfer)
nsBaseDragService::SetDataTransferXPCOM(nsIDOMDataTransfer* aDataTransfer)
{
// Cast is safe because nsIDOMDataTransfer is builtinclass.
mDataTransfer = static_cast<DataTransfer*>(aDataTransfer);
return NS_OK;
}
DataTransfer*
nsBaseDragService::GetDataTransfer()
{
return mDataTransfer;
}
void
nsBaseDragService::SetDataTransfer(DataTransfer* aDataTransfer)
{
mDataTransfer = aDataTransfer;
return NS_OK;
}
//-------------------------------------------------------------------------
@ -271,7 +284,8 @@ nsBaseDragService::InvokeDragSessionWithImage(nsIDOMNode* aDOMNode,
NS_ENSURE_TRUE(aDataTransfer, NS_ERROR_NULL_POINTER);
NS_ENSURE_TRUE(mSuppressLevel == 0, NS_ERROR_FAILURE);
mDataTransfer = aDataTransfer;
// Cast is safe because nsIDOMDataTransfer is builtinclass.
mDataTransfer = static_cast<DataTransfer*>(aDataTransfer);
mSelection = nullptr;
mHasImage = true;
mDragPopup = nullptr;
@ -308,7 +322,8 @@ nsBaseDragService::InvokeDragSessionWithSelection(nsISelection* aSelection,
NS_ENSURE_TRUE(aDragEvent, NS_ERROR_NULL_POINTER);
NS_ENSURE_TRUE(mSuppressLevel == 0, NS_ERROR_FAILURE);
mDataTransfer = aDataTransfer;
// Cast is safe because nsIDOMDataTransfer is builtinclass.
mDataTransfer = static_cast<DataTransfer*>(aDataTransfer);
mSelection = aSelection;
mHasImage = true;
mDragPopup = nullptr;

Просмотреть файл

@ -10,7 +10,6 @@
#include "nsIDragSession.h"
#include "nsITransferable.h"
#include "nsIDOMDocument.h"
#include "nsIDOMDataTransfer.h"
#include "nsCOMPtr.h"
#include "nsRect.h"
#include "nsPoint.h"
@ -33,6 +32,10 @@ namespace mozilla {
namespace gfx {
class SourceSurface;
} // namespace gfx
namespace dom {
class DataTransfer;
} // namespace dom
} // namespace mozilla
/**
@ -165,7 +168,7 @@ protected:
// if it came from outside the app.
nsContentPolicyType mContentPolicyType; // the contentpolicy type passed to the channel
// when initiating the drag session
nsCOMPtr<nsIDOMDataTransfer> mDataTransfer;
RefPtr<mozilla::dom::DataTransfer> mDataTransfer;
// used to determine the image to appear on the cursor while dragging
nsCOMPtr<nsIDOMNode> mImage;

Просмотреть файл

@ -10,16 +10,22 @@
%{ 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, uuid(25bce737-73f0-43c7-bc20-c71044a73c5a)]
[scriptable, builtinclass, uuid(25bce737-73f0-43c7-bc20-c71044a73c5a)]
interface nsIDragSession : nsISupports
{
/**
@ -72,7 +78,10 @@ interface nsIDragSession : nsISupports
/**
* 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

Просмотреть файл

@ -15,12 +15,12 @@
/*
* class nsNativeDragSource
*/
nsNativeDragSource::nsNativeDragSource(nsIDOMDataTransfer* aDataTransfer) :
nsNativeDragSource::nsNativeDragSource(mozilla::dom::DataTransfer* aDataTransfer) :
m_cRef(0),
m_hCursor(nullptr),
mUserCancelled(false)
{
mDataTransfer = do_QueryInterface(aDataTransfer);
mDataTransfer = aDataTransfer;
}
nsNativeDragSource::~nsNativeDragSource()

Просмотреть файл

@ -7,10 +7,16 @@
#include "nscore.h"
#include "nsIDOMDataTransfer.h"
#include "nsCOMPtr.h"
#include <ole2.h>
#include <oleidl.h>
#include "mozilla/Attributes.h"
#inclide "mozilla/RefPtr.h"
namespace mozilla {
namespace dom {
class DataTransfer;
} // namespace dom
} // namespace mozilla
//class nsIDragSource;
@ -24,7 +30,7 @@ public:
// construct an nsNativeDragSource referencing adapter
// nsNativeDragSource(nsIDragSource * adapter);
explicit nsNativeDragSource(nsIDOMDataTransfer* aDataTransfer);
explicit nsNativeDragSource(mozilla::dom::DataTransfer* aDataTransfer);
~nsNativeDragSource();
// IUnknown methods - see iunknown.h for documentation
@ -53,7 +59,7 @@ protected:
ULONG m_cRef;
// Data object, hold information about cursor state
nsCOMPtr<nsIDOMDataTransfer> mDataTransfer;
RefPtr<mozilla::dom::DataTransfer> mDataTransfer;
// Custom drag cursor
HCURSOR m_hCursor;