summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/lib/sdk/event/chrome.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-10 02:51:36 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-10 02:51:36 -0500
commit37d5300335d81cecbecc99812747a657588c63eb (patch)
tree765efa3b6a56bb715d9813a8697473e120436278 /addon-sdk/source/lib/sdk/event/chrome.js
parentb2bdac20c02b12f2057b9ef70b0a946113a00e00 (diff)
parent4fb11cd5966461bccc3ed1599b808237be6b0de9 (diff)
downloadUXP-37d5300335d81cecbecc99812747a657588c63eb.tar
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.gz
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.lz
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.xz
UXP-37d5300335d81cecbecc99812747a657588c63eb.zip
Merge branch 'ext-work'
Diffstat (limited to 'addon-sdk/source/lib/sdk/event/chrome.js')
-rw-r--r--addon-sdk/source/lib/sdk/event/chrome.js65
1 files changed, 0 insertions, 65 deletions
diff --git a/addon-sdk/source/lib/sdk/event/chrome.js b/addon-sdk/source/lib/sdk/event/chrome.js
deleted file mode 100644
index 9044fef99..000000000
--- a/addon-sdk/source/lib/sdk/event/chrome.js
+++ /dev/null
@@ -1,65 +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/. */
-
-"use strict";
-
-module.metadata = {
- "stability": "unstable"
-};
-
-const { Cc, Ci, Cr, Cu } = require("chrome");
-const { emit, on, off } = require("./core");
-var observerService = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
-
-const { ShimWaiver } = Cu.import("resource://gre/modules/ShimWaiver.jsm");
-const addObserver = ShimWaiver.getProperty(observerService, "addObserver");
-const removeObserver = ShimWaiver.getProperty(observerService, "removeObserver");
-
-const { when: unload } = require("../system/unload");
-
-// Simple class that can be used to instantiate event channel that
-// implements `nsIObserver` interface. It's will is used by `observe`
-// function as observer + event target. It basically proxies observer
-// notifications as to it's registered listeners.
-function ObserverChannel() {}
-Object.freeze(Object.defineProperties(ObserverChannel.prototype, {
- QueryInterface: {
- value: function(iid) {
- if (!iid.equals(Ci.nsIObserver) &&
- !iid.equals(Ci.nsISupportsWeakReference) &&
- !iid.equals(Ci.nsISupports))
- throw Cr.NS_ERROR_NO_INTERFACE;
- return this;
- }
- },
- observe: {
- value: function(subject, topic, data) {
- emit(this, "data", {
- type: topic,
- target: subject,
- data: data
- });
- }
- }
-}));
-
-function observe(topic) {
- let observerChannel = new ObserverChannel();
-
- // Note: `nsIObserverService` will not hold a weak reference to a
- // observerChannel (since third argument is `true`). There for if it
- // will be GC-ed with all it's event listeners once no other references
- // will be held.
- addObserver(observerChannel, topic, true);
-
- // We need to remove any observer added once the add-on is unloaded;
- // otherwise we'll get a "dead object" exception.
- // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1001833
- unload(() => removeObserver(observerChannel, topic));
-
- return observerChannel;
-}
-
-exports.observe = observe;