summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-11-08 22:49:40 -0500
committerGitHub <noreply@github.com>2020-11-08 22:49:40 -0500
commit3a23f081d1a11a233b855bdea1f6dcab9b593aca (patch)
tree6a883418201160da1d3a0f48277a128275892ce8
parent8edb478d0adbc7c09e827f1606f9e7a6660dec65 (diff)
Frontend options override refactor (#1016)
* Update how options context overriding works * Make function private
-rw-r--r--ext/bg/js/settings/popup-preview-frame.js13
-rw-r--r--ext/fg/js/frontend.js49
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};
+ }
}