author | Michael Layzell <michael@thelayzells.com> |
Thu, 13 Oct 2016 14:33:04 -0400 | |
changeset 317920 | f799fa3ce5dcda8706169e24aeceabe97a36a917 |
parent 317919 | 4e664a1bdebd63417b0f75d0dac38a3e04ff063c |
child 317921 | b10e48ea5d2066097c55fe287264819cbbc25d0b |
push id | 33170 |
push user | cbook@mozilla.com |
push date | Fri, 14 Oct 2016 10:37:07 +0000 |
treeherder | autoland@0d101ebfd95c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | enndeakin |
bugs | 1309645 |
milestone | 52.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/events/DataTransfer.cpp +++ b/dom/events/DataTransfer.cpp @@ -1298,23 +1298,16 @@ DataTransfer::CacheExternalData(const ch item = mItems->SetDataWithPrincipal(format, nullptr, aIndex, aPrincipal, false, aHidden, rv); if (NS_WARN_IF(rv.Failed())) { return rv.StealNSResult(); } return NS_OK; } -// there isn't a way to get a list of the formats that might be available on -// all platforms, so just check for the types that can actually be imported -// XXXndeakin there are some other formats but those are platform specific. -const char* kFormats[] = { kFileMime, kHTMLMime, kURLMime, kURLDataMime, - kUnicodeMime, kPNGImageMime, kJPEGImageMime, - kGIFImageMime }; - void DataTransfer::CacheExternalDragFormats() { // Called during the constructor to cache the formats available from an // external drag. The data associated with each format will be set to null. // This data will instead only be retrieved in FillInExternalDragData when // asked for, as it may be time consuming for the source application to // generate it. @@ -1327,18 +1320,19 @@ DataTransfer::CacheExternalDragFormats() // make sure that the system principal is used for external drags nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager(); nsCOMPtr<nsIPrincipal> sysPrincipal; ssm->GetSystemPrincipal(getter_AddRefs(sysPrincipal)); // there isn't a way to get a list of the formats that might be available on // all platforms, so just check for the types that can actually be imported // XXXndeakin there are some other formats but those are platform specific. - const char* formats[] = { kFileMime, kHTMLMime, kRTFMime, - kURLMime, kURLDataMime, kUnicodeMime }; + // NOTE: kFileMime must have index 0 + const char* formats[] = { kFileMime, kHTMLMime, kURLMime, kURLDataMime, + kUnicodeMime, kPNGImageMime }; uint32_t count; dragSession->GetNumDropItems(&count); for (uint32_t c = 0; c < count; c++) { bool hasFileData = false; dragSession->IsDataFlavorSupported(kFileMime, &hasFileData); // First, check for the special format that holds custom types. @@ -1349,21 +1343,21 @@ DataTransfer::CacheExternalDragFormats() } for (uint32_t f = 0; f < ArrayLength(formats); f++) { // IsDataFlavorSupported doesn't take an index as an argument and just // checks if any of the items support a particular flavor, even though // the GetData method does take an index. Here, we just assume that // every item being dragged has the same set of flavors. bool supported; - dragSession->IsDataFlavorSupported(kFormats[f], &supported); + dragSession->IsDataFlavorSupported(formats[f], &supported); // if the format is supported, add an item to the array with null as // the data. When retrieved, GetRealData will read the data. if (supported) { - CacheExternalData(kFormats[f], c, sysPrincipal, /* hidden = */ f && hasFileData); + CacheExternalData(formats[f], c, sysPrincipal, /* hidden = */ f && hasFileData); } } } } void DataTransfer::CacheExternalClipboardFormats() { @@ -1386,20 +1380,19 @@ DataTransfer::CacheExternalClipboardForm // Check if the clipboard has any files bool hasFileData = false; const char *fileMime[] = { kFileMime }; clipboard->HasDataMatchingFlavors(fileMime, 1, mClipboardType, &hasFileData); // there isn't a way to get a list of the formats that might be available on // all platforms, so just check for the types that can actually be imported. - // Note that the loop below assumes that kCustomTypesMime will be first. + // NOTE: kCustomTypesMime must have index 0, kFileMime index 1 const char* formats[] = { kCustomTypesMime, kFileMime, kHTMLMime, kRTFMime, - kURLMime, kURLDataMime, kUnicodeMime, kPNGImageMime, - kJPEGImageMime, kGIFImageMime }; + kURLMime, kURLDataMime, kUnicodeMime, kPNGImageMime }; for (uint32_t f = 0; f < mozilla::ArrayLength(formats); ++f) { // check each format one at a time bool supported; clipboard->HasDataMatchingFlavors(&(formats[f]), 1, mClipboardType, &supported); // if the format is supported, add an item to the array with null as // the data. When retrieved, GetRealData will read the data.