From fe6ae21d9b0edea8277690846a4fe8b0c77ddd28 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Fri, 29 Jun 2012 11:41:38 -0400 Subject: [PATCH] Bug 769653 - Initialize the transferable created in nsDOMDataTransfer::FillInExternalDragData; r=bzbarsky --- content/events/src/nsDOMDataTransfer.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/content/events/src/nsDOMDataTransfer.cpp b/content/events/src/nsDOMDataTransfer.cpp index 04eaae7c4484..e96c1628c411 100644 --- a/content/events/src/nsDOMDataTransfer.cpp +++ b/content/events/src/nsDOMDataTransfer.cpp @@ -910,11 +910,6 @@ nsDOMDataTransfer::FillInExternalDragData(TransferItem& aItem, PRUint32 aIndex) NS_PRECONDITION(mIsExternal, "Not an external drag"); if (!aItem.mData) { - nsCOMPtr trans = - do_CreateInstance("@mozilla.org/widget/transferable;1"); - if (!trans) - return; - NS_ConvertUTF16toUTF8 utf8format(aItem.mFormat); const char* format = utf8format.get(); if (strcmp(format, "text/plain") == 0) @@ -926,6 +921,16 @@ nsDOMDataTransfer::FillInExternalDragData(TransferItem& aItem, PRUint32 aIndex) if (!dragSession) return; + nsCOMPtr trans = + do_CreateInstance("@mozilla.org/widget/transferable;1"); + if (!trans) + return; + + nsCOMPtr domDoc; + dragSession->GetSourceDocument(getter_AddRefs(domDoc)); + nsCOMPtr doc = do_QueryInterface(domDoc); + trans->Init(doc ? doc->GetLoadContext() : nsnull); + trans->AddDataFlavor(format); dragSession->GetData(trans, aIndex);