summaryrefslogtreecommitdiff
path: root/data/extensions/spyblock@gnu.org/lib/windowObserver.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/spyblock@gnu.org/lib/windowObserver.js')
-rw-r--r--data/extensions/spyblock@gnu.org/lib/windowObserver.js99
1 files changed, 0 insertions, 99 deletions
diff --git a/data/extensions/spyblock@gnu.org/lib/windowObserver.js b/data/extensions/spyblock@gnu.org/lib/windowObserver.js
deleted file mode 100644
index 7d34f8a..0000000
--- a/data/extensions/spyblock@gnu.org/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])
-};