diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-02-09 22:56:04 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-09 22:56:04 -0500 |
commit | 166451b8f76224542b49c13cb27a258eb291f05e (patch) | |
tree | 071438b28a04b0478586272038ea343ad4cad319 /ext/bg/js/backend.js | |
parent | 0f5fb804d03041b58813516721d897c4315dca8b (diff) |
Improve popup window ownership (#1364)
* Update frameInformationGet to also return the tab ID
* Add tabId to Frontend
* Pass tabId/frameId to Display
* Pass ownership information using setContent
* Remove ownerFrameId for Popup classes
* Use frameId instead of ownerFrameId for screenshotting
* Use contentOrigin instead of owner
* Update _invokeContentOrigin implementation
Diffstat (limited to 'ext/bg/js/backend.js')
-rw-r--r-- | ext/bg/js/backend.js | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index f1983cb3..fd90a220 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -525,8 +525,10 @@ class Backend { } _onApiFrameInformationGet(params, sender) { + const tab = sender.tab; + const tabId = tab ? tab.id : void 0; const frameId = sender.frameId; - return Promise.resolve({frameId}); + return Promise.resolve({tabId, frameId}); } _onApiInjectStylesheet({type, value}, sender) { @@ -1505,17 +1507,17 @@ class Backend { return isValidTab ? tab : null; } - async _getScreenshot(windowId, tabId, ownerFrameId, format, quality) { + async _getScreenshot(windowId, tabId, frameId, format, quality) { if (typeof windowId !== 'number') { throw new Error('Invalid window ID'); } let token = null; try { - if (typeof tabId === 'number' && typeof ownerFrameId === 'number') { + if (typeof tabId === 'number' && typeof frameId === 'number') { const action = 'setAllVisibleOverride'; const params = {value: false, priority: 0, awaitFrame: true}; - token = await this._sendMessageTabPromise(tabId, {action, params}, {frameId: ownerFrameId}); + token = await this._sendMessageTabPromise(tabId, {action, params}, {frameId}); } return await new Promise((resolve, reject) => { @@ -1533,7 +1535,7 @@ class Backend { const action = 'clearAllVisibleOverride'; const params = {token}; try { - await this._sendMessageTabPromise(tabId, {action, params}, {frameId: ownerFrameId}); + await this._sendMessageTabPromise(tabId, {action, params}, {frameId}); } catch (e) { // NOP } @@ -1634,8 +1636,8 @@ class Backend { } async _injectAnkNoteScreenshot(ankiConnect, timestamp, definitionDetails, details) { - const {windowId, tabId, ownerFrameId, format, quality} = details; - const dataUrl = await this._getScreenshot(windowId, tabId, ownerFrameId, format, quality); + const {windowId, tabId, frameId, format, quality} = details; + const dataUrl = await this._getScreenshot(windowId, tabId, frameId, format, quality); const {mediaType, data} = this._getDataUrlInfo(dataUrl); const extension = this._mediaUtility.getFileExtensionFromImageMediaType(mediaType); |