Bug 1799156 - Filter unknown DataTransferItem flavors. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D161487
This commit is contained in:
@@ -7761,12 +7761,37 @@ void nsContentUtils::SetKeyboardIndicatorsOnRemoteChildren(
|
||||
});
|
||||
}
|
||||
|
||||
bool nsContentUtils::IPCDataTransferItemHasKnownFlavor(
|
||||
const IPCDataTransferItem& aItem) {
|
||||
// Unknown types are converted to kCustomTypesMime.
|
||||
// FIXME(bug 1776879) text/plain is converted to text/unicode still.
|
||||
if (aItem.flavor().EqualsASCII(kCustomTypesMime) ||
|
||||
aItem.flavor().EqualsASCII(kUnicodeMime)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (const char* format : DataTransfer::kKnownFormats) {
|
||||
if (aItem.flavor().EqualsASCII(format)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
nsresult nsContentUtils::IPCTransferableToTransferable(
|
||||
const IPCDataTransfer& aDataTransfer, bool aAddDataFlavor,
|
||||
nsITransferable* aTransferable) {
|
||||
nsITransferable* aTransferable, const bool aFilterUnknownFlavors) {
|
||||
nsresult rv;
|
||||
const nsTArray<IPCDataTransferItem>& items = aDataTransfer.items();
|
||||
for (const auto& item : items) {
|
||||
if (aFilterUnknownFlavors && !IPCDataTransferItemHasKnownFlavor(item)) {
|
||||
NS_WARNING(
|
||||
"Ignoring unknown flavor in "
|
||||
"nsContentUtils::IPCTransferableToTransferable");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (aAddDataFlavor) {
|
||||
aTransferable->AddDataFlavor(item.flavor().get());
|
||||
}
|
||||
@@ -7836,11 +7861,11 @@ nsresult nsContentUtils::IPCTransferableToTransferable(
|
||||
const IPCDataTransfer& aDataTransfer, const bool& aIsPrivateData,
|
||||
nsIPrincipal* aRequestingPrincipal,
|
||||
const nsContentPolicyType& aContentPolicyType, bool aAddDataFlavor,
|
||||
nsITransferable* aTransferable) {
|
||||
nsITransferable* aTransferable, const bool aFilterUnknownFlavors) {
|
||||
aTransferable->SetIsPrivateData(aIsPrivateData);
|
||||
|
||||
nsresult rv = IPCTransferableToTransferable(aDataTransfer, aAddDataFlavor,
|
||||
aTransferable);
|
||||
aTransferable, aFilterUnknownFlavors);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
aTransferable->SetRequestingPrincipal(aRequestingPrincipal);
|
||||
|
||||
Reference in New Issue
Block a user