Bug 1493292 - Remove aDataLen parameters from nsITransferable.getTransferData. r=smaug

Depends on D11200

Differential Revision: https://phabricator.services.mozilla.com/D11201

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Tom Schuster 2018-11-20 16:59:56 +00:00
parent aa53a63c78
commit 5a9d2a428c
33 changed files with 84 additions and 144 deletions

View File

@ -731,13 +731,12 @@ function getTextFromClipboard() {
Services.clipboard.getData(trans, Services.clipboard.kGlobalClipboard);
var str = {};
var strLength = {};
trans.getTransferData("text/unicode", str, strLength);
trans.getTransferData("text/unicode", str);
if (str)
str = str.value.QueryInterface(Ci.nsISupportsString);
if (str)
return str.data.substring(0, strLength.value / 2);
return str.data;
return "";
}

View File

@ -2504,12 +2504,11 @@ function readFromClipboard() {
Services.clipboard.getData(trans, Services.clipboard.kGlobalClipboard);
var data = {};
var dataLen = {};
trans.getTransferData("text/unicode", data, dataLen);
trans.getTransferData("text/unicode", data);
if (data) {
data = data.value.QueryInterface(Ci.nsISupportsString);
url = data.data.substring(0, dataLen.value / 2);
url = data.data;
}
} catch (ex) {
}

View File

@ -28,7 +28,7 @@ add_task(async function copyURL() {
transferable.addDataFlavor(flavor);
Services.clipboard.getData(transferable, Services.clipboard.kGlobalClipboard);
let strObj = {};
transferable.getTransferData(flavor, strObj, {});
transferable.getTransferData(flavor, strObj);
Assert.ok(!!strObj.value);
strObj.value.QueryInterface(Ci.nsISupportsString);
Assert.equal(strObj.value.data, gBrowser.selectedBrowser.currentURI.spec);

View File

@ -965,7 +965,7 @@ PlacesController.prototype = {
xferable.init(null);
xferable.addDataFlavor(PlacesUtils.TYPE_X_MOZ_PLACE_ACTION);
this.clipboard.getData(xferable, Ci.nsIClipboard.kGlobalClipboard);
xferable.getTransferData(PlacesUtils.TYPE_X_MOZ_PLACE_ACTION, action, {});
xferable.getTransferData(PlacesUtils.TYPE_X_MOZ_PLACE_ACTION, action);
[action, actionOwner] =
action.value.QueryInterface(Ci.nsISupportsString).data.split(",");
} catch (ex) {

View File

@ -2618,8 +2618,7 @@ dump(`callFromJSON: < ${JSON.stringify(call)}\n`);
Services.clipboard.getData(
trans, Services.clipboard.kGlobalClipboard);
let str = {};
let strLength = {};
trans.getTransferData("text/unicode", str, strLength);
trans.getTransferData("text/unicode", str);
let pasteText = str.value.QueryInterface(Ci.nsISupportsString).data;
return new String_PP_Var(pasteText);
}

View File

@ -165,11 +165,9 @@ async function getImageSizeFromClipboard() {
clip.getData(trans, clipid.kGlobalClipboard);
const data = {};
const dataLength = {};
trans.getTransferData(flavor, data, dataLength);
trans.getTransferData(flavor, data);
ok(data.value, "screenshot exists");
ok(dataLength.value > 0, "screenshot has length");
let image = data.value;

View File

@ -42,7 +42,7 @@ function getText() {
const data = {};
try {
xferable.getTransferData(flavor, data, {});
xferable.getTransferData(flavor, data);
} catch (e) {
// Clipboard doesn't contain data in flavor, return null.
return null;

View File

@ -243,9 +243,7 @@ nsContentAreaDragDropDataProvider::GetFlavorData(nsITransferable *aTransferable,
// get the URI from the kFilePromiseURLMime flavor
NS_ENSURE_ARG(aTransferable);
nsCOMPtr<nsISupports> tmp;
uint32_t dataSize = 0;
aTransferable->GetTransferData(kFilePromiseURLMime,
getter_AddRefs(tmp), &dataSize);
aTransferable->GetTransferData(kFilePromiseURLMime, getter_AddRefs(tmp));
nsCOMPtr<nsISupportsString> supportsString =
do_QueryInterface(tmp);
if (!supportsString)
@ -261,7 +259,7 @@ nsContentAreaDragDropDataProvider::GetFlavorData(nsITransferable *aTransferable,
NS_ENSURE_SUCCESS(rv, rv);
aTransferable->GetTransferData(kFilePromiseDestFilename,
getter_AddRefs(tmp), &dataSize);
getter_AddRefs(tmp));
supportsString = do_QueryInterface(tmp);
if (!supportsString)
return NS_ERROR_FAILURE;
@ -280,7 +278,7 @@ nsContentAreaDragDropDataProvider::GetFlavorData(nsITransferable *aTransferable,
// content processes.
if (XRE_IsParentProcess()) {
aTransferable->GetTransferData(kImageRequestMime,
getter_AddRefs(tmp), &dataSize);
getter_AddRefs(tmp));
supportsString = do_QueryInterface(tmp);
if (!supportsString)
return NS_ERROR_FAILURE;
@ -328,9 +326,8 @@ nsContentAreaDragDropDataProvider::GetFlavorData(nsITransferable *aTransferable,
// get the target directory from the kFilePromiseDirectoryMime
// flavor
nsCOMPtr<nsISupports> dirPrimitive;
dataSize = 0;
aTransferable->GetTransferData(kFilePromiseDirectoryMime,
getter_AddRefs(dirPrimitive), &dataSize);
getter_AddRefs(dirPrimitive));
nsCOMPtr<nsIFile> destDirectory = do_QueryInterface(dirPrimitive);
if (!destDirectory)
return NS_ERROR_FAILURE;
@ -794,27 +791,22 @@ DragDataProducer::Produce(DataTransfer* aDataTransfer,
nsCOMPtr<nsISupports> supports;
nsCOMPtr<nsISupportsString> data;
uint32_t dataSize;
rv = transferable->GetTransferData(kHTMLMime, getter_AddRefs(supports),
&dataSize);
rv = transferable->GetTransferData(kHTMLMime, getter_AddRefs(supports));
data = do_QueryInterface(supports);
if (NS_SUCCEEDED(rv)) {
data->GetData(mHtmlString);
}
rv = transferable->GetTransferData(kHTMLContext, getter_AddRefs(supports),
&dataSize);
rv = transferable->GetTransferData(kHTMLContext, getter_AddRefs(supports));
data = do_QueryInterface(supports);
if (NS_SUCCEEDED(rv)) {
data->GetData(mContextString);
}
rv = transferable->GetTransferData(kHTMLInfo, getter_AddRefs(supports),
&dataSize);
rv = transferable->GetTransferData(kHTMLInfo, getter_AddRefs(supports));
data = do_QueryInterface(supports);
if (NS_SUCCEEDED(rv)) {
data->GetData(mInfoString);
}
rv = transferable->GetTransferData(kUnicodeMime, getter_AddRefs(supports),
&dataSize);
rv = transferable->GetTransferData(kUnicodeMime, getter_AddRefs(supports));
data = do_QueryInterface(supports);
NS_ENSURE_SUCCESS(rv, rv); // require plain text at a minimum
data->GetData(mTitleString);

View File

@ -7994,8 +7994,7 @@ nsContentUtils::TransferableToIPCTransferable(nsITransferable* aTransferable,
}
nsCOMPtr<nsISupports> data;
uint32_t dataLen = 0;
aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(data), &dataLen);
aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(data));
nsCOMPtr<nsISupportsString> text = do_QueryInterface(data);
nsCOMPtr<nsISupportsCString> ctext = do_QueryInterface(data);

View File

@ -85,7 +85,7 @@ async function testCopyPaste (isXHTML) {
transferable.addDataFlavor(mime);
clipboard.getData(transferable, 1);
var data = SpecialPowers.createBlankObject();
transferable.getTransferData(mime, data, {}) ;
transferable.getTransferData(mime, data) ;
return data;
}
function testHtmlClipboardValue(mime, expected) {

View File

@ -60,7 +60,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=816298
transferable.addDataFlavor(mime);
clipboard.getData(transferable, 1);
var data = SpecialPowers.createBlankObject();
transferable.getTransferData(mime, data, {}) ;
transferable.getTransferData(mime, data) ;
return SpecialPowers.wrap(data);
}
function testHtmlClipboardValue(mime, expected, test) {

View File

@ -32,7 +32,7 @@ function testCopyImage () {
transferable.addDataFlavor(mime);
clipboard.getData(transferable, 1);
var data = SpecialPowers.createBlankObject();
transferable.getTransferData(mime, data, {});
transferable.getTransferData(mime, data);
return data;
}

View File

@ -179,9 +179,8 @@ DataTransferItem::FillInExternalData()
}
}
uint32_t length = 0;
nsCOMPtr<nsISupports> data;
nsresult rv = trans->GetTransferData(format, getter_AddRefs(data), &length);
nsresult rv = trans->GetTransferData(format, getter_AddRefs(data));
if (NS_WARN_IF(NS_FAILED(rv) || !data)) {
return;
}

View File

@ -1585,7 +1585,6 @@ HTMLEditor::PasteInternal(int32_t aClipboardType,
bool bHavePrivateHTMLFlavor = HavePrivateHTMLFlavor(clipboard);
if (bHavePrivateHTMLFlavor) {
nsCOMPtr<nsISupports> contextDataObj, infoDataObj;
uint32_t contextLen, infoLen;
nsCOMPtr<nsISupportsString> textDataObj;
nsCOMPtr<nsITransferable> contextTransferable =
@ -1597,8 +1596,7 @@ HTMLEditor::PasteInternal(int32_t aClipboardType,
contextTransferable->AddDataFlavor(kHTMLContext);
clipboard->GetData(contextTransferable, aClipboardType);
contextTransferable->GetTransferData(kHTMLContext,
getter_AddRefs(contextDataObj),
&contextLen);
getter_AddRefs(contextDataObj));
nsCOMPtr<nsITransferable> infoTransferable =
do_CreateInstance("@mozilla.org/widget/transferable;1");
@ -1609,23 +1607,16 @@ HTMLEditor::PasteInternal(int32_t aClipboardType,
infoTransferable->AddDataFlavor(kHTMLInfo);
clipboard->GetData(infoTransferable, aClipboardType);
infoTransferable->GetTransferData(kHTMLInfo,
getter_AddRefs(infoDataObj),
&infoLen);
getter_AddRefs(infoDataObj));
if (contextDataObj) {
nsAutoString text;
textDataObj = do_QueryInterface(contextDataObj);
textDataObj->GetData(text);
MOZ_ASSERT(text.Length() <= contextLen / 2);
contextStr.Assign(text.get(), contextLen / 2);
textDataObj->GetData(contextStr);
}
if (infoDataObj) {
nsAutoString text;
textDataObj = do_QueryInterface(infoDataObj);
textDataObj->GetData(text);
MOZ_ASSERT(text.Length() <= infoLen / 2);
infoStr.Assign(text.get(), infoLen / 2);
textDataObj->GetData(infoStr);
}
}
@ -1794,10 +1785,8 @@ HTMLEditor::CanPasteTransferable(nsITransferable* aTransferable)
for (size_t i = 0; i < length; i++, flavors++) {
nsCOMPtr<nsISupports> data;
uint32_t dataLen;
nsresult rv = aTransferable->GetTransferData(*flavors,
getter_AddRefs(data),
&dataLen);
getter_AddRefs(data));
if (NS_SUCCEEDED(rv) && data) {
return true;
}

View File

@ -465,10 +465,8 @@ TextEditor::CanPasteTransferable(nsITransferable* aTransferable)
}
nsCOMPtr<nsISupports> data;
uint32_t dataLen;
nsresult rv = aTransferable->GetTransferData(kUnicodeMime,
getter_AddRefs(data),
&dataLen);
getter_AddRefs(data));
if (NS_SUCCEEDED(rv) && data) {
return true;
}

View File

@ -55,7 +55,7 @@ function copyCF_HTML(cfhtml, success, failure) {
cb.getData(trans, cb.kGlobalClipboard);
var data = SpecialPowers.createBlankObject();
try {
trans.getTransferData(CF_HTML, data, {});
trans.getTransferData(CF_HTML, data);
data = SpecialPowers.wrap(data).value.QueryInterface(Ci.nsISupportsCString).data;
} catch (e) {
setTimeout(function() { copyCF_HTML_worker(successFn, failureFn); }, 100);

View File

@ -1794,7 +1794,7 @@ SpecialPowersAPI.prototype = {
Services.clipboard.getData(xferable, whichClipboard);
var data = {};
try {
xferable.getTransferData(flavor, data, {});
xferable.getTransferData(flavor, data);
} catch (e) {}
data = data.value || null;
if (data == null)

View File

@ -611,8 +611,7 @@ function GetClipboardSearchString(aLoadContext) {
Clipboard.getData(trans, Ci.nsIClipboard.kFindClipboard);
let data = {};
let dataLen = {};
trans.getTransferData("text/unicode", data, dataLen);
trans.getTransferData("text/unicode", data);
if (data.value) {
data = data.value.QueryInterface(Ci.nsISupportsString);
searchString = data.toString();

View File

@ -33,9 +33,7 @@ nsClipboard::SetData(nsITransferable *aTransferable,
return NS_ERROR_NOT_IMPLEMENTED;
nsCOMPtr<nsISupports> tmp;
uint32_t len;
nsresult rv = aTransferable->GetTransferData(kUnicodeMime, getter_AddRefs(tmp),
&len);
nsresult rv = aTransferable->GetTransferData(kUnicodeMime, getter_AddRefs(tmp));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsISupportsString> supportsString = do_QueryInterface(tmp);
// No support for non-text data

View File

@ -6257,9 +6257,8 @@ provideDataForType:(NSString*)aType
// Now request the kFilePromiseMime data, which will invoke the data
// provider. If successful, the file will have been created.
nsCOMPtr<nsISupports> fileDataPrimitive;
uint32_t dataSize = 0;
item->GetTransferData(kFilePromiseMime,
getter_AddRefs(fileDataPrimitive), &dataSize);
getter_AddRefs(fileDataPrimitive));
}
CFRelease(urlRef);
CFRelease(pboardRef);

View File

@ -389,10 +389,9 @@ nsClipboard::GetNativeClipboardData(nsITransferable* aTransferable, int32_t aWhi
nsCString& flavorStr = flavors[i];
nsCOMPtr<nsISupports> dataSupports;
uint32_t dataSize = 0;
rv = mTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(dataSupports), &dataSize);
rv = mTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(dataSupports));
if (NS_SUCCEEDED(rv)) {
aTransferable->SetTransferData(flavorStr.get(), dataSupports, dataSize);
aTransferable->SetTransferData(flavorStr.get(), dataSupports, 0);
return NS_OK; // maybe try to fill in more types? Is there a point?
}
}
@ -517,9 +516,8 @@ nsClipboard::PasteboardDictFromTransferable(nsITransferable* aTransferable)
NSString *pboardType = nil;
if (nsClipboard::IsStringType(flavorStr, &pboardType)) {
uint32_t dataSize = 0;
nsCOMPtr<nsISupports> genericDataWrapper;
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericDataWrapper), &dataSize);
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericDataWrapper));
if (NS_FAILED(rv)) {
[pboardType release];
continue;
@ -542,9 +540,8 @@ nsClipboard::PasteboardDictFromTransferable(nsITransferable* aTransferable)
[pasteboardOutputDict setObject:nativeString forKey:pboardType];
}
else if (flavorStr.EqualsLiteral(kCustomTypesMime)) {
uint32_t dataSize = 0;
nsCOMPtr<nsISupports> genericDataWrapper;
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericDataWrapper), &dataSize);
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericDataWrapper));
if (NS_FAILED(rv)) {
continue;
}
@ -564,9 +561,8 @@ nsClipboard::PasteboardDictFromTransferable(nsITransferable* aTransferable)
else if (flavorStr.EqualsLiteral(kPNGImageMime) || flavorStr.EqualsLiteral(kJPEGImageMime) ||
flavorStr.EqualsLiteral(kJPGImageMime) || flavorStr.EqualsLiteral(kGIFImageMime) ||
flavorStr.EqualsLiteral(kNativeImageMime)) {
uint32_t dataSize = 0;
nsCOMPtr<nsISupports> transferSupports;
aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(transferSupports), &dataSize);
aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(transferSupports));
nsCOMPtr<imgIContainer> image(do_QueryInterface(transferSupports));
if (!image) {
@ -613,9 +609,8 @@ nsClipboard::PasteboardDictFromTransferable(nsITransferable* aTransferable)
CFRelease(tiffData);
}
else if (flavorStr.EqualsLiteral(kFileMime)) {
uint32_t len = 0;
nsCOMPtr<nsISupports> genericFile;
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericFile), &len);
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericFile));
if (NS_FAILED(rv)) {
continue;
}
@ -651,9 +646,8 @@ nsClipboard::PasteboardDictFromTransferable(nsITransferable* aTransferable)
forKey:urlPromiseContent];
}
else if (flavorStr.EqualsLiteral(kURLMime)) {
uint32_t len = 0;
nsCOMPtr<nsISupports> genericURL;
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericURL), &len);
rv = aTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(genericURL));
nsCOMPtr<nsISupportsString> urlObject(do_QueryInterface(genericURL));
nsAutoString url;
@ -669,7 +663,7 @@ nsClipboard::PasteboardDictFromTransferable(nsITransferable* aTransferable)
nsAutoString urlTitle;
urlObject->GetData(urlTitle);
urlTitle.Mid(urlTitle, newlinePos + 1, len - (newlinePos + 1));
urlTitle.Mid(urlTitle, newlinePos + 1, urlTitle.Length() - (newlinePos + 1));
nativeTitle =
[NSString stringWithCharacters:

View File

@ -393,10 +393,9 @@ nsDragService::GetData(nsITransferable* aTransferable, uint32_t aItemIndex)
nsCString& flavorStr = flavors[i];
nsCOMPtr<nsISupports> dataSupports;
uint32_t dataSize = 0;
rv = currentTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(dataSupports), &dataSize);
rv = currentTransferable->GetTransferData(flavorStr.get(), getter_AddRefs(dataSupports));
if (NS_SUCCEEDED(rv)) {
aTransferable->SetTransferData(flavorStr.get(), dataSupports, dataSize);
aTransferable->SetTransferData(flavorStr.get(), dataSupports, 0);
return NS_OK; // maybe try to fill in more types? Is there a point?
}
}

View File

@ -475,7 +475,6 @@ nsClipboard::SelectionGetEvent(GtkClipboard *aClipboard,
nsresult rv;
nsCOMPtr<nsISupports> item;
uint32_t len;
GdkAtom selectionTarget = gtk_selection_data_get_target(aSelectionData);
@ -484,8 +483,7 @@ nsClipboard::SelectionGetEvent(GtkClipboard *aClipboard,
// Try to convert our internal type into a text string. Get
// the transferable for this clipboard and try to get the
// text/unicode type for it.
rv = trans->GetTransferData("text/unicode", getter_AddRefs(item),
&len);
rv = trans->GetTransferData("text/unicode", getter_AddRefs(item));
if (!item || NS_FAILED(rv))
return;
@ -511,7 +509,11 @@ nsClipboard::SelectionGetEvent(GtkClipboard *aClipboard,
nsCOMPtr<nsISupports> imageItem;
nsCOMPtr<imgIContainer> image;
for (uint32_t i = 0; i < ArrayLength(imageMimeTypes); i++) {
rv = trans->GetTransferData(imageMimeTypes[i], getter_AddRefs(imageItem), &len);
rv = trans->GetTransferData(imageMimeTypes[i], getter_AddRefs(imageItem));
if (NS_FAILED(rv)) {
continue;
}
image = do_QueryInterface(imageItem);
if (image) {
break;
@ -532,7 +534,7 @@ nsClipboard::SelectionGetEvent(GtkClipboard *aClipboard,
}
if (selectionTarget == gdk_atom_intern(kHTMLMime, FALSE)) {
rv = trans->GetTransferData(kHTMLMime, getter_AddRefs(item), &len);
rv = trans->GetTransferData(kHTMLMime, getter_AddRefs(item));
if (!item || NS_FAILED(rv)) {
return;
}
@ -562,7 +564,7 @@ nsClipboard::SelectionGetEvent(GtkClipboard *aClipboard,
if (!target_name)
return;
rv = trans->GetTransferData(target_name, getter_AddRefs(item), &len);
rv = trans->GetTransferData(target_name, getter_AddRefs(item));
// nothing found?
if (!item || NS_FAILED(rv)) {
g_free(target_name);

View File

@ -709,20 +709,17 @@ nsDragService::GetData(nsITransferable * aTransferable,
continue;
nsCOMPtr<nsISupports> data;
uint32_t tmpDataLen = 0;
MOZ_LOG(sDragLm, LogLevel::Debug,
("trying to get transfer data for %s\n",
flavorStr.get()));
rv = item->GetTransferData(flavorStr.get(),
getter_AddRefs(data),
&tmpDataLen);
getter_AddRefs(data));
if (NS_FAILED(rv)) {
MOZ_LOG(sDragLm, LogLevel::Debug, ("failed.\n"));
continue;
}
MOZ_LOG(sDragLm, LogLevel::Debug, ("succeeded.\n"));
rv = aTransferable->SetTransferData(flavorStr.get(), data,
tmpDataLen);
rv = aTransferable->SetTransferData(flavorStr.get(), data, 0);
if (NS_FAILED(rv)) {
MOZ_LOG(sDragLm,
LogLevel::Debug,
@ -1490,9 +1487,7 @@ CreateURIList(nsIArray* aItems, nsACString& aURIList)
}
nsCOMPtr<nsISupports> data;
uint32_t len = 0;
nsresult rv = item->GetTransferData(kURLMime, getter_AddRefs(data),
&len);
nsresult rv = item->GetTransferData(kURLMime, getter_AddRefs(data));
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsISupportsString> string = do_QueryInterface(data);
@ -1515,7 +1510,7 @@ CreateURIList(nsIArray* aItems, nsACString& aURIList)
// There is no URI available. If there is a file available, create
// a URI from the file.
rv = item->GetTransferData(kFileMime, getter_AddRefs(data), &len);
rv = item->GetTransferData(kFileMime, getter_AddRefs(data));
if (NS_SUCCEEDED(rv)) {
if (nsCOMPtr<nsIFile> file = do_QueryInterface(data)) {
nsCOMPtr<nsIURI> fileURI;
@ -1677,10 +1672,8 @@ nsDragService::SourceDataGet(GtkWidget *aWidget,
}
nsresult rv;
nsCOMPtr<nsISupports> data;
uint32_t len;
rv = item->GetTransferData(actualFlavor,
getter_AddRefs(data),
&len);
getter_AddRefs(data));
if (strcmp(actualFlavor, kFilePromiseMime) == 0) {
if (NS_SUCCEEDED(rv)) {
@ -1750,9 +1743,8 @@ nsDragService::SourceBeginDrag(GdkDragContext *aContext)
for (uint32_t i = 0; i < flavors.Length(); ++i) {
if (flavors[i].EqualsLiteral(kFilePromiseDestFilename)) {
nsCOMPtr<nsISupports> data;
uint32_t dataSize = 0;
transferable->GetTransferData(kFilePromiseDestFilename,
getter_AddRefs(data), &dataSize);
getter_AddRefs(data));
nsCOMPtr<nsISupportsString> fileName = do_QueryInterface(data);
if (!fileName)
return;

View File

@ -32,10 +32,8 @@ HeadlessClipboard::SetData(nsITransferable *aTransferable,
// Only support plain text for now.
nsCOMPtr<nsISupports> clip;
uint32_t len;
nsresult rv = aTransferable->GetTransferData(kUnicodeMime,
getter_AddRefs(clip),
&len);
getter_AddRefs(clip));
if (NS_FAILED(rv)) {
return rv;
}

View File

@ -16,12 +16,11 @@ function getString(clipboard) {
try {
var data = {};
var dataLen = {};
trans.getTransferData("text/unicode", data, dataLen);
trans.getTransferData("text/unicode", data);
if (data) {
data = data.value.QueryInterface(Ci.nsISupportsString);
str = data.data.substring(0, dataLen.value / 2);
str = data.data;
}
} catch (ex) {
// If the clipboard is empty getTransferData will throw.

View File

@ -132,7 +132,7 @@ interface nsITransferable : nsISupports
* @param aData the data. Some variant of class in nsISupportsPrimitives.idl
* @param aDataLen the length of the data
*/
void getTransferData ( in string aFlavor, out nsISupports aData, out unsigned long aDataLen ) ;
void getTransferData(in string aFlavor, out nsISupports aData);
/**
* Returns the best flavor in the transferable, given those that have

View File

@ -260,13 +260,11 @@ nsTransferable::FindDataFlavor(const char* aFlavor)
//
NS_IMETHODIMP
nsTransferable::GetTransferData(const char* aFlavor,
nsISupports** aData,
uint32_t* aDataLen)
nsISupports** aData)
{
MOZ_ASSERT(mInitialized);
*aData = nullptr;
*aDataLen = 0;
nsresult rv = NS_OK;
@ -288,7 +286,6 @@ nsTransferable::GetTransferData(const char* aFlavor,
}
if (dataBytes) {
*aDataLen = len;
dataBytes.forget(aData);
return NS_OK;
}
@ -318,8 +315,9 @@ nsTransferable::GetTransferData(const char* aFlavor,
}
}
uint32_t dataLen;
return mFormatConv->Convert(data.GetFlavor().get(), dataBytes, len,
aFlavor, aData, aDataLen);
aFlavor, aData, &dataLen);
}
}
}

View File

@ -66,12 +66,11 @@ function readFromClipboard()
trans.addDataFlavor('text/html');
clip.getData(trans,clipid.kGlobalClipboard);
var str = new Object();
var strLength = new Object();
trans.getTransferData("text/html",str,strLength);
trans.getTransferData("text/html",str);
if (str)
str = str.value.QueryInterface(Ci.nsISupportsString);
if (str)
pastetext = str.data.substring(0,strLength.value / 2);
pastetext = str.data;
return pastetext;
}

View File

@ -48,7 +48,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=565392
transferable.addDataFlavor(mime);
clipboard.getData(transferable, 1);
var data = {};
transferable.getTransferData(mime, data, {}) ;
transferable.getTransferData(mime, data);
return data;
}

View File

@ -37,16 +37,15 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=948065
trans.addDataFlavor("text/unicode");
clipboard.getData(trans, Ci.nsIClipboard.kGlobalClipboard);
let str = {};
let length = {};
try {
trans.getTransferData('text/unicode', str, length);
trans.getTransferData('text/unicode', str);
} catch (e) {
str = '';
}
if (str) {
str = str.value.QueryInterface(Ci.nsISupportsString);
if (str) {
str = str.data.substring(0, length.value / 2);
str = str.data;
}
}
return str;

View File

@ -30,13 +30,11 @@
function checkTransferableText(transferable, expectedString, description) {
var data = {};
var dataLen = {};
transferable.getTransferData("text/unicode", data, dataLen);
transferable.getTransferData("text/unicode", data);
var actualValue = data.value.QueryInterface(Ci.nsISupportsString).data;
// Use ok + shortenString instead of is(...) to avoid dumping millions of characters in the output.
ok(actualValue === expectedString, description + ": text should match. " +
"Expected " + shortenString(expectedString) + ", got " + shortenString(actualValue));
is(dataLen.value, expectedString.length * 2, description + ": text length should match");
function shortenString(str) {
return str && str.length > 30 ? str.slice(0, 10) + "..." + str.slice(-10) : String(str);

View File

@ -898,9 +898,8 @@ nsDataObj::GetDib(const nsACString& inFlavor,
STGMEDIUM & aSTG)
{
ULONG result = E_FAIL;
uint32_t len = 0;
nsCOMPtr<nsISupports> genericDataWrapper;
mTransferable->GetTransferData(PromiseFlatCString(inFlavor).get(), getter_AddRefs(genericDataWrapper), &len);
mTransferable->GetTransferData(PromiseFlatCString(inFlavor).get(), getter_AddRefs(genericDataWrapper));
nsCOMPtr<imgIContainer> image ( do_QueryInterface(genericDataWrapper) );
if ( image ) {
nsCOMPtr<imgITools> imgTools = do_CreateInstance("@mozilla.org/image/tools;1");
@ -1364,7 +1363,6 @@ HRESULT nsDataObj::GetPreferredDropEffect ( FORMATETC& aFE, STGMEDIUM& aSTG )
HRESULT nsDataObj::GetText(const nsACString & aDataFlavor, FORMATETC& aFE, STGMEDIUM& aSTG)
{
void* data = nullptr;
uint32_t len;
// if someone asks for text/plain, look up text/unicode instead in the transferable.
const char* flavorStr;
@ -1376,9 +1374,11 @@ HRESULT nsDataObj::GetText(const nsACString & aDataFlavor, FORMATETC& aFE, STGME
// NOTE: CreateDataFromPrimitive creates new memory, that needs to be deleted
nsCOMPtr<nsISupports> genericDataWrapper;
mTransferable->GetTransferData(flavorStr, getter_AddRefs(genericDataWrapper), &len);
if ( !len )
mTransferable->GetTransferData(flavorStr, getter_AddRefs(genericDataWrapper));
if ( !genericDataWrapper )
return E_FAIL;
uint32_t len;
nsPrimitiveHelpers::CreateDataFromPrimitive(
nsDependentCString(flavorStr), genericDataWrapper, &data, &len);
if ( !data )
@ -1482,11 +1482,9 @@ HRESULT nsDataObj::GetFile(FORMATETC& aFE, STGMEDIUM& aSTG)
HRESULT nsDataObj::DropFile(FORMATETC& aFE, STGMEDIUM& aSTG)
{
nsresult rv;
uint32_t len = 0;
nsCOMPtr<nsISupports> genericDataWrapper;
mTransferable->GetTransferData(kFileMime, getter_AddRefs(genericDataWrapper),
&len);
mTransferable->GetTransferData(kFileMime, getter_AddRefs(genericDataWrapper));
nsCOMPtr<nsIFile> file ( do_QueryInterface(genericDataWrapper) );
if (!file)
return E_FAIL;
@ -1537,10 +1535,9 @@ HRESULT nsDataObj::DropImage(FORMATETC& aFE, STGMEDIUM& aSTG)
{
nsresult rv;
if (!mCachedTempFile) {
uint32_t len = 0;
nsCOMPtr<nsISupports> genericDataWrapper;
mTransferable->GetTransferData(kNativeImageMime, getter_AddRefs(genericDataWrapper), &len);
mTransferable->GetTransferData(kNativeImageMime, getter_AddRefs(genericDataWrapper));
nsCOMPtr<imgIContainer> image(do_QueryInterface(genericDataWrapper));
if (!image)
return E_FAIL;
@ -1841,9 +1838,8 @@ nsDataObj :: ExtractShortcutURL ( nsString & outURL )
NS_ASSERTION ( mTransferable, "We don't have a good transferable" );
nsresult rv = NS_ERROR_FAILURE;
uint32_t len = 0;
nsCOMPtr<nsISupports> genericURL;
if ( NS_SUCCEEDED(mTransferable->GetTransferData(kURLMime, getter_AddRefs(genericURL), &len)) ) {
if ( NS_SUCCEEDED(mTransferable->GetTransferData(kURLMime, getter_AddRefs(genericURL)))) {
nsCOMPtr<nsISupportsString> urlObject ( do_QueryInterface(genericURL) );
if ( urlObject ) {
nsAutoString url;
@ -1859,8 +1855,8 @@ nsDataObj :: ExtractShortcutURL ( nsString & outURL )
rv = NS_OK;
}
}
} else if ( NS_SUCCEEDED(mTransferable->GetTransferData(kURLDataMime, getter_AddRefs(genericURL), &len)) ||
NS_SUCCEEDED(mTransferable->GetTransferData(kURLPrivateMime, getter_AddRefs(genericURL), &len)) ) {
} else if ( NS_SUCCEEDED(mTransferable->GetTransferData(kURLDataMime, getter_AddRefs(genericURL))) ||
NS_SUCCEEDED(mTransferable->GetTransferData(kURLPrivateMime, getter_AddRefs(genericURL))) ) {
nsCOMPtr<nsISupportsString> urlObject ( do_QueryInterface(genericURL) );
if ( urlObject ) {
nsAutoString url;
@ -1892,9 +1888,8 @@ nsDataObj :: ExtractShortcutTitle ( nsString & outTitle )
NS_ASSERTION ( mTransferable, "We'd don't have a good transferable" );
nsresult rv = NS_ERROR_FAILURE;
uint32_t len = 0;
nsCOMPtr<nsISupports> genericURL;
if ( NS_SUCCEEDED(mTransferable->GetTransferData(kURLMime, getter_AddRefs(genericURL), &len)) ) {
if ( NS_SUCCEEDED(mTransferable->GetTransferData(kURLMime, getter_AddRefs(genericURL)) )) {
nsCOMPtr<nsISupportsString> urlObject ( do_QueryInterface(genericURL) );
if ( urlObject ) {
nsAutoString url;
@ -1905,7 +1900,7 @@ nsDataObj :: ExtractShortcutTitle ( nsString & outTitle )
int32_t lineIndex = url.FindChar ( '\n' );
NS_ASSERTION ( lineIndex != -1, "Format for url flavor is <url> <linefeed> <page title>" );
if ( lineIndex != -1 ) {
url.Mid ( outTitle, lineIndex + 1, (len/2) - (lineIndex + 1) );
url.Mid ( outTitle, lineIndex + 1, url.Length() - (lineIndex + 1) );
rv = NS_OK;
}
}
@ -2101,8 +2096,7 @@ HRESULT nsDataObj::GetDownloadDetails(nsIURI **aSourceURI,
// get the URI from the kFilePromiseURLMime flavor
nsCOMPtr<nsISupports> urlPrimitive;
uint32_t dataSize = 0;
mTransferable->GetTransferData(kFilePromiseURLMime, getter_AddRefs(urlPrimitive), &dataSize);
mTransferable->GetTransferData(kFilePromiseURLMime, getter_AddRefs(urlPrimitive));
nsCOMPtr<nsISupportsString> srcUrlPrimitive = do_QueryInterface(urlPrimitive);
NS_ENSURE_TRUE(srcUrlPrimitive, E_FAIL);
@ -2115,7 +2109,7 @@ HRESULT nsDataObj::GetDownloadDetails(nsIURI **aSourceURI,
nsAutoString srcFileName;
nsCOMPtr<nsISupports> fileNamePrimitive;
mTransferable->GetTransferData(kFilePromiseDestFilename, getter_AddRefs(fileNamePrimitive), &dataSize);
mTransferable->GetTransferData(kFilePromiseDestFilename, getter_AddRefs(fileNamePrimitive));
nsCOMPtr<nsISupportsString> srcFileNamePrimitive = do_QueryInterface(fileNamePrimitive);
if (srcFileNamePrimitive) {
srcFileNamePrimitive->GetData(srcFileName);