From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/browser/browser_ext_tabs_discard.js | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_tabs_discard.js (limited to 'browser/components/extensions/test/browser/browser_ext_tabs_discard.js') diff --git a/browser/components/extensions/test/browser/browser_ext_tabs_discard.js b/browser/components/extensions/test/browser/browser_ext_tabs_discard.js new file mode 100644 index 0000000000..818c29c6c3 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_tabs_discard.js @@ -0,0 +1,95 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +/* global gBrowser */ +"use strict"; + +add_task(async function test_discarded() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + permissions: ["tabs"], + }, + + background: async function () { + let tabs = await browser.tabs.query({ currentWindow: true }); + tabs.sort((tab1, tab2) => tab1.index - tab2.index); + + async function finishTest() { + try { + await browser.tabs.discard(tabs[0].id); + await browser.tabs.discard(tabs[2].id); + browser.test.succeed( + "attempting to discard an already discarded tab or the active tab should not throw error" + ); + } catch (e) { + browser.test.fail( + "attempting to discard an already discarded tab or the active tab should not throw error" + ); + } + let discardedTab = await browser.tabs.get(tabs[2].id); + browser.test.assertEq( + false, + discardedTab.discarded, + "attempting to discard the active tab should not have succeeded" + ); + + await browser.test.assertRejects( + browser.tabs.discard(999999999), + /Invalid tab ID/, + "attempt to discard invalid tabId should throw" + ); + await browser.test.assertRejects( + browser.tabs.discard([999999999, tabs[1].id]), + /Invalid tab ID/, + "attempt to discard a valid and invalid tabId should throw" + ); + discardedTab = await browser.tabs.get(tabs[1].id); + browser.test.assertEq( + false, + discardedTab.discarded, + "tab is still not discarded" + ); + + browser.test.notifyPass("test-finished"); + } + + browser.tabs.onUpdated.addListener(async function (tabId, updatedInfo) { + if ("discarded" in updatedInfo) { + browser.test.assertEq( + tabId, + tabs[0].id, + "discarding tab triggered onUpdated" + ); + let discardedTab = await browser.tabs.get(tabs[0].id); + browser.test.assertEq( + true, + discardedTab.discarded, + "discarded tab discard property" + ); + + await finishTest(); + } + }); + + browser.tabs.discard(tabs[0].id); + }, + }); + + BrowserTestUtils.loadURIString(gBrowser.browsers[0], "http://example.com"); + await BrowserTestUtils.browserLoaded(gBrowser.browsers[0]); + let tab1 = await BrowserTestUtils.openNewForegroundTab( + gBrowser, + "http://example.com" + ); + let tab2 = await BrowserTestUtils.openNewForegroundTab( + gBrowser, + "http://example.com" + ); + + await extension.startup(); + + await extension.awaitFinish("test-finished"); + await extension.unload(); + + BrowserTestUtils.removeTab(tab1); + BrowserTestUtils.removeTab(tab2); +}); -- cgit v1.2.3