From 5c99ed053bc919a651875bcd591e161a16c7d3a7 Mon Sep 17 00:00:00 2001 From: hackademix Date: Mon, 17 Aug 2020 21:00:15 +0200 Subject: [PATCH] Fixed some traps around Messages abstraction. --- src/content/staticNS.js | 4 ++-- src/lib/Messages.js | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/content/staticNS.js b/src/content/staticNS.js index 79a4bac..d1e9817 100644 --- a/src/content/staticNS.js +++ b/src/content/staticNS.js @@ -100,14 +100,14 @@ } } - for (;;) { + for (let attempts = 3; attempts-- > 0;) { try { browser.runtime.sendSyncMessage( {id: "fetchPolicy", url, contextUrl: url}, setup); break; } catch (e) { - if (!Messages.isMissingEndpoint(e)) { + if (!Messages.isMissingEndpoint(e) || document.readyState === "complete") { error(e); break; } diff --git a/src/lib/Messages.js b/src/lib/Messages.js index f33b621..e84550e 100644 --- a/src/lib/Messages.js +++ b/src/lib/Messages.js @@ -12,6 +12,8 @@ } __meta = {name: _messageName}; } + delete msg.__meta; + delete msg._messageName; let {name} = __meta; let responderFound = false; let exception = null; @@ -61,14 +63,14 @@ args._messageName = name; // legacy protocol, for embedders if (recipientInfo && "tabId" in recipientInfo) { let opts; - if ("frameId" in recipientInfo) opts = {frameId: recipientInfo.frameId}; - return await browser.tabs.sendMessage(recipientInfo.tabId, args, opts); + if ("frameId" in recipientInfo) opts = {frameId: parseInt(recipientInfo.frameId)}; + return await browser.tabs.sendMessage(parseInt(recipientInfo.tabId), args, opts); } return await browser.runtime.sendMessage(args); }, isMissingEndpoint(error) { return error && error.message === - "Could not esablish connection. Receiving end does not exist."; + "Could not establish connection. Receiving end does not exist."; } } }