1 // Gets the size of a file
2 function webdeveloper_getFileSize(url
)
4 var cacheService
= Components
.classes
["@mozilla.org/network/cache-service;1"].getService(Components
.interfaces
.nsICacheService
);
5 var cacheSession
= null;
8 var readAccess
= Components
.interfaces
.nsICache
.ACCESS_READ
;
10 // Try to get the file size from the HTTP cache
13 cacheSession
= cacheService
.createSession("HTTP", 0, true);
14 cacheSession
.doomEntriesIfExpired
= false;
15 file
= cacheSession
.openCacheEntry(url
, readAccess
, false);
20 fileSize
= file
.dataSize
;
25 // Try to get the file size from the FTP cache
28 cacheSession
= cacheService
.createSession("FTP", 0, true);
29 cacheSession
.doomEntriesIfExpired
= false;
30 file
= cacheSession
.openCacheEntry(url
, readAccess
, false);
35 fileSize
= file
.dataSize
;
44 // If the file size could not be retrieved from the cache
47 // Try to download the file
50 var ioService
= Components
.classes
["@mozilla.org/network/io-service;1"].getService(Components
.interfaces
.nsIIOService
);
52 fileSize
= ioService
.newChannelFromURI(ioService
.newURI(url
, null, null)).open().available();
63 // Gets the uncompressed size of a file
64 function webdeveloper_getUncompressedFileSize(url
)
66 var cacheService
= Components
.classes
["@mozilla.org/network/cache-service;1"].getService(Components
.interfaces
.nsICacheService
);
67 var cacheSession
= null;
69 var fileCompressed
= true;
71 var readAccess
= Components
.interfaces
.nsICache
.ACCESS_READ
;
73 // Try to get the file size from the HTTP cache
76 cacheSession
= cacheService
.createSession("HTTP", 0, true);
77 cacheSession
.doomEntriesIfExpired
= false;
78 file
= cacheSession
.openCacheEntry(url
, readAccess
, false);
82 // Try to get the file size from the FTP cache
85 cacheSession
= cacheService
.createSession("FTP", 0, true);
86 cacheSession
.doomEntriesIfExpired
= false;
87 file
= cacheSession
.openCacheEntry(url
, readAccess
, false);
99 var responseHeaders
= null;
101 // Try to get the cache encoding
104 // Specific case-sensitive required
105 encoding
= file
.getMetaDataElement("request-Accept-Encoding");
111 // Try to get the response headers
114 // Specific case-sensitive required
115 responseHeaders
= file
.getMetaDataElement("response-head");
119 responseHeaders
= null;
123 // If the cache is not GZIP encoded
124 if((!encoding
|| encoding
.indexOf("gzip") == -1) && (!responseHeaders
|| responseHeaders
.indexOf("Content-Encoding: gzip") == -1))
126 fileCompressed
= false;
130 // If the file is compressed
133 // Try to download the file
136 var request
= new XMLHttpRequest();
138 request
.open("get", url
, false);
141 fileSize
= request
.responseText
.length
;
152 // Retrieves the source from the given URL
153 function webdeveloper_retrieveSource(url
)
157 // If the URL is not entirely generated
158 if(url
.indexOf("wyciwyg://") != 0)
160 var cacheService
= Components
.classes
["@mozilla.org/network/cache-service;1"].getService(Components
.interfaces
.nsICacheService
);
161 var cacheSession
= null;
163 var readAccess
= Components
.interfaces
.nsICache
.ACCESS_READ
;
165 // Try to get the file size from the HTTP cache
168 cacheSession
= cacheService
.createSession("HTTP", 0, true);
169 cacheSession
.doomEntriesIfExpired
= false;
170 file
= cacheSession
.openCacheEntry(url
, readAccess
, false);
174 // Try to get the file size from the FTP cache
177 cacheSession
= cacheService
.createSession("FTP", 0, true);
178 cacheSession
.doomEntriesIfExpired
= false;
179 file
= cacheSession
.openCacheEntry(url
, readAccess
, false);
187 // If there is a file
191 var responseHeaders
= null;
193 // Try to get the cache encoding
196 // Specific case-sensitive required
197 encoding
= file
.getMetaDataElement("request-Accept-Encoding");
203 // Try to get the response headers
206 // Specific case-sensitive required
207 responseHeaders
= file
.getMetaDataElement("response-head");
211 responseHeaders
= null;
215 // If the cache is not GZIP encoded
216 if((!encoding
|| encoding
.indexOf("gzip") == -1) && (!responseHeaders
|| (responseHeaders
.indexOf("Content-Encoding: deflate") == -1 && responseHeaders
.indexOf("Content-Encoding: gzip") == -1)))
218 var inputStream
= file
.openInputStream(0);
219 var scriptableStream
= Components
.classes
["@mozilla.org/scriptableinputstream;1"].createInstance(Components
.interfaces
.nsIScriptableInputStream
);
221 scriptableStream
.init(inputStream
);
223 source
= scriptableStream
.read(scriptableStream
.available());
225 scriptableStream
.close();
230 // If the source has not been loaded
233 // Try to load the URL
236 var request
= new XMLHttpRequest();
238 request
.open("get", url
, false);
241 source
= request
.responseText
;