summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Messages.js15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/Messages.js b/src/lib/Messages.js
index c87a8a8..fc7df6a 100644
--- a/src/lib/Messages.js
+++ b/src/lib/Messages.js
@@ -3,9 +3,9 @@
let handlers = new Set();
let dispatch = async (msg, sender) => {
- let {action} = msg;
+ let {_messageName} = msg;
for (let h of handlers) {
- let f = h[action];
+ let f = h[_messageName];
if (typeof f === "function") {
return await f(msg, sender);
}
@@ -24,8 +24,17 @@
let originalSize = handlers.size;
handlers.delete(handler);
if (originalSize === 1 && handlers.size === 0) {
- browser.runtime.onMessage.remveListener(dispatch);
+ browser.runtime.onMessage.removeListener(dispatch);
}
+ },
+ async send(name, args = {}, toContent = null) {
+ args._messageName = name;
+ if (toContent && "tabId" in toContent) {
+ let opts;
+ if ("frameId" in toContent) opts = {frameId: toContent.frameId};
+ return await browser.tabs.sendMessage(toContent.tabId, args, opts);
+ }
+ return await browser.runtime.sendMessage(args);
}
}
}