| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2  * This Source Code is subject to the terms of the Mozilla Public License | 
|  | 3  * version 2.0 (the "License"). You can obtain a copy of the License at | 
|  | 4  * http://mozilla.org/MPL/2.0/. | 
|  | 5  */ | 
|  | 6 | 
|  | 7 /** | 
|  | 8  * @module main | 
|  | 9  */ | 
|  | 10 | 
|  | 11 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); | 
|  | 12 Cu.import("resource://gre/modules/Services.jsm"); | 
|  | 13 Cu.import("resource://gre/modules/Promise.jsm"); | 
|  | 14 | 
|  | 15 require("commandLine"); | 
|  | 16 let {run} = require("crawler"); | 
|  | 17 let {reportException} = require("debug"); | 
|  | 18 | 
|  | 19 let baseURL = null; | 
|  | 20 | 
|  | 21 /** | 
|  | 22  * Waits for the application to initialize. | 
|  | 23  * @type {Promise} | 
|  | 24  */ | 
|  | 25 let applicationReady = (function() | 
|  | 26 { | 
|  | 27   return new Promise((resolve, reject) => | 
|  | 28   { | 
|  | 29     let observer = { | 
|  | 30       observe: function(subject, topic, data) | 
|  | 31       { | 
|  | 32         Services.obs.removeObserver(this, "sessionstore-windows-restored"); | 
|  | 33         resolve(); | 
|  | 34       }, | 
|  | 35       QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakR
    eference]) | 
|  | 36     }; | 
|  | 37 | 
|  | 38     Services.obs.addObserver(observer, "sessionstore-windows-restored", true); | 
|  | 39     onShutdown.add(() => Services.obs.removeObserver(observer, "sessionstore-win
    dows-restored")); | 
|  | 40   }); | 
|  | 41 })(); | 
|  | 42 | 
|  | 43 /** | 
|  | 44  * Startup function, called from command line handler. | 
|  | 45  * | 
|  | 46  * @param {int} port  Port to communicate with | 
|  | 47  */ | 
|  | 48 function startup(port) | 
|  | 49 { | 
|  | 50   baseURL = "http://localhost:" + port + "/"; | 
|  | 51 | 
|  | 52   let request = new XMLHttpRequest(); | 
|  | 53   request.open("GET", baseURL + "parameters"); | 
|  | 54   request.addEventListener("load", onParametersLoaded, false); | 
|  | 55   request.addEventListener("error", onParametersFailed, false); | 
|  | 56   request.responseType = "json"; | 
|  | 57   request.send(); | 
|  | 58 } | 
|  | 59 exports.startup = startup; | 
|  | 60 | 
|  | 61 /** | 
|  | 62  * Called if parameters loaded succesfully. | 
|  | 63  * | 
|  | 64  * @param {Event} event | 
|  | 65  */ | 
|  | 66 function onParametersLoaded(event) | 
|  | 67 { | 
|  | 68   let {urls, timeout, maxtabs} = event.target.response; | 
|  | 69 | 
|  | 70   applicationReady.then(function() | 
|  | 71   { | 
|  | 72     let window = Services.wm.getMostRecentWindow("navigator:browser"); | 
|  | 73     run(window, urls, timeout, maxtabs, baseURL + "save", function() | 
|  | 74     { | 
|  | 75       Services.startup.quit(Services.startup.eAttemptQuit); | 
|  | 76     }); | 
|  | 77   }, reportException); | 
|  | 78 } | 
|  | 79 | 
|  | 80 /** | 
|  | 81  * Called if requesting parameters failed. | 
|  | 82  * | 
|  | 83  * @param {Event} event | 
|  | 84  */ | 
|  | 85 function onParametersFailed(event) | 
|  | 86 { | 
|  | 87   reportException(new Error("Failed loading parameters")); | 
|  | 88 } | 
| OLD | NEW | 
|---|