| Index: chrome/content/crawler.js | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/chrome/content/crawler.js | 
| @@ -0,0 +1,62 @@ | 
| +/* | 
| + * This Source Code is subject to the terms of the Mozilla Public License | 
| + * version 2.0 (the "License"). You can obtain a copy of the License at | 
| + * http://mozilla.org/MPL/2.0/. | 
| + */ | 
| + | 
| 
 
Wladimir Palant
2012/09/21 15:36:18
Site-note: I don't think that this manual UI will
 
 | 
| +const Cu = Components.utils; | 
| + | 
| +Cu.import("resource://gre/modules/Services.jsm"); | 
| + | 
| +let crawling = false; | 
| + | 
| +function require(module) | 
| +{ | 
| + let result = {}; | 
| + result.wrappedJSObject = result; | 
| + Services.obs.notifyObservers(result, "abpcrawler-require", module); | 
| + return result.exports; | 
| +} | 
| + | 
| +let {Crawler} = require("crawler"); | 
| + | 
| +function onUnload() | 
| +{ | 
| + const fields = ["backend-url", "parallel-tabs"]; | 
| + fields.forEach(function(field) | 
| + { | 
| + let control = document.getElementById(field); | 
| + control.setAttribute("value", control.value); | 
| 
 
Wladimir Palant
2012/09/21 15:36:18
Are you trying to make the field values persist? U
 
 | 
| + }); | 
| +} | 
| + | 
| +function onClose() | 
| +{ | 
| + return !crawling; | 
| 
 
Wladimir Palant
2012/09/21 15:36:18
Maybe show a message why the window cannot be clos
 
 | 
| +} | 
| + | 
| +function getBackendUrl() | 
| +{ | 
| + let backendUrlTextBox = document.getElementById("backend-url"); | 
| + return backendUrlTextBox.value; | 
| +} | 
| + | 
| +function getParallelTabs() | 
| +{ | 
| + let parallelTabsTextBox = document.getElementById("parallel-tabs"); | 
| + return parseInt(parallelTabsTextBox.value); | 
| +} | 
| + | 
| +function onAccept() | 
| +{ | 
| + let backendUrl = getBackendUrl(); | 
| + let parallelTabs = getParallelTabs(); | 
| + let dialog = document.getElementById("abpcrawler-crawler"); | 
| 
 
Wladimir Palant
2012/09/21 15:36:18
How about using document.documentElement here?
 
 | 
| + let acceptButton = dialog.getButton("accept"); | 
| + crawling = acceptButton.disabled = true; | 
| + Crawler.crawl(backendUrl, parallelTabs, window.opener, function() | 
| 
 
Wladimir Palant
2012/09/21 15:36:18
Of course we could have the condition that window.
 
 | 
| + { | 
| + crawling = acceptButton.disabled = false; | 
| + }); | 
| + return false; | 
| +} |