diff --git a/suite/browser/metadata.js b/suite/browser/metadata.js index 5f9bd2812e23..ea89da3eba9e 100644 --- a/suite/browser/metadata.js +++ b/suite/browser/metadata.js @@ -55,6 +55,15 @@ var onTable = false; var onTitle = false; var onLang = false; +const nsICacheService = Components.interfaces.nsICacheService; +const cacheService = Components.classes["@mozilla.org/network/cache-service;1"] + .getService(nsICacheService); +var httpCacheSession = cacheService.createSession("HTTP", 0, true); +httpCacheSession.doomEntriesIfExpired = false; +var ftpCacheSession = cacheService.createSession("FTP", 0, true); +ftpCacheSession.doomEntriesIfExpired = false; + + function onLoad() { gMetadataBundle = document.getElementById("bundle_metadata"); @@ -167,15 +176,22 @@ function checkForImage(elem, htmllocalname) if (img) { setInfo("image-url", img.src); + + var size = getSize(img.src); + if (size != -1) { + var kbSize = size / 1024; + kbSize = Math.round(kbSize*100)/100; + setInfo("image-filesize", gMetadataBundle.getFormattedString("imageSize", [kbSize, size])); + } if ("width" in img) { setInfo("image-width", img.width); setInfo("image-height", img.height); } - else { - setInfo("image-width", ""); - setInfo("image-height", ""); - } - + else { + setInfo("image-width", ""); + setInfo("image-height", ""); + } + if (imgType == "img") { setInfo("image-desc", getAbsoluteURL(img.longDesc, img)); } else { @@ -531,3 +547,22 @@ function convertLanguageCode(abbr) return result; } + +// Returns the size of the URL in bytes; must be cached and therefore an HTTP or FTP URL +function getSize(url) { + try + { + var cacheEntryDescriptor = httpCacheSession.openCacheEntry(url, Components.interfaces.nsICache.ACCESS_READ, false); + if(cacheEntryDescriptor) + return cacheEntryDescriptor.dataSize; + } + catch(ex) {} + try + { + cacheEntryDescriptor = ftpCacheSession.openCacheEntry(url, Components.interfaces.nsICache.ACCESS_READ, false); + if (cacheEntryDescriptor) + return cacheEntryDescriptor.dataSize; + } + catch(ex) {} + return -1; +} diff --git a/suite/browser/metadata.xul b/suite/browser/metadata.xul index da522825c9de..2dc2142eb325 100644 --- a/suite/browser/metadata.xul +++ b/suite/browser/metadata.xul @@ -137,6 +137,10 @@ + + diff --git a/suite/locales/en-US/chrome/browser/metadata.dtd b/suite/locales/en-US/chrome/browser/metadata.dtd index bef3883fc1bb..065807fb0290 100644 --- a/suite/locales/en-US/chrome/browser/metadata.dtd +++ b/suite/locales/en-US/chrome/browser/metadata.dtd @@ -7,6 +7,8 @@ + + diff --git a/suite/locales/en-US/chrome/browser/metadata.properties b/suite/locales/en-US/chrome/browser/metadata.properties index 0faf5ea3642d..cc8c4b0cdcb5 100644 --- a/suite/locales/en-US/chrome/browser/metadata.properties +++ b/suite/locales/en-US/chrome/browser/metadata.properties @@ -4,3 +4,5 @@ parentFrameText=Parent frame sameFrameText=Same frame embeddedText=Embedded unableToShowProps=No properties available. + +imageSize=%S KB (%S bytes)