aboutsummaryrefslogtreecommitdiff
path: root/tools/addon-sdk-1.12/examples/library-detector/lib/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/addon-sdk-1.12/examples/library-detector/lib/main.js')
-rwxr-xr-xtools/addon-sdk-1.12/examples/library-detector/lib/main.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/tools/addon-sdk-1.12/examples/library-detector/lib/main.js b/tools/addon-sdk-1.12/examples/library-detector/lib/main.js
new file mode 100755
index 0000000..3f2b0c5
--- /dev/null
+++ b/tools/addon-sdk-1.12/examples/library-detector/lib/main.js
@@ -0,0 +1,67 @@
+/* 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/. */
+
+const tabs = require('tabs');
+const widgets = require('widget');
+const data = require('self').data;
+const pageMod = require('page-mod');
+const panel = require('panel');
+
+const ICON_WIDTH = 16;
+
+function updateWidgetView(tab) {
+ let widgetView = widget.getView(tab.window);
+ if (!tab.libraries) {
+ tab.libraries = [];
+ }
+ widgetView.port.emit("update", tab.libraries);
+ widgetView.width = tab.libraries.length * ICON_WIDTH;
+}
+
+var widget = widgets.Widget({
+ id: "library-detector",
+ label: "Library Detector",
+ contentURL: data.url("widget.html"),
+ panel: panel.Panel({
+ width: 240,
+ height: 60,
+ contentURL: data.url("panel.html")
+ })
+});
+
+widget.port.on('setLibraryInfo', function(libraryInfo) {
+ widget.panel.postMessage(libraryInfo);
+});
+
+pageMod.PageMod({
+ include: "*",
+ contentScriptWhen: 'end',
+ contentScriptFile: (data.url('library-detector.js')),
+ onAttach: function(worker) {
+ worker.on('message', function(libraryList) {
+ if (!worker.tab.libraries) {
+ worker.tab.libraries = [];
+ }
+ libraryList.forEach(function(library) {
+ if (worker.tab.libraries.indexOf(library) == -1) {
+ worker.tab.libraries.push(library);
+ }
+ });
+ if (worker.tab == tabs.activeTab) {
+ updateWidgetView(worker.tab);
+ }
+ });
+ }
+});
+
+tabs.on('activate', function(tab) {
+ updateWidgetView(tab);
+});
+
+/*
+For change of location
+*/
+tabs.on('ready', function(tab) {
+ tab.libraries = [];
+}); \ No newline at end of file