Здравствуйте все,

скачать файл с сервера можно двояко. Тихо (без окна Download):

Выделить код

Код:

var webBrowserPersist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Ci.nsIWebBrowserPersist);

webBrowserPersist.persistFlags = Ci.nsIWebProgressListener.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
									 Ci.nsIWebProgressListener.PERSIST_FLAGS_BYPASS_CACHE;
webBrowserPersist.progressListener = myDownloadProgressListener; // наш собственный progress listener
webBrowserPersist.saveURI(uri, null, null, null, null, targetUrl);

и с показом окошка Download:

Выделить код

Код:

var webBrowserPersist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Ci.nsIWebBrowserPersist);

// Create download and initiate it:
var xfer = Cc["@mozilla.org/transfer;1"].createInstance(Ci.nsITransfer); 
xfer.init(sourceUri, targetUrl, "Download", null, new Date(), null, webBrowserPersist);

webBrowserPersist.persistFlags = Ci.nsIWebProgressListener.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
									 Ci.nsIWebProgressListener.PERSIST_FLAGS_BYPASS_CACHE;
webBrowserPersist.progressListener = xfer;
webBrowserPersist.saveURI(sourceUri, null, null, null, null, targetUrl);

Беда в том, что во втором случае мы перекрываем себе webBrowserPersist.progressListener, и уже не можем программно выяснить, когда же всё-таки заканчивается скачка файла.

Есть ли здесь какое-то решение?

Могу предложить тупой способ: повесить оверлей на окно закачки.