diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-11-08 22:49:40 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-08 22:49:40 -0500 | 
| commit | 3a23f081d1a11a233b855bdea1f6dcab9b593aca (patch) | |
| tree | 6a883418201160da1d3a0f48277a128275892ce8 /ext | |
| parent | 8edb478d0adbc7c09e827f1606f9e7a6660dec65 (diff) | |
Frontend options override refactor (#1016)
* Update how options context overriding works
* Make function private
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/settings/popup-preview-frame.js | 13 | ||||
| -rw-r--r-- | ext/fg/js/frontend.js | 49 | 
2 files changed, 31 insertions, 31 deletions
| diff --git a/ext/bg/js/settings/popup-preview-frame.js b/ext/bg/js/settings/popup-preview-frame.js index 1a05a48d..d9b05368 100644 --- a/ext/bg/js/settings/popup-preview-frame.js +++ b/ext/bg/js/settings/popup-preview-frame.js @@ -28,7 +28,6 @@ class PopupPreviewFrame {          this._frameId = frameId;          this._popupFactory = popupFactory;          this._frontend = null; -        this._frontendGetOptionsContextOld = null;          this._apiOptionsGetOld = null;          this._popupSetCustomOuterCssOld = null;          this._popupShown = false; @@ -78,8 +77,7 @@ class PopupPreviewFrame {              pageType: 'web',              allowRootFramePopupProxy: false          }); -        this._frontendGetOptionsContextOld = this._frontend.getOptionsContext.bind(this._frontend); -        this._frontend.getOptionsContext = this._getOptionsContext.bind(this); +        this._frontend.setOptionsContextOverride(this._optionsContext);          await this._frontend.prepare();          this._frontend.setDisabledOverride(true);          this._frontend.canClearSelection = false; @@ -96,14 +94,6 @@ class PopupPreviewFrame {      // Private -    async _getOptionsContext() { -        let optionsContext = this._optionsContext; -        if (optionsContext === null) { -            optionsContext = this._frontendGetOptionsContextOld(); -        } -        return optionsContext; -    } -      async _apiOptionsGet(...args) {          const options = await this._apiOptionsGetOld(...args);          options.general.enable = true; @@ -213,6 +203,7 @@ class PopupPreviewFrame {      async _updateOptionsContext({optionsContext}) {          this._optionsContext = optionsContext;          if (this._frontend === null) { return; } +        this._frontend.setOptionsContextOverride(optionsContext);          await this._frontend.updateOptions();          await this._updateSearch();      } diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 0ed842f5..127238bf 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -65,6 +65,7 @@ class Frontend {          this._updatePopupToken = null;          this._clearSelectionTimer = null;          this._isPointerOverPopup = false; +        this._optionsContextOverride = null;          this._runtimeMessageHandlers = new Map([              ['requestFrontendReadyBroadcast', {async: false, handler: this._onMessageRequestFrontendReadyBroadcast.bind(this)}], @@ -131,26 +132,15 @@ class Frontend {          this._updateTextScannerEnabled();      } +    setOptionsContextOverride(optionsContext) { +        this._optionsContextOverride = optionsContext; +    } +      async setTextSource(textSource) {          this._textScanner.setCurrentTextSource(null);          await this._textScanner.search(textSource);      } -    async getOptionsContext() { -        let url = window.location.href; -        if (this._useProxyPopup) { -            try { -                url = await api.crossFrame.invoke(this._parentFrameId, 'getUrl', {}); -            } catch (e) { -                // NOP -            } -        } - -        const depth = this._depth; -        const modifierKeys = [...this._activeModifiers]; -        return {depth, url, modifierKeys}; -    } -      async updateOptions() {          try {              await this._updateOptionsInternal(); @@ -319,7 +309,7 @@ class Frontend {      }      async _updateOptionsInternal() { -        const optionsContext = await this.getOptionsContext(); +        const optionsContext = await this._getOptionsContext();          const options = await api.optionsGet(optionsContext);          const scanningOptions = options.scanning;          this._options = options; @@ -393,7 +383,7 @@ class Frontend {          const token = {};          this._updatePopupToken = token;          const popup = await popupPromise; -        const optionsContext = await this.getOptionsContext(); +        const optionsContext = await this._getOptionsContext();          if (this._updatePopupToken !== token) { return; }          if (popup !== null) {              await popup.setOptionsContext(optionsContext, this._id); @@ -496,7 +486,7 @@ class Frontend {              textSource = this._textScanner.getCurrentTextSource();              if (textSource === null) { return; }          } -        this._showPopupContent(textSource, await this.getOptionsContext()); +        this._showPopupContent(textSource, await this._getOptionsContext());      }      _showContent(textSource, focus, definitions, type, sentence, optionsContext) { @@ -590,7 +580,7 @@ class Frontend {              this._popup !== null &&              await this._popup.isVisible()          ) { -            this._showPopupContent(textSource, await this.getOptionsContext()); +            this._showPopupContent(textSource, await this._getOptionsContext());          }      } @@ -622,7 +612,7 @@ class Frontend {      async _getUpToDateOptionsContext() {          await this._updatePendingOptions(); -        return await this.getOptionsContext(); +        return await this._getOptionsContext();      }      _getPreventMiddleMouseValueForPageType(preventMiddleMouseOptions) { @@ -633,4 +623,23 @@ class Frontend {              default: return false;          }      } + +    async _getOptionsContext() { +        if (this._optionsContextOverride !== null) { +            return this._optionsContextOverride; +        } + +        let url = window.location.href; +        if (this._useProxyPopup) { +            try { +                url = await api.crossFrame.invoke(this._parentFrameId, 'getUrl', {}); +            } catch (e) { +                // NOP +            } +        } + +        const depth = this._depth; +        const modifierKeys = [...this._activeModifiers]; +        return {depth, url, modifierKeys}; +    }  } |