diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index c160b9e3..4e9d474c 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -18,6 +18,7 @@ /* global * TextScanner + * apiForward * apiGetZoom * apiKanjiFind * apiOptionsGet @@ -53,7 +54,7 @@ class Frontend extends TextScanner { this._runtimeMessageHandlers = new Map([ ['popupSetVisibleOverride', ({visible}) => { this.popup.setVisibleOverride(visible); }], - ['rootPopupRequestInformationBroadcast', () => { this.popup.broadcastRootPopupInformation(); }] + ['rootPopupRequestInformationBroadcast', () => { this._broadcastRootPopupInformation(); }] ]); } @@ -77,7 +78,7 @@ class Frontend extends TextScanner { chrome.runtime.onMessage.addListener(this.onRuntimeMessage.bind(this)); this._updateContentScale(); - this.popup.broadcastRootPopupInformation(); + this._broadcastRootPopupInformation(); } catch (e) { this.onError(e); } @@ -257,6 +258,12 @@ class Frontend extends TextScanner { this._updatePopupPosition(); } + _broadcastRootPopupInformation() { + if (!this.popup.isProxy() && this.popup.depth === 0) { + apiForward('rootPopupInformation', {popupId: this.popup.id, frameId: this.popup.frameId}); + } + } + async _updatePopupPosition() { const textSource = this.getCurrentTextSource(); if (textSource !== null && await this.popup.isVisible()) { diff --git a/ext/fg/js/popup-proxy.js b/ext/fg/js/popup-proxy.js index 67b0b2c6..cb264af2 100644 --- a/ext/fg/js/popup-proxy.js +++ b/ext/fg/js/popup-proxy.js @@ -64,10 +64,6 @@ class PopupProxy { return true; } - broadcastRootPopupInformation() { - // NOP - } - async setOptions(options) { return await this._invokeHostApi('setOptions', {id: this._id, options}); } diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index fb3e56b4..60dc16dd 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -17,7 +17,6 @@ */ /* global - * apiForward * apiGetMessageToken * apiInjectStylesheet */ @@ -69,6 +68,10 @@ class Popup { return this._depth; } + get frameId() { + return this._frameId; + } + get url() { return window.location.href; } @@ -79,12 +82,6 @@ class Popup { return false; } - broadcastRootPopupInformation() { - if (this._depth === 0) { - apiForward('rootPopupInformation', {popupId: this._id, frameId: this._frameId}); - } - } - async setOptions(options) { this._options = options; this.updateTheme();