Frontend options override refactor (#1016)
* Update how options context overriding works * Make function private
This commit is contained in:
parent
8edb478d0a
commit
3a23f081d1
@ -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();
|
||||
}
|
||||
|
@ -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};
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user