Single widget instance across windows (Firefox driver)

main
Elbert Alias 11 years ago
parent b2cd820f16
commit 691b707232

@ -11,6 +11,7 @@
Tab, Tab,
Panel, Panel,
Widget, Widget,
widget, // Keep track of a global widget instance. A widget per window does not work.
UrlBar; UrlBar;
exports.main = function(options, callbacks) { exports.main = function(options, callbacks) {
@ -34,24 +35,26 @@
self = this, self = this,
tab; tab;
w.log('new Window');
this.window = win; this.window = win;
this.tabs = {}; this.tabs = {};
this.urlBar = null; this.urlBar = null;
this.widget = null; this.widget = null;
if ( require('sdk/simple-prefs').prefs.urlbar ) { if ( require('sdk/simple-prefs').prefs.urlbar ) {
this.urlBar = new UrlBar(); this.urlBar = new UrlBar(this.window);
} else { } else {
this.widget = new Widget(); this.widget = widget || ( widget = new Widget() );
} }
require('sdk/simple-prefs').on('urlbar', function() { require('sdk/simple-prefs').on('urlbar', function() {
self.destroy(); self.destroy();
if ( require('sdk/simple-prefs').prefs.urlbar ) { if ( require('sdk/simple-prefs').prefs.urlbar ) {
self.urlBar = new UrlBar(); self.urlBar = new UrlBar(this.window);
} else { } else {
self.widget = new Widget(); self.widget = widget || ( widget = new Widget() );
} }
self.displayApps(); self.displayApps();
@ -213,7 +216,7 @@
this.panel = new Panel(); this.panel = new Panel();
this.widget = require('sdk/widget').Widget({ this.widget = require('sdk/widget').Widget({
id: 'wappalyzer-' + ( new Date() ).getTime() + ( Math.floor( Math.random() * 900 ) + 100 ), id: 'wappalyzer',
label: 'Wappalyzer', label: 'Wappalyzer',
contentURL: require('sdk/self').data.url('images/icon32.png'), contentURL: require('sdk/self').data.url('images/icon32.png'),
panel: this.panel.get() panel: this.panel.get()
@ -236,7 +239,7 @@
this.widget.destroy(); this.widget.destroy();
}; };
UrlBar = function() { UrlBar = function(window) {
var self = this; var self = this;
this.panel = new Panel(); this.panel = new Panel();
@ -245,9 +248,18 @@
self.panel.get().show(); self.panel.get().show();
} }
// Can't get document from sdk/windows. Use active window instead.
// This breaks switching between URL bar and widget with multiple windows open
this.document = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator) this.document = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator)
.getMostRecentWindow('navigator:browser').document; .getMostRecentWindow('navigator:browser').document;
if ( this.document.getElementById('wappalyzer-urlbar') ) {
this.urlBar = this.document.getElementById('wappalyzer-urlbar');
return;
}
//
this.urlBar = this.document.createElement('hbox'); this.urlBar = this.document.createElement('hbox');
this.urlBar.setAttribute('id', 'wappalyzer-urlbar'); this.urlBar.setAttribute('id', 'wappalyzer-urlbar');

@ -8,7 +8,7 @@
"description": "Identifies software on the web", "description": "Identifies software on the web",
"author": "Elbert Alias", "author": "Elbert Alias",
"license": "GPLv3", "license": "GPLv3",
"version": "3.0.9", "version": "3.0.10",
"main": "driver", "main": "driver",
"preferences": [{ "preferences": [{
"name": "tracking", "name": "tracking",

@ -1692,12 +1692,12 @@
"M.R. Inc Webserver": { "M.R. Inc Webserver": {
"website": "mrincworld.com", "website": "mrincworld.com",
"cats": [ 22 ], "cats": [ 22 ],
"headers": { "Server": "M\\.R\\. Inc Inc Webserver" } "headers": { "Server": "M\\.R\\. Inc Webserver" }
}, },
"M.R. Inc Wild CMS": { "M.R. Inc Wild CMS": {
"website": "mrincworld.com", "website": "mrincworld.com",
"cats": [ 1, 6 ], "cats": [ 1, 6 ],
"headers": { "X-Powered-By": "M\\.R\\. Inc Inc Wild CMS" } "headers": { "X-Powered-By": "M\\.R\\. Inc Wild CMS" }
}, },
"Magento": { "Magento": {
"website": "www.magentocommerce.com", "website": "www.magentocommerce.com",