From ba8095a745efec30fec8fa44fe46bd47c7ff8d00 Mon Sep 17 00:00:00 2001 From: "asamuzaK (Kazz)" Date: Sun, 14 Apr 2024 09:26:01 +0900 Subject: [PATCH] Fix captureVisibleTab function --- modules/browser.js | 21 ++++++++---- test/browser.test.js | 79 +++++++++++++++++++++++++++++++++----------- 2 files changed, 75 insertions(+), 25 deletions(-) diff --git a/modules/browser.js b/modules/browser.js index 42b2c48..f8646a3 100644 --- a/modules/browser.js +++ b/modules/browser.js @@ -997,12 +997,21 @@ export const warmupTab = async tabId => { */ export const captureVisibleTab = async (windowId, opt) => { const info = await runtime.getBrowserInfo(); - const version = parseFloat(info.version); - const isGranted = (version >= 126 && await isPermissionGranted({ - permissions: ['activeTab'] - })) || await isPermissionGranted({ - permissions: [''] - }); + let isGranted; + if (info.vender === 'Mozilla') { + const browserVersion = parseFloat(info.version); + isGranted = (browserVersion >= 126 && await isPermissionGranted({ + permissions: ['activeTab'] + })) || await isPermissionGranted({ + origins: [''] + }); + } else { + isGranted = await isPermissionGranted({ + permissions: ['activeTab'] + }) || await isPermissionGranted({ + origins: [''] + }) + } let url; if (isGranted) { if (!Number.isInteger(windowId)) { diff --git a/test/browser.test.js b/test/browser.test.js index 130af2b..c57743b 100644 --- a/test/browser.test.js +++ b/test/browser.test.js @@ -2546,21 +2546,11 @@ describe('browser', () => { it('should not call function if permission is not granted', async () => { browser.runtime.getBrowserInfo.resolves({ - version: '125.0.1' - }); - browser.permissions.contains.resolves(false); - const i = browser.tabs.captureVisibleTab.callCount; - await func(); - assert.strictEqual(browser.tabs.captureVisibleTab.callCount, i, - 'not called'); - }); - - it('should not call function if permission is not granted', async () => { - browser.runtime.getBrowserInfo.resolves({ + vender: 'Mozilla', version: '125.0.1' }); browser.permissions.contains.withArgs({ - permissions: [''] + origins: [''] }).resolves(false); const i = browser.tabs.captureVisibleTab.callCount; await func(); @@ -2570,13 +2560,11 @@ describe('browser', () => { it('should call function', async () => { browser.runtime.getBrowserInfo.resolves({ + vender: 'Mozilla', version: '125.0.1' }); browser.permissions.contains.withArgs({ - permissions: ['activeTab'] - }).resolves(false); - browser.permissions.contains.withArgs({ - permissions: [''] + origins: [''] }).resolves(true); const i = browser.tabs.captureVisibleTab.callCount; const windowId = browser.windows.WINDOW_ID_CURRENT; @@ -2590,15 +2578,33 @@ describe('browser', () => { assert.strictEqual(res, url, 'result'); }); + it('should not call function if permission is not granted', async () => { + browser.runtime.getBrowserInfo.resolves({ + vender: 'Mozilla', + version: '126.0.a1' + }); + browser.permissions.contains.withArgs({ + permissions: ['activeTab'] + }).resolves(false); + browser.permissions.contains.withArgs({ + origins: [''] + }).resolves(false); + const i = browser.tabs.captureVisibleTab.callCount; + await func(); + assert.strictEqual(browser.tabs.captureVisibleTab.callCount, i, + 'not called'); + }); + it('should call function', async () => { browser.runtime.getBrowserInfo.resolves({ + vender: 'Mozilla', version: '126.0a1' }); browser.permissions.contains.withArgs({ permissions: ['activeTab'] }).resolves(false); browser.permissions.contains.withArgs({ - permissions: [''] + origins: [''] }).resolves(true); const i = browser.tabs.captureVisibleTab.callCount; const windowId = browser.windows.WINDOW_ID_CURRENT; @@ -2614,11 +2620,15 @@ describe('browser', () => { it('should call function', async () => { browser.runtime.getBrowserInfo.resolves({ + vender: 'Mozilla', version: '126.0a1' }); browser.permissions.contains.withArgs({ permissions: ['activeTab'] }).resolves(true); + browser.permissions.contains.withArgs({ + origins: [''] + }).resolves(false); const i = browser.tabs.captureVisibleTab.callCount; const windowId = browser.windows.WINDOW_ID_CURRENT; const url = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' @@ -2631,10 +2641,34 @@ describe('browser', () => { assert.strictEqual(res, url, 'result'); }); + it('should not call function if permission is not granted', async () => { + browser.runtime.getBrowserInfo.resolves({ + vender: 'Foo', + version: '126.0.1' + }); + browser.permissions.contains.withArgs({ + permissions: ['activeTab'] + }).resolves(false); + browser.permissions.contains.withArgs({ + origins: [''] + }).resolves(false); + const i = browser.tabs.captureVisibleTab.callCount; + await func(); + assert.strictEqual(browser.tabs.captureVisibleTab.callCount, i, + 'not called'); + }); + it('should call function', async () => { browser.runtime.getBrowserInfo.resolves({ - version: '126.0a1' + vender: 'Foo', + version: '126.0.1' }); + browser.permissions.contains.withArgs({ + permissions: ['activeTab'] + }).resolves(true); + browser.permissions.contains.withArgs({ + origins: [''] + }).resolves(false); const i = browser.tabs.captureVisibleTab.callCount; const windowId = browser.windows.WINDOW_ID_CURRENT; const url = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' @@ -2649,8 +2683,15 @@ describe('browser', () => { it('should call function', async () => { browser.runtime.getBrowserInfo.resolves({ - version: '126.0a1' + vender: 'Foo', + version: '126.0.1' }); + browser.permissions.contains.withArgs({ + permissions: ['activeTab'] + }).resolves(false); + browser.permissions.contains.withArgs({ + origins: [''] + }).resolves(true); const i = browser.tabs.captureVisibleTab.callCount; const windowId = browser.windows.WINDOW_ID_CURRENT; const url = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='