Bug 1550930 part 1. Stop using [array] for nsIDroppedLinkHandler.queryLinks. r=NeilDeakin

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

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Boris Zbarsky 2019-05-15 20:24:00 +00:00
Родитель d9bc4e00c7
Коммит c976c9b462
3 изменённых файлов: 9 добавлений и 21 удалений

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

@ -314,13 +314,9 @@ ContentAreaDropListener.prototype =
}
},
queryLinks: function(aDataTransfer, aCount)
queryLinks: function(aDataTransfer)
{
let links = this._getDropLinks(aDataTransfer);
if (aCount) {
aCount.value = links.length;
}
return links;
return this._getDropLinks(aDataTransfer);
},
_eventTargetIsDisabled: function(aEvent)

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

@ -97,9 +97,7 @@ interface nsIDroppedLinkHandler : nsISupports
* it allows the parent to verify that the child did not modify links
* being dropped.
*/
void queryLinks(in DataTransfer aDataTransfer,
[optional] out unsigned long aCount,
[retval, array, size_is(aCount)] out nsIDroppedLinkItem aLinks);
Array<nsIDroppedLinkItem> queryLinks(in DataTransfer aDataTransfer);
/**
* Given a drop event aEvent, determines the triggering principal for the

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

@ -1391,42 +1391,36 @@ bool BrowserParent::QueryDropLinksForVerification() {
// verification array and store all links that are being dragged.
mVerifyDropLinks.Clear();
uint32_t linksCount = 0;
nsIDroppedLinkItem** droppedLinkedItems = nullptr;
dropHandler->QueryLinks(initialDataTransfer, &linksCount,
&droppedLinkedItems);
nsTArray<RefPtr<nsIDroppedLinkItem>> droppedLinkItems;
dropHandler->QueryLinks(initialDataTransfer, droppedLinkItems);
// Since the entire event is cancelled if one of the links is invalid,
// we can store all links on the parent side without any prior
// validation checks.
nsresult rv = NS_OK;
for (uint32_t i = 0; i < linksCount; i++) {
for (nsIDroppedLinkItem* item : droppedLinkItems) {
nsString tmp;
rv = droppedLinkedItems[i]->GetUrl(tmp);
rv = item->GetUrl(tmp);
if (NS_FAILED(rv)) {
NS_WARNING("Failed to query url for verification");
break;
}
mVerifyDropLinks.AppendElement(tmp);
rv = droppedLinkedItems[i]->GetName(tmp);
rv = item->GetName(tmp);
if (NS_FAILED(rv)) {
NS_WARNING("Failed to query name for verification");
break;
}
mVerifyDropLinks.AppendElement(tmp);
rv = droppedLinkedItems[i]->GetType(tmp);
rv = item->GetType(tmp);
if (NS_FAILED(rv)) {
NS_WARNING("Failed to query type for verification");
break;
}
mVerifyDropLinks.AppendElement(tmp);
}
for (uint32_t i = 0; i < linksCount; i++) {
NS_IF_RELEASE(droppedLinkedItems[i]);
}
free(droppedLinkedItems);
if (NS_FAILED(rv)) {
mVerifyDropLinks.Clear();
return false;