diff options
author | ch1p <me@ch1p.com> | 2015-08-14 01:04:22 +0300 |
---|---|---|
committer | ch1p <me@ch1p.com> | 2015-08-14 01:04:22 +0300 |
commit | 8c1a7423a0e526f2896d17be768abeccbeb77ad7 (patch) | |
tree | 67ad777e65ff6b0cca64a27ab5bb8455b575ffae /firefox/bootstrap.js |
initial
Diffstat (limited to 'firefox/bootstrap.js')
-rw-r--r-- | firefox/bootstrap.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/firefox/bootstrap.js b/firefox/bootstrap.js new file mode 100644 index 0000000..4d65d68 --- /dev/null +++ b/firefox/bootstrap.js @@ -0,0 +1,73 @@ +Components.utils.import("resource://gre/modules/Services.jsm"); + +try { + var console = (Components.utils.import("resource://gre/modules/devtools/Console.jsm", {})).console; +} catch (e) {} + +function log() { + var msgs = [], i, tmp; + for (i = 0; i < arguments.length; i++) { + if (arguments[i] instanceof Error) tmp = [arguments[i], arguments[i].stack]; + else tmp = arguments[i]; + msgs.push(tmp); + } + + msgs.unshift('[VKPC bootstrap.js]'); + try { + console.log.apply(console, msgs); + } catch(e) {} +} + +function startup(data, reason) { + Components.utils.import("chrome://vkpc/content/module.jsm"); + VKPC.startup(); + + var windows = Services.wm.getEnumerator("navigator:browser"); + while (windows.hasMoreElements()) { + var win = windows.getNext().QueryInterface(Components.interfaces.nsIDOMWindow); + VKPC.addWindow(win, win.document && win.document.readyState == 'complete'); + } + + Services.wm.addListener(WindowListener); +} +function shutdown(data, reason) { + if (reason == APP_SHUTDOWN) + return; + + Services.wm.removeListener(WindowListener); + + VKPC.shutdown(); + + if (reason == ADDON_DISABLE) { + Services.obs.notifyObservers(null, "startupcache-invalidate", null); + Services.obs.notifyObservers(null, "chrome-flush-caches", null); + } +} +function install(data, reason) {} +function uninstall(data, reason) {} + +function forEachOpenWindow() { + var windows = Services.wm.getEnumerator("navigator:browser"); + while (windows.hasMoreElements()) { + VKPC.addWindow(windows.getNext().QueryInterface(Components.interfaces.nsIDOMWindow)); + } +} + +var WindowListener = { + onOpenWindow: function(xulWindow) { + var window = xulWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIDOMWindow); + window.addEventListener("load", function onWindowLoad() { + window.removeEventListener("load", onWindowLoad); + + if (window.document.documentElement.getAttribute("windowtype") == "navigator:browser") { + VKPC.addWindow(window, true); + } + }); + }, + onCloseWindow: function(xulWindow) { + VKPC.removeWindow(xulWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIDOMWindow)); + }, + onWindowTitleChange: function(xulWindow, newTitle) { } +}; |