B2G/gecko/toolkit/mozapps/downloads/tests/chrome/utils.js
/**
 * Adds a live download to the download manager.
 *
 * @param [optional] aName
 *        The name that will be assigned to the downloaded file.
 * @returns an instance of nsIDownload.
 */
Adds a live download to the download manager.
@param [optional] aName
The name that will be assigned to the downloaded file.
@returns an instance of nsIDownload.
Adds a live download to the download manager . @param [ optional ] aName The name that will be assigned to the downloaded file . @returns an instance of nsIDownload .
function addDownload(aName) {
    function createURI(aObj) {
      let ios = Cc["@mozilla.org/network/io-service;1"].
                getService(Ci.nsIIOService);
      return (aObj instanceof Ci.nsIFile) ? ios.newFileURI(aObj) :
                                            ios.newURI(aObj, null, null);
    }
    function randomString() {
      let chars = "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
      let string_length = 8;
      let randomstring = "";
      for (let i=0; i<string_length; i++) {
        let rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum, rnum+1);
      }
      return randomstring;
    }
    let dm = Cc["@mozilla.org/download-manager;1"].
             getService(Ci.nsIDownloadManager);
    const nsIWBP = Ci.nsIWebBrowserPersist;
    let persist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
                  .createInstance(Ci.nsIWebBrowserPersist);
    persist.persistFlags = nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
                           nsIWBP.PERSIST_FLAGS_BYPASS_CACHE |
                           nsIWBP.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION;
    let dirSvc = Cc["@mozilla.org/file/directory_service;1"].
                 getService(Ci.nsIProperties);
    let dmFile = dirSvc.get("TmpD", Ci.nsIFile);
    dmFile.append(aName || ("dm-test-file-" + randomString()));
    if (dmFile.exists())
      throw "Download file already exists";
    let dl = dm.addDownload(Ci.nsIDownloadManager.DOWNLOAD_TYPE_DOWNLOAD,
                            createURI("http://example.com/httpd.js"),
                            createURI(dmFile), null, null,
                            Math.round(Date.now() * 1000), null, persist, false);
    let privacyContext = window.QueryInterface(Ci.nsIInterfaceRequestor)
                               .getInterface(Ci.nsIWebNavigation)
                               .QueryInterface(Ci.nsILoadContext);
    persist.progressListener = dl.QueryInterface(Ci.nsIWebProgressListener);
    persist.saveURI(dl.source, null, null, null, null, dl.targetFile, privacyContext);
    return dl;
  }
function addDownload ( aName ) { function createURI ( aObj ) { let ios = Cc [ "@mozilla.org/network/io-service;1" ] . getService ( Ci . nsIIOService ) ; return ( aObj instanceof Ci . nsIFile ) ? ios . newFileURI ( aObj ) : ios . newURI ( aObj , null , null ) ; } function randomString ( ) { let chars = "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz" ; let string_length = 8 ; let randomstring = "" ; for ( let i = 0 ; i < string_length ; i ++ ) { let rnum = Math . floor ( Math . random ( ) * chars . length ) ; randomstring += chars . substring ( rnum , rnum + 1 ) ; } return randomstring ; } let dm = Cc [ "@mozilla.org/download-manager;1" ] . getService ( Ci . nsIDownloadManager ) ; const nsIWBP = Ci . nsIWebBrowserPersist ; let persist = Cc [ "@mozilla.org/embedding/browser/nsWebBrowserPersist;1" ] . createInstance ( Ci . nsIWebBrowserPersist ) ; persist . persistFlags = nsIWBP . PERSIST_FLAGS_REPLACE_EXISTING_FILES | nsIWBP . PERSIST_FLAGS_BYPASS_CACHE | nsIWBP . PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION ; let dirSvc = Cc [ "@mozilla.org/file/directory_service;1" ] . getService ( Ci . nsIProperties ) ; let dmFile = dirSvc . get ( "TmpD" , Ci . nsIFile ) ; dmFile . append ( aName || ( "dm-test-file-" + randomString ( ) ) ) ; if ( dmFile . exists ( ) ) throw "Download file already exists" ; let dl = dm . addDownload ( Ci . nsIDownloadManager . DOWNLOAD_TYPE_DOWNLOAD , createURI ( "http://example.com/httpd.js" ) , createURI ( dmFile ) , null , null , Math . round ( Date . now ( ) * 1000 ) , null , persist , false ) ; let privacyContext = window . QueryInterface ( Ci . nsIInterfaceRequestor ) . getInterface ( Ci . nsIWebNavigation ) . QueryInterface ( Ci . nsILoadContext ) ; persist . progressListener = dl . QueryInterface ( Ci . nsIWebProgressListener ) ; persist . saveURI ( dl . source , null , null , null , null , dl . targetFile , privacyContext ) ; return dl ; }
Adds a live download to the download manager.
Adds a live download to the download manager .