diff --git a/content/apply.js b/content/apply.js index 5fecc11e..28d4390c 100644 --- a/content/apply.js +++ b/content/apply.js @@ -134,17 +134,12 @@ self.INJECTED !== 1 && (() => { } function fetchParentDomain() { - if (parentDomain) { - return Promise.resolve(); - } - return msg.send({ - method: 'invokeAPI', - name: 'getTabUrlPrefix', - args: [] - }) - .then(newDomain => { - parentDomain = newDomain; - }); + return parentDomain ? + Promise.resolve() : + API.getTabUrlPrefix() + .then(newDomain => { + parentDomain = newDomain; + }); } function updateExposeIframes() { @@ -168,14 +163,9 @@ self.INJECTED !== 1 && (() => { } if (STYLE_VIA_API) { API.styleViaAPI({method: 'updateCount'}).catch(msg.ignoreError); - return; + } else { + API.updateIconBadge(styleInjector.list.length).catch(console.error); } - // we have to send the tabId so we can't use `sendBg` that is used by `API` - msg.send({ - method: 'invokeAPI', - name: 'updateIconBadge', - args: [styleInjector.list.length] - }).catch(console.error); } function orphanCheck() { diff --git a/js/msg.js b/js/msg.js index 42dc44dd..f7e6bafd 100644 --- a/js/msg.js +++ b/js/msg.js @@ -238,9 +238,15 @@ self.msg = self.INJECTED === 1 ? self.msg : (() => { } })(); -self.API = self.INJECTED === 1 ? self.API : new Proxy({}, { +self.API = self.INJECTED === 1 ? self.API : new Proxy({ + // Handlers for these methods need sender.tab.id which is set by `send` as it uses messaging, + // unlike `sendBg` which invokes the background page directly in our own extension tabs + getTabUrlPrefix: true, + updateIconBadge: true, + styleViaAPI: true, +}, { get: (target, name) => - (...args) => Promise.resolve(self.msg.sendBg({ + (...args) => Promise.resolve(self.msg[target[name] ? 'send' : 'sendBg']({ method: 'invokeAPI', name, args