 Issue 8402021:
  Crawler frontend  (Closed)
    
  
    Issue 8402021:
  Crawler frontend  (Closed) 
  | Left: | ||
| Right: | 
| LEFT | RIGHT | 
|---|---|
| 1 /* | 1 /* | 
| 2 * This Source Code is subject to the terms of the Mozilla Public License | 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 | 3 * version 2.0 (the "License"). You can obtain a copy of the License at | 
| 4 * http://mozilla.org/MPL/2.0/. | 4 * http://mozilla.org/MPL/2.0/. | 
| 5 */ | 5 */ | 
| 6 | 6 | 
| 
Wladimir Palant
2012/09/21 15:36:18
Site-note: I don't think that this manual UI will
 | |
| 7 const Cu = Components.utils; | 7 const Cu = Components.utils; | 
| 8 | 8 | 
| 9 Cu.import("resource://gre/modules/Services.jsm"); | 9 Cu.import("resource://gre/modules/Services.jsm"); | 
| 10 | 10 | 
| 11 let crawling = false; | 11 let crawling = false; | 
| 12 | 12 | 
| 13 function require(module) | 13 function require(module) | 
| 14 { | 14 { | 
| 15 let result = {}; | 15 let result = {}; | 
| 16 result.wrappedJSObject = result; | 16 result.wrappedJSObject = result; | 
| 17 Services.obs.notifyObservers(result, "abpcrawler-require", module); | 17 Services.obs.notifyObservers(result, "abpcrawler-require", module); | 
| 18 return result.exports; | 18 return result.exports; | 
| 19 } | 19 } | 
| 20 | 20 | 
| 21 let {Crawler} = require("crawler"); | 21 let {Crawler} = require("crawler"); | 
| 22 | 22 | 
| 23 function onUnload() | 23 function onUnload() | 
| 24 { | 24 { | 
| 25 const fields = ["backend-url", "parallel-tabs"]; | 25 const fields = ["backend-url", "parallel-tabs"]; | 
| 26 fields.forEach(function(field) | 26 fields.forEach(function(field) | 
| 27 { | 27 { | 
| 28 let control = document.getElementById(field); | 28 let control = document.getElementById(field); | 
| 29 control.setAttribute("value", control.value); | 29 control.setAttribute("value", control.value); | 
| 
Wladimir Palant
2012/09/21 15:36:18
Are you trying to make the field values persist? U
 | |
| 30 }); | 30 }); | 
| 31 } | 31 } | 
| 32 | 32 | 
| 33 function onClose() | |
| 34 { | |
| 35 return !crawling; | |
| 
Wladimir Palant
2012/09/21 15:36:18
Maybe show a message why the window cannot be clos
 | |
| 36 } | |
| 37 | |
| 38 function getBackendUrl() | 33 function getBackendUrl() | 
| 39 { | 34 { | 
| 40 let backendUrlTextBox = document.getElementById("backend-url"); | 35 let backendUrlTextBox = document.getElementById("backend-url"); | 
| 41 return backendUrlTextBox.value; | 36 return backendUrlTextBox.value; | 
| 42 } | 37 } | 
| 43 | 38 | 
| 44 function getParallelTabs() | 39 function getParallelTabs() | 
| 45 { | 40 { | 
| 46 let parallelTabsTextBox = document.getElementById("parallel-tabs"); | 41 let parallelTabsTextBox = document.getElementById("parallel-tabs"); | 
| 47 return parseInt(parallelTabsTextBox.value); | 42 return parseInt(parallelTabsTextBox.value); | 
| 48 } | 43 } | 
| 49 | 44 | 
| 50 function onAccept() | 45 function onAccept() | 
| 51 { | 46 { | 
| 52 let backendUrl = getBackendUrl(); | 47 let backendUrl = getBackendUrl(); | 
| 53 let parallelTabs = getParallelTabs(); | 48 let parallelTabs = getParallelTabs(); | 
| 54 let dialog = document.getElementById("abpcrawler-crawler"); | 49 let dialog = document.documentElement; | 
| 
Wladimir Palant
2012/09/21 15:36:18
How about using document.documentElement here?
 | |
| 55 let acceptButton = dialog.getButton("accept"); | 50 let acceptButton = dialog.getButton("accept"); | 
| 56 crawling = acceptButton.disabled = true; | 51 crawling = acceptButton.disabled = true; | 
| 57 Crawler.crawl(backendUrl, parallelTabs, window.opener, function() | 52 | 
| 
Wladimir Palant
2012/09/21 15:36:18
Of course we could have the condition that window.
 | |
| 53 let mainWindow = window.opener; | |
| 54 if (!mainWindow || mainWindow.closed) | |
| 58 { | 55 { | 
| 56 alert( "Unable to find the main window, aborting."); | |
| 59 crawling = acceptButton.disabled = false; | 57 crawling = acceptButton.disabled = false; | 
| 60 }); | 58 } | 
| 59 else | |
| 60 Crawler.crawl(backendUrl, parallelTabs, mainWindow, function() | |
| 61 { | |
| 62 crawling = acceptButton.disabled = false; | |
| 63 }); | |
| 64 | |
| 61 return false; | 65 return false; | 
| 62 } | 66 } | 
| 67 | |
| 68 function onCancel() | |
| 69 { | |
| 70 let closingPossible = !crawling; | |
| 71 if (!closingPossible) | |
| 72 alert("Crawling still in progress."); | |
| 73 return closingPossible; | |
| 74 } | |
| LEFT | RIGHT |