Get the MIME type from the image itself. Bug 198339, patch by db48x@yahoo.com

(Daniel Brooks), r=bzbarsky, sr=jag
This commit is contained in:
bzbarsky%mit.edu 2006-09-14 06:06:11 +00:00
Родитель d0c4cbf5c0
Коммит 959e266c0a
1 изменённых файлов: 40 добавлений и 15 удалений

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

@ -229,6 +229,9 @@ const nsIButtonElement = Components.interfaces.nsIDOMHTMLButtonElement
const nsISelectElement = Components.interfaces.nsIDOMHTMLSelectElement const nsISelectElement = Components.interfaces.nsIDOMHTMLSelectElement
const nsITextareaElement = Components.interfaces.nsIDOMHTMLTextAreaElement const nsITextareaElement = Components.interfaces.nsIDOMHTMLTextAreaElement
// Interface for image loading content
const nsIImageLoadingContent = Components.interfaces.nsIImageLoadingContent;
// namespaces, don't need all of these yet... // namespaces, don't need all of these yet...
const XLinkNS = "http://www.w3.org/1999/xlink"; const XLinkNS = "http://www.w3.org/1999/xlink";
const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
@ -862,30 +865,22 @@ function makePreview(row)
} }
} }
// find out the mime type, file size and expiration date // find out the file size and expiration date
var mimeType = gStrings.unknown, httpType;
if (cacheEntryDescriptor) if (cacheEntryDescriptor)
{ {
var headers, match;
pageSize = cacheEntryDescriptor.dataSize; pageSize = cacheEntryDescriptor.dataSize;
kbSize = pageSize / 1024; kbSize = pageSize / 1024;
sizeText = theBundle.getFormattedString("generalSize", [Math.round(kbSize*100)/100, pageSize]); sizeText = theBundle.getFormattedString("generalSize", [Math.round(kbSize*100)/100, pageSize]);
expirationText = formatDate(cacheEntryDescriptor.expirationTime*1000, gStrings.notSet); expirationText = formatDate(cacheEntryDescriptor.expirationTime*1000, gStrings.notSet);
headers = cacheEntryDescriptor.getMetaDataElement("response-head");
match = /^Content-Type:\s*(.*?)\s*(?:\;|$)/mi.exec(headers);
if (match)
httpType = match[1];
} }
if (!(item instanceof nsIInputElement)) var mimeType = ("type" in item && item.type) ||
mimeType = ("type" in item && item.type) || ("codeType" in item && item.codeType) ||
("codeType" in item && item.codeType) || ("contentType" in item && item.contentType) ||
("contentType" in item && item.contentType) || getContentTypeFromImgRequest(item) ||
httpType || gStrings.unknown; getContentTypeFromHeaders(cacheEntryDescrptor) ||
gStrings.unknown;
document.getElementById("imagetypetext").value = mimeType; document.getElementById("imagetypetext").value = mimeType;
document.getElementById("imagesourcetext").value = sourceText; document.getElementById("imagesourcetext").value = sourceText;
@ -941,6 +936,36 @@ function makePreview(row)
imageContainer.appendChild(newImage); imageContainer.appendChild(newImage);
} }
function getContentTypeFromHeaders(cacheEntryDescriptor)
{
var headers, match;
if (cacheEntryDescriptor)
{
headers = cacheEntryDescriptor.getMetaDataElement("response-head");
match = /^Content-Type:\s*(.*?)\s*(?:\;|$)/mi.exec(headers);
return match[1];
}
}
function getContentTypeFromImgRequest(item)
{
var httpRequest;
try
{
var imageItem = item.QueryInterface(nsIImageLoadingContent);
var imageRequest = imageItem.getRequest(nsIImageLoadingContent.CURRENT_REQUEST);
if (imageRequest)
httpRequest = imageRequest.mimeType;
}
catch (ex)
{
// This never happened. ;)
}
return httpRequest;
}
//******** Other Misc Stuff //******** Other Misc Stuff
// Modified from the Links Panel v2.3, http://segment7.net/mozilla/links/links.html // Modified from the Links Panel v2.3, http://segment7.net/mozilla/links/links.html