| Left: | ||
| Right: |
| 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 | |
|
saroyanm
2015/05/04 18:13:43
I think this should be file overview, maybe smth l
Wladimir Palant
2015/05/07 00:04:59
As Sebastian noted elsewhere, @module is actually
| |
| 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 | |
| 18 let baseURL = null; | |
| 19 | |
| 20 /** | |
| 21 * Waits for the application to initialize. | |
| 22 * @type {Promise} | |
| 23 */ | |
| 24 let applicationReady = (function() | |
| 25 { | |
| 26 let deferred = Promise.defer(); | |
|
saroyanm
2015/05/04 18:13:43
As mentioned in crawler.js please also don't use D
Wladimir Palant
2015/05/07 00:04:59
Done.
| |
| 27 | |
| 28 let observer = { | |
| 29 observe: function(subject, topic, data) | |
| 30 { | |
| 31 Services.obs.removeObserver(this, "sessionstore-windows-restored"); | |
| 32 deferred.resolve(); | |
| 33 }, | |
| 34 QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakRef erence]) | |
| 35 }; | |
| 36 | |
| 37 Services.obs.addObserver(observer, "sessionstore-windows-restored", true); | |
| 38 onShutdown.add(() => Services.obs.removeObserver(observer, "sessionstore-windo ws-restored")); | |
| 39 | |
| 40 return deferred.promise; | |
| 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 }, function(exception) | |
| 78 { | |
| 79 Cu.reportError(exception); | |
| 80 dump(exception + "\n") | |
| 81 }); | |
| 82 } | |
| 83 | |
| 84 /** | |
| 85 * Called if requesting parameters failed. | |
| 86 * | |
| 87 * @param {Event} event | |
| 88 */ | |
| 89 function onParametersFailed(event) | |
| 90 { | |
| 91 Cu.reportError("Failed loading parameters"); | |
|
saroyanm
2015/05/04 18:13:43
Maybe also make sense to print the message in the
Wladimir Palant
2015/05/07 00:04:59
Done.
| |
| 92 } | |
| OLD | NEW |