diff options
Diffstat (limited to 'ext/fg/js')
| -rw-r--r-- | ext/fg/js/float.js | 27 | ||||
| -rw-r--r-- | ext/fg/js/frontend.js | 11 | 
2 files changed, 37 insertions, 1 deletions
| diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js index 9b720ebe..01055ca6 100644 --- a/ext/fg/js/float.js +++ b/ext/fg/js/float.js @@ -162,6 +162,33 @@ class DisplayFloat extends Display {      setContentScale(scale) {          document.body.style.fontSize = `${scale}em`;      } + +    async getDocumentTitle() { +        try { +            const uniqueId = yomichan.generateId(16); + +            const promise = yomichan.getTemporaryListenerResult( +                chrome.runtime.onMessage, +                ({action, params}, {resolve}) => { +                    if ( +                        action === 'documentInformationBroadcast' && +                        isObject(params) && +                        params.uniqueId === uniqueId && +                        params.frameId === 0 +                    ) { +                        resolve(params); +                    } +                }, +                2000 +            ); +            apiForward('requestDocumentInformationBroadcast', {uniqueId}); + +            const {title} = await promise; +            return title; +        } catch (e) { +            return ''; +        } +    }  }  DisplayFloat.instance = new DisplayFloat(); diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 4e9d474c..31843212 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -54,7 +54,8 @@ class Frontend extends TextScanner {          this._runtimeMessageHandlers = new Map([              ['popupSetVisibleOverride', ({visible}) => { this.popup.setVisibleOverride(visible); }], -            ['rootPopupRequestInformationBroadcast', () => { this._broadcastRootPopupInformation(); }] +            ['rootPopupRequestInformationBroadcast', () => { this._broadcastRootPopupInformation(); }], +            ['requestDocumentInformationBroadcast', ({uniqueId}) => { this._broadcastDocumentInformation(uniqueId); }]          ]);      } @@ -264,6 +265,14 @@ class Frontend extends TextScanner {          }      } +    _broadcastDocumentInformation(uniqueId) { +        apiForward('documentInformationBroadcast', { +            uniqueId, +            frameId: this.popup.frameId, +            title: document.title +        }); +    } +      async _updatePopupPosition() {          const textSource = this.getCurrentTextSource();          if (textSource !== null && await this.popup.isVisible()) { |