summaryrefslogtreecommitdiffstats
path: root/devtools/shared/apps/Devices.jsm
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/apps/Devices.jsm')
-rw-r--r--devtools/shared/apps/Devices.jsm53
1 files changed, 53 insertions, 0 deletions
diff --git a/devtools/shared/apps/Devices.jsm b/devtools/shared/apps/Devices.jsm
new file mode 100644
index 000000000..d3390b34b
--- /dev/null
+++ b/devtools/shared/apps/Devices.jsm
@@ -0,0 +1,53 @@
+/* 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";
+
+Components.utils.import("resource://devtools/shared/event-emitter.js");
+
+const EXPORTED_SYMBOLS = ["Devices"];
+
+var addonInstalled = false;
+
+const Devices = {
+ _devices: {},
+
+ get helperAddonInstalled() {
+ return addonInstalled;
+ },
+ set helperAddonInstalled(v) {
+ addonInstalled = v;
+ if (!addonInstalled) {
+ for (let name in this._devices) {
+ this.unregister(name);
+ }
+ }
+ this.emit("addon-status-updated", v);
+ },
+
+ register: function (name, device) {
+ this._devices[name] = device;
+ this.emit("register");
+ },
+
+ unregister: function (name) {
+ delete this._devices[name];
+ this.emit("unregister");
+ },
+
+ available: function () {
+ return Object.keys(this._devices).sort();
+ },
+
+ getByName: function (name) {
+ return this._devices[name];
+ }
+};
+Object.defineProperty(this, "Devices", {
+ value: Devices,
+ enumerable: true,
+ writable: false
+});
+
+EventEmitter.decorate(Devices);