diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2024-02-18 07:58:59 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-18 12:58:59 +0000 |
commit | 7e9f7e2616973418cc50f7706bd8f644cb9d5559 (patch) | |
tree | 8f8bec7a777a2df33a0a26ef53022c50d2327ef8 /ext/js/display | |
parent | 4aaa9f15d97668203741c1731f15e710ae8b8294 (diff) |
Application data refactor (#699)
* Pass tabId and frameId to Application
* Remove casts
* Remove redundant frameInformationGet calls
* Expose tabId and frameId
* Remove unsed
* Simplify
* Update FrameAncestryHandler to not need a direct frameId
* Remove frameId from FrameOffsetForwarder
* Remove frameId from PopupFactory
* Remove frameId from Frontend
* Remove frameId from PopupPreviewFrame
* Fix PopupFactory and Frontend constructor
* Remove frameId from Display
* Remove frameId from SearchDisplayController
* Restore if check
Diffstat (limited to 'ext/js/display')
-rw-r--r-- | ext/js/display/display.js | 43 | ||||
-rw-r--r-- | ext/js/display/popup-main.js | 4 | ||||
-rw-r--r-- | ext/js/display/search-display-controller.js | 14 | ||||
-rw-r--r-- | ext/js/display/search-main.js | 6 |
4 files changed, 21 insertions, 46 deletions
diff --git a/ext/js/display/display.js b/ext/js/display/display.js index d30ed8a0..f1cd4caf 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -46,20 +46,14 @@ import {QueryParser} from './query-parser.js'; export class Display extends EventDispatcher { /** * @param {import('../application.js').Application} application - * @param {number|undefined} tabId - * @param {number|undefined} frameId * @param {import('display').DisplayPageType} pageType * @param {import('../dom/document-focus-controller.js').DocumentFocusController} documentFocusController * @param {import('../input/hotkey-handler.js').HotkeyHandler} hotkeyHandler */ - constructor(application, tabId, frameId, pageType, documentFocusController, hotkeyHandler) { + constructor(application, pageType, documentFocusController, hotkeyHandler) { super(); /** @type {import('../application.js').Application} */ this._application = application; - /** @type {number|undefined} */ - this._tabId = tabId; - /** @type {number|undefined} */ - this._frameId = frameId; /** @type {import('display').DisplayPageType} */ this._pageType = pageType; /** @type {import('../dom/document-focus-controller.js').DocumentFocusController} */ @@ -159,10 +153,10 @@ export class Display extends EventDispatcher { this._parentPopupId = null; /** @type {?number} */ this._parentFrameId = null; - /** @type {number|undefined} */ - this._contentOriginTabId = tabId; - /** @type {number|undefined} */ - this._contentOriginFrameId = frameId; + /** @type {?number} */ + this._contentOriginTabId = application.tabId; + /** @type {?number} */ + this._contentOriginFrameId = application.frameId; /** @type {boolean} */ this._childrenSupported = true; /** @type {?FrameEndpoint} */ @@ -588,10 +582,10 @@ export class Display extends EventDispatcher { * @returns {Promise<import('cross-frame-api').ApiReturn<TName>>} */ async invokeContentOrigin(action, params) { - if (this._contentOriginTabId === this._tabId && this._contentOriginFrameId === this._frameId) { + if (this._contentOriginTabId === this._application.tabId && this._contentOriginFrameId === this._application.frameId) { throw new Error('Content origin is same page'); } - if (typeof this._contentOriginTabId !== 'number' || typeof this._contentOriginFrameId !== 'number') { + if (this._contentOriginTabId === null || this._contentOriginFrameId === null) { throw new Error('No content origin is assigned'); } return await this._application.crossFrame.invokeTab(this._contentOriginTabId, this._contentOriginFrameId, action, params); @@ -604,7 +598,8 @@ export class Display extends EventDispatcher { * @returns {Promise<import('cross-frame-api').ApiReturn<TName>>} */ async invokeParentFrame(action, params) { - if (this._parentFrameId === null || this._parentFrameId === this._frameId) { + const {frameId} = this._application; + if (frameId === null || this._parentFrameId === null || this._parentFrameId === frameId) { throw new Error('Invalid parent frame'); } return await this._application.crossFrame.invoke(this._parentFrameId, action, params); @@ -832,6 +827,7 @@ export class Display extends EventDispatcher { _onExtensionUnloaded() { const type = 'unloaded'; if (this._contentType === type) { return; } + const {tabId, frameId} = this._application; /** @type {import('display').ContentDetails} */ const details = { focus: false, @@ -839,10 +835,7 @@ export class Display extends EventDispatcher { params: {type}, state: {}, content: { - contentOrigin: { - tabId: this._tabId, - frameId: this._frameId - } + contentOrigin: {tabId, frameId} } }; this.setContent(details); @@ -1222,7 +1215,7 @@ export class Display extends EventDispatcher { const {contentOrigin} = content; if (typeof contentOrigin === 'object' && contentOrigin !== null) { const {tabId, frameId} = contentOrigin; - if (typeof tabId === 'number' && typeof frameId === 'number') { + if (tabId !== null && frameId !== null) { this._contentOriginTabId = tabId; this._contentOriginFrameId = frameId; contentOriginValid = true; @@ -1673,12 +1666,12 @@ export class Display extends EventDispatcher { * @param {import('settings').ProfileOptions} options */ async _updateNestedFrontend(options) { - if (typeof this._frameId !== 'number') { return; } + const {tabId, frameId} = this._application; + if (tabId === null || frameId === null) { return; } const isSearchPage = (this._pageType === 'search'); const isEnabled = ( this._childrenSupported && - typeof this._tabId === 'number' && ( (isSearchPage) ? (options.scanning.enableOnSearchPage) : @@ -1707,10 +1700,6 @@ export class Display extends EventDispatcher { /** */ async _setupNestedFrontend() { - if (typeof this._frameId !== 'number') { - throw new Error('No frameId assigned'); - } - const useProxyPopup = this._parentFrameId !== null; const parentPopupId = this._parentPopupId; const parentFrameId = this._parentFrameId; @@ -1720,7 +1709,7 @@ export class Display extends EventDispatcher { import('../app/frontend.js') ]); - const popupFactory = new PopupFactory(this._application, this._frameId); + const popupFactory = new PopupFactory(this._application); popupFactory.prepare(); /** @type {import('frontend').ConstructorDetails} */ @@ -1730,8 +1719,6 @@ export class Display extends EventDispatcher { parentPopupId, parentFrameId, depth: this._depth + 1, - tabId: this._tabId, - frameId: this._frameId, popupFactory, pageType: this._pageType, allowRootFramePopupProxy: true, diff --git a/ext/js/display/popup-main.js b/ext/js/display/popup-main.js index a244c2e0..8f92aaa8 100644 --- a/ext/js/display/popup-main.js +++ b/ext/js/display/popup-main.js @@ -29,12 +29,10 @@ await Application.main(async (application) => { const documentFocusController = new DocumentFocusController(); documentFocusController.prepare(); - const {tabId, frameId} = await application.api.frameInformationGet(); - const hotkeyHandler = new HotkeyHandler(); hotkeyHandler.prepare(application.crossFrame); - const display = new Display(application, tabId, frameId, 'popup', documentFocusController, hotkeyHandler); + const display = new Display(application, 'popup', documentFocusController, hotkeyHandler); await display.prepare(); const displayAudio = new DisplayAudio(display); diff --git a/ext/js/display/search-display-controller.js b/ext/js/display/search-display-controller.js index 6767dce7..4b8141e1 100644 --- a/ext/js/display/search-display-controller.js +++ b/ext/js/display/search-display-controller.js @@ -24,17 +24,11 @@ import {querySelectorNotNull} from '../dom/query-selector.js'; export class SearchDisplayController { /** - * @param {number|undefined} tabId - * @param {number|undefined} frameId * @param {import('./display.js').Display} display * @param {import('./display-audio.js').DisplayAudio} displayAudio * @param {import('./search-persistent-state-controller.js').SearchPersistentStateController} searchPersistentStateController */ - constructor(tabId, frameId, display, displayAudio, searchPersistentStateController) { - /** @type {number|undefined} */ - this._tabId = tabId; - /** @type {number|undefined} */ - this._frameId = frameId; + constructor(display, displayAudio, searchPersistentStateController) { /** @type {import('./display.js').Display} */ this._display = display; /** @type {import('./display-audio.js').DisplayAudio} */ @@ -519,6 +513,7 @@ export class SearchDisplayController { if (flags !== null) { optionsContext.flags = flags; } + const {tabId, frameId} = this._display.application; /** @type {import('display').ContentDetails} */ const details = { focus: false, @@ -536,10 +531,7 @@ export class SearchDisplayController { content: { dictionaryEntries: void 0, animate, - contentOrigin: { - tabId: this._tabId, - frameId: this._frameId - } + contentOrigin: {tabId, frameId} } }; if (!lookup) { details.params.lookup = 'false'; } diff --git a/ext/js/display/search-main.js b/ext/js/display/search-main.js index 5c6a31ca..fd90ee0e 100644 --- a/ext/js/display/search-main.js +++ b/ext/js/display/search-main.js @@ -36,12 +36,10 @@ await Application.main(async (application) => { const searchActionPopupController = new SearchActionPopupController(searchPersistentStateController); searchActionPopupController.prepare(); - const {tabId, frameId} = await application.api.frameInformationGet(); - const hotkeyHandler = new HotkeyHandler(); hotkeyHandler.prepare(application.crossFrame); - const display = new Display(application, tabId, frameId, 'search', documentFocusController, hotkeyHandler); + const display = new Display(application, 'search', documentFocusController, hotkeyHandler); await display.prepare(); const displayAudio = new DisplayAudio(display); @@ -50,7 +48,7 @@ await Application.main(async (application) => { const displayAnki = new DisplayAnki(display, displayAudio); displayAnki.prepare(); - const searchDisplayController = new SearchDisplayController(tabId, frameId, display, displayAudio, searchPersistentStateController); + const searchDisplayController = new SearchDisplayController(display, displayAudio, searchPersistentStateController); await searchDisplayController.prepare(); display.initializeState(); |