+++ /dev/null
-// Displays the size of the page
-function webdeveloper_viewDocumentSize()
-{
- var calculatedFileSize = 0;
- var calculatedUncompressedFileSize = 0;
- var countCellDataElement = null;
- var documentCount = 0;
- var documentList = webdeveloper_tidyDocuments(webdeveloper_getDocuments(webdeveloper_getContentWindow())).sort(webdeveloper_sortDocumentsByFileSize);
- var documentLength = documentList.length;
- var documentURL = null;
- var fileSize = 0;
- var image = null;
- var imageLength = null;
- var imageList = new Array();
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var cellDataElement = generatedDocument.createElement("td");
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var headerElement = generatedDocument.createElement("h1");
- var linkElement = generatedDocument.createElement("link");
- var object = null;
- var objectLength = null;
- var objectList = new Array();
- var pageDocument = null;
- var scriptElement = null;
- var scriptLength = null;
- var scriptList = new Array();
- var src = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var styleSheet = null;
- var styleSheetLength = null;
- var styleSheetList = new Array();
- var tableElement = generatedDocument.createElement("table");
- var tableRowElement = generatedDocument.createElement("tr");
- var title = stringBundle.getFormattedString("webdeveloper_viewDocumentSizeTitle", [oldURL]);
- var totalCellDataElement = null;
- var totalFileSize = 0;
- var totalUncompressedFileSize = 0;
- var uncompressedLabel = stringBundle.getString("webdeveloper_uncompressed").toLowerCase();
- var uncompressedFileSize = 0;
-
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- linkElement.setAttribute("href", "chrome://webdeveloper/content/stylesheets/generated/view_document_size.css");
- linkElement.setAttribute("rel", "stylesheet");
- linkElement.setAttribute("type", "text/css");
- headElement.appendChild(linkElement);
-
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- cellDataElement.setAttribute("class", "pivot");
- tableRowElement.appendChild(cellDataElement);
-
- countCellDataElement = generatedDocument.createElement("td");
-
- tableRowElement.appendChild(countCellDataElement);
-
- totalCellDataElement = generatedDocument.createElement("td");
-
- totalCellDataElement.setAttribute("class", "size");
- tableRowElement.appendChild(totalCellDataElement);
- tableRowElement.setAttribute("class", "collapsed");
- tableElement.appendChild(tableRowElement);
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
- documentURL = pageDocument.documentURI;
- imageList = imageList.concat(webdeveloper_getImagesForDocument(pageDocument, true, true));
- objectList = objectList.concat(webdeveloper_getObjectsForDocument(pageDocument));
- scriptList = scriptList.concat(webdeveloper_getScriptsForDocument(pageDocument, false));
- styleSheetList = styleSheetList.concat(webdeveloper_getStyleSheetsForDocument(pageDocument, false, true));
-
- // If the document is not in the image and object lists
- if(!webdeveloper_mediaArrayContains(imageList, documentURL) && !webdeveloper_mediaArrayContains(objectList, documentURL))
- {
- cellDataElement = generatedDocument.createElement("td");
- fileSize = webdeveloper_getFileSize(documentURL);
- linkElement = generatedDocument.createElement("a");
- tableRowElement = generatedDocument.createElement("tr");
- uncompressedFileSize = webdeveloper_getUncompressedFileSize(documentURL);
-
- documentCount++;
-
- // If the file size is set
- if(fileSize)
- {
- calculatedFileSize += fileSize;
- }
-
- // If the uncompressed file size is set and different from the file size
- if(uncompressedFileSize && uncompressedFileSize != fileSize)
- {
- calculatedUncompressedFileSize += uncompressedFileSize;
- }
- else
- {
- calculatedUncompressedFileSize += fileSize;
- }
-
- // If this is an even row
- if(i % 2 == 0)
- {
- tableRowElement.setAttribute("class", "hidden shaded");
- }
- else
- {
- tableRowElement.setAttribute("class", "hidden");
- }
-
- cellDataElement.setAttribute("class", "indent");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- linkElement.setAttribute("href", documentURL);
- linkElement.appendChild(generatedDocument.createTextNode(documentURL));
- cellDataElement.appendChild(linkElement);
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.setAttribute("class", "size");
-
- // If the uncompressed file size is set and different from the file size
- if(uncompressedFileSize && uncompressedFileSize != fileSize)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize) + " (" + webdeveloper_formatFileSize(uncompressedFileSize) + " " + uncompressedLabel + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize)));
- }
-
- tableRowElement.appendChild(cellDataElement);
- tableElement.appendChild(tableRowElement);
- }
- }
-
- // If there is one document
- if(documentCount == 1)
- {
- countCellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_documents") + " (" + documentCount + " " + stringBundle.getString("webdeveloper_file").toLowerCase() + ")"));
- }
- else
- {
- countCellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_documents") + " (" + documentCount + " " + stringBundle.getString("webdeveloper_files").toLowerCase() + ")"));
- }
-
- // If the calculated file size and calculated uncompressed file size are set and different
- if(calculatedFileSize && calculatedUncompressedFileSize && calculatedFileSize != calculatedUncompressedFileSize)
- {
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize) + " (" + webdeveloper_formatFileSize(calculatedUncompressedFileSize) + " " + uncompressedLabel + ")"));
- }
- else
- {
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize)));
- }
-
- totalFileSize += calculatedFileSize;
- totalUncompressedFileSize += calculatedUncompressedFileSize;
-
- calculatedFileSize = 0;
- cellDataElement = generatedDocument.createElement("td");
- imageList = webdeveloper_setImageFileSizes(webdeveloper_tidyImages(imageList)).sort(webdeveloper_sortImagesByFileSize);
- imageLength = imageList.length;
- tableRowElement = generatedDocument.createElement("tr");
-
- cellDataElement.setAttribute("class", "pivot");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- // If there is one image
- if(imageLength == 1)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_images") + " (" + imageLength + " " + stringBundle.getString("webdeveloper_file").toLowerCase() + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_images") + " (" + imageLength + " " + stringBundle.getString("webdeveloper_files").toLowerCase() + ")"));
- }
-
- tableRowElement.appendChild(cellDataElement);
-
- totalCellDataElement = generatedDocument.createElement("td");
-
- totalCellDataElement.setAttribute("class", "size");
- tableRowElement.appendChild(totalCellDataElement);
- tableRowElement.setAttribute("class", "collapsed");
- tableElement.appendChild(tableRowElement);
-
- // Loop through the images
- for(i = 0; i < imageLength; i++)
- {
- cellDataElement = generatedDocument.createElement("td");
- image = imageList[i];
- linkElement = generatedDocument.createElement("a");
- src = image.src;
- fileSize = image.fileSize;
- tableRowElement = generatedDocument.createElement("tr");
-
- // If the file size is set
- if(fileSize)
- {
- calculatedFileSize += fileSize;
- }
-
- // If this is an even row
- if(i % 2 == 0)
- {
- tableRowElement.setAttribute("class", "hidden shaded");
- }
- else
- {
- tableRowElement.setAttribute("class", "hidden");
- }
-
- cellDataElement.setAttribute("class", "indent");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- linkElement.setAttribute("href", src);
- linkElement.appendChild(generatedDocument.createTextNode(src));
- cellDataElement.appendChild(linkElement);
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.setAttribute("class", "size");
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize)));
- tableRowElement.appendChild(cellDataElement);
- tableElement.appendChild(tableRowElement);
- }
-
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize)));
-
- totalFileSize += calculatedFileSize;
- totalUncompressedFileSize += calculatedFileSize;
-
- calculatedFileSize = 0;
- cellDataElement = generatedDocument.createElement("td");
- objectList = webdeveloper_setScriptFileSizes(webdeveloper_tidyScripts(objectList)).sort(webdeveloper_sortScriptsByFileSize);
- objectLength = objectList.length;
- tableRowElement = generatedDocument.createElement("tr");
-
- cellDataElement.setAttribute("class", "pivot");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- // If there is one object
- if(objectLength == 1)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_objects") + " (" + objectLength + " " + stringBundle.getString("webdeveloper_file").toLowerCase() + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_objects") + " (" + objectLength + " " + stringBundle.getString("webdeveloper_files").toLowerCase() + ")"));
- }
-
- tableRowElement.appendChild(cellDataElement);
-
- totalCellDataElement = generatedDocument.createElement("td");
-
- totalCellDataElement.setAttribute("class", "size");
- tableRowElement.appendChild(totalCellDataElement);
- tableRowElement.setAttribute("class", "collapsed");
- tableElement.appendChild(tableRowElement);
-
- // Loop through the objects
- for(i = 0; i < objectLength; i++)
- {
- cellDataElement = generatedDocument.createElement("td");
- linkElement = generatedDocument.createElement("a");
- object = objectList[i];
- src = object.src;
- fileSize = object.fileSize;
- tableRowElement = generatedDocument.createElement("tr");
-
- // If the file size is set
- if(fileSize)
- {
- calculatedFileSize += fileSize;
- }
-
- // If this is an even row
- if(i % 2 == 0)
- {
- tableRowElement.setAttribute("class", "hidden shaded");
- }
- else
- {
- tableRowElement.setAttribute("class", "hidden");
- }
-
- cellDataElement.setAttribute("class", "indent");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- linkElement.setAttribute("href", src);
- linkElement.appendChild(generatedDocument.createTextNode(src));
- cellDataElement.appendChild(linkElement);
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.setAttribute("class", "size");
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize)));
- tableRowElement.appendChild(cellDataElement);
- tableElement.appendChild(tableRowElement);
- }
-
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize)));
-
- totalFileSize += calculatedFileSize;
- totalUncompressedFileSize += calculatedFileSize;
-
- calculatedFileSize = 0;
- calculatedUncompressedFileSize = 0;
- cellDataElement = generatedDocument.createElement("td");
- scriptList = webdeveloper_setScriptFileSizes(webdeveloper_tidyScripts(scriptList)).sort(webdeveloper_sortScriptsByFileSize);
- scriptLength = scriptList.length;
- tableRowElement = generatedDocument.createElement("tr");
-
- cellDataElement.setAttribute("class", "pivot");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- // If there is one script
- if(scriptLength == 1)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_scripts") + " (" + scriptLength + " " + stringBundle.getString("webdeveloper_file").toLowerCase() + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_scripts") + " (" + scriptLength + " " + stringBundle.getString("webdeveloper_files").toLowerCase() + ")"));
- }
-
- tableRowElement.appendChild(cellDataElement);
-
- totalCellDataElement = generatedDocument.createElement("td");
-
- totalCellDataElement.setAttribute("class", "size");
- tableRowElement.appendChild(totalCellDataElement);
- tableRowElement.setAttribute("class", "collapsed");
- tableElement.appendChild(tableRowElement);
-
- // Loop through the scripts
- for(i = 0; i < scriptLength; i++)
- {
- cellDataElement = generatedDocument.createElement("td");
- linkElement = generatedDocument.createElement("a");
- scriptElement = scriptList[i];
- src = scriptElement.src;
- fileSize = scriptElement.fileSize;
- tableRowElement = generatedDocument.createElement("tr");
- uncompressedFileSize = scriptElement.uncompressedFileSize;
-
- // If the file size is set
- if(fileSize)
- {
- calculatedFileSize += fileSize;
- }
-
- // If the uncompressed file size is set and different from the file size
- if(uncompressedFileSize && uncompressedFileSize != fileSize)
- {
- calculatedUncompressedFileSize += uncompressedFileSize;
- }
- else
- {
- calculatedUncompressedFileSize += fileSize;
- }
-
- // If this is an even row
- if(i % 2 == 0)
- {
- tableRowElement.setAttribute("class", "hidden shaded");
- }
- else
- {
- tableRowElement.setAttribute("class", "hidden");
- }
-
- cellDataElement.setAttribute("class", "indent");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- linkElement.setAttribute("href", src);
- linkElement.appendChild(generatedDocument.createTextNode(src));
- cellDataElement.appendChild(linkElement);
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.setAttribute("class", "size");
-
- // If the uncompressed file size is set and different from the file size
- if(uncompressedFileSize && uncompressedFileSize != fileSize)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize) + " (" + webdeveloper_formatFileSize(uncompressedFileSize) + " " + uncompressedLabel + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize)));
- }
-
- tableRowElement.appendChild(cellDataElement);
- tableElement.appendChild(tableRowElement);
- }
-
- // If the calculated file size and calculated uncompressed file size are set and different
- if(calculatedFileSize && calculatedUncompressedFileSize && calculatedFileSize != calculatedUncompressedFileSize)
- {
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize) + " (" + webdeveloper_formatFileSize(calculatedUncompressedFileSize) + " " + uncompressedLabel + ")"));
- }
- else
- {
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize)));
- }
-
- totalFileSize += calculatedFileSize;
- totalUncompressedFileSize += calculatedUncompressedFileSize;
-
- calculatedFileSize = 0;
- calculatedUncompressedFileSize = 0;
- cellDataElement = generatedDocument.createElement("td");
- styleSheetList = webdeveloper_setStyleSheetFileSizes(webdeveloper_tidyStyleSheets(styleSheetList)).sort(webdeveloper_sortStyleSheetsByFileSize);
- styleSheetLength = styleSheetList.length;
- tableRowElement = generatedDocument.createElement("tr");
-
- cellDataElement.setAttribute("class", "pivot");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- // If there is one style sheet
- if(styleSheetLength == 1)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_styleSheets") + " (" + styleSheetLength + " " + stringBundle.getString("webdeveloper_file").toLowerCase() + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_styleSheets") + " (" + styleSheetLength + " " + stringBundle.getString("webdeveloper_files").toLowerCase() + ")"));
- }
-
- tableRowElement.appendChild(cellDataElement);
-
- totalCellDataElement = generatedDocument.createElement("td");
-
- totalCellDataElement.setAttribute("class", "size");
- tableRowElement.appendChild(totalCellDataElement);
- tableRowElement.setAttribute("class", "collapsed");
- tableElement.appendChild(tableRowElement);
-
- // Loop through the style sheets
- for(i = 0; i < styleSheetLength; i++)
- {
- cellDataElement = generatedDocument.createElement("td");
- linkElement = generatedDocument.createElement("a");
- styleSheet = styleSheetList[i];
- src = styleSheet.href;
- fileSize = styleSheet.fileSize;
- tableRowElement = generatedDocument.createElement("tr");
- uncompressedFileSize = styleSheet.uncompressedFileSize;
-
- // If the file size is set
- if(fileSize)
- {
- calculatedFileSize += fileSize;
- }
-
- // If the uncompressed file size is set and different from the file size
- if(uncompressedFileSize && uncompressedFileSize != fileSize)
- {
- calculatedUncompressedFileSize += uncompressedFileSize;
- }
- else
- {
- calculatedUncompressedFileSize += fileSize;
- }
-
- // If this is an even row
- if(i % 2 == 0)
- {
- tableRowElement.setAttribute("class", "hidden shaded");
- }
- else
- {
- tableRowElement.setAttribute("class", "hidden");
- }
-
- cellDataElement.setAttribute("class", "indent");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- linkElement.setAttribute("href", src);
- linkElement.appendChild(generatedDocument.createTextNode(src));
- cellDataElement.appendChild(linkElement);
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.setAttribute("class", "size");
-
- // If the uncompressed file size is set and different from the file size
- if(uncompressedFileSize && uncompressedFileSize != fileSize)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize) + " (" + webdeveloper_formatFileSize(uncompressedFileSize) + " " + uncompressedLabel + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(fileSize)));
- }
-
- tableRowElement.appendChild(cellDataElement);
- tableElement.appendChild(tableRowElement);
- }
-
- // If the calculated file size and calculated uncompressed file size are set and different
- if(calculatedFileSize && calculatedUncompressedFileSize && calculatedFileSize != calculatedUncompressedFileSize)
- {
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize) + " (" + webdeveloper_formatFileSize(calculatedUncompressedFileSize) + " " + uncompressedLabel + ")"));
- }
- else
- {
- totalCellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(calculatedFileSize)));
- }
-
- totalFileSize += calculatedFileSize;
- totalUncompressedFileSize += calculatedUncompressedFileSize;
-
- cellDataElement = generatedDocument.createElement("td");
- tableRowElement = generatedDocument.createElement("tr");
-
- cellDataElement.setAttribute("class", "total-indent");
- tableRowElement.setAttribute("class", "total");
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_total")));
- tableRowElement.appendChild(cellDataElement);
-
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.setAttribute("class", "size");
-
- // If the total file size and total uncompressed file size are set and different
- if(totalFileSize && totalUncompressedFileSize && totalFileSize != totalUncompressedFileSize)
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(totalFileSize) + " (" + webdeveloper_formatFileSize(totalUncompressedFileSize) + " " + uncompressedLabel + ")"));
- }
- else
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(webdeveloper_formatFileSize(totalFileSize)));
- }
-
- tableRowElement.appendChild(cellDataElement);
- tableElement.appendChild(tableRowElement);
- bodyElement.appendChild(tableElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/table_pivot.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}