Index: lib/windowObserver.js |
diff --git a/lib/windowObserver.js b/lib/windowObserver.js |
deleted file mode 100644 |
index 7d34f8acc7a13423a7ddb09f89ae43bec258b37c..0000000000000000000000000000000000000000 |
--- a/lib/windowObserver.js |
+++ /dev/null |
@@ -1,99 +0,0 @@ |
-/* This Source Code Form is subject to the terms of the Mozilla Public |
- * License, v. 2.0. If a copy of the MPL was not distributed with this |
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
- |
-Cu.import("resource://gre/modules/Services.jsm"); |
-Cu.import("resource://gre/modules/XPCOMUtils.jsm"); |
- |
-exports.WindowObserver = WindowObserver; |
- |
-/** |
- * This class will call listener's method applyToWindow() for all new chrome |
- * windows being opened. It will also call listener's method removeFromWindow() |
- * for all windows still open when the extension is shut down. |
- * @param {Object} listener |
- * @param {String} [when] when to execute applyToWindow(). "start" means immediately |
- * when the window opens, "ready" when its contents are available |
- * and "end" (default) means to wait until the "load" event. |
- * @constructor |
- */ |
-function WindowObserver(listener, when) |
-{ |
- this._listener = listener; |
- this._when = when; |
- |
- let windows = []; |
- let e = Services.wm.getZOrderDOMWindowEnumerator(null, true); |
- while (e.hasMoreElements()) |
- windows.push(e.getNext()); |
- |
- // Check if there are any windows that we missed |
- let eAll = Services.ww.getWindowEnumerator(); |
- while (eAll.hasMoreElements()) |
- { |
- let element = eAll.getNext(); |
- if (windows.indexOf(element) < 0) |
- windows.push(element); |
- } |
- |
- for (let i = 0; i < windows.length; i++) |
- { |
- let window = windows[i].QueryInterface(Ci.nsIDOMWindow); |
- if (when == "start" || window.document.readyState == "complete") |
- this._listener.applyToWindow(window); |
- else |
- this.observe(window, "chrome-document-global-created", null); |
- } |
- |
- Services.obs.addObserver(this, "chrome-document-global-created", true); |
- |
- this._shutdownHandler = function() |
- { |
- let e = Services.ww.getWindowEnumerator(); |
- while (e.hasMoreElements()) |
- this._listener.removeFromWindow(e.getNext().QueryInterface(Ci.nsIDOMWindow)); |
- |
- Services.obs.removeObserver(this, "chrome-document-global-created"); |
- }.bind(this); |
- onShutdown.add(this._shutdownHandler); |
-} |
-WindowObserver.prototype = |
-{ |
- _listener: null, |
- _when: null, |
- _shutdownHandler: null, |
- |
- shutdown: function() |
- { |
- if (!this._shutdownHandler) |
- return; |
- |
- onShutdown.remove(this._shutdownHandler); |
- this._shutdownHandler(); |
- this._shutdownHandler = null; |
- }, |
- |
- observe: function(subject, topic, data) |
- { |
- if (topic == "chrome-document-global-created") |
- { |
- let window = subject.QueryInterface(Ci.nsIDOMWindow); |
- if (this._when == "start") |
- { |
- this._listener.applyToWindow(window); |
- return; |
- } |
- |
- let event = (this._when == "ready" ? "DOMContentLoaded" : "load"); |
- let listener = function() |
- { |
- window.removeEventListener(event, listener, false); |
- if (this._shutdownHandler) |
- this._listener.applyToWindow(window); |
- }.bind(this); |
- window.addEventListener(event, listener, false); |
- } |
- }, |
- |
- QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) |
-}; |