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 --- ...browser_ext_tabs_move_array_multiple_windows.js | 160 +++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_tabs_move_array_multiple_windows.js (limited to 'browser/components/extensions/test/browser/browser_ext_tabs_move_array_multiple_windows.js') diff --git a/browser/components/extensions/test/browser/browser_ext_tabs_move_array_multiple_windows.js b/browser/components/extensions/test/browser/browser_ext_tabs_move_array_multiple_windows.js new file mode 100644 index 0000000000..484197cbc5 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_tabs_move_array_multiple_windows.js @@ -0,0 +1,160 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +add_task(async function moveMultipleWindows() { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { permissions: ["tabs"] }, + background: async function () { + let numToId = new Map(); + let idToNum = new Map(); + let windowToInitialTabs = new Map(); + + async function createWindow(nums) { + let window = await browser.windows.create({ + url: nums.map(k => `https://example.com/?${k}`), + }); + let tabIds = window.tabs.map(tab => tab.id); + windowToInitialTabs.set(window.id, tabIds); + for (let i = 0; i < nums.length; ++i) { + numToId.set(nums[i], tabIds[i]); + idToNum.set(tabIds[i], nums[i]); + } + return window.id; + } + + let win1 = await createWindow([0, 1, 2, 3, 4]); + let win2 = await createWindow([5, 6, 7, 8, 9]); + + async function getNums(windowId) { + let tabs = await browser.tabs.query({ windowId }); + return tabs.map(tab => idToNum.get(tab.id)); + } + + async function check(msg, expected) { + let nums1 = getNums(win1); + let nums2 = getNums(win2); + browser.test.assertEq( + JSON.stringify(expected), + JSON.stringify({ win1: await nums1, win2: await nums2 }), + `Check ${msg}` + ); + } + + async function reset() { + for (let [windowId, tabIds] of windowToInitialTabs) { + await browser.tabs.move(tabIds, { index: 0, windowId }); + } + } + + async function move(nums, params) { + await browser.tabs.move( + nums.map(k => numToId.get(k)), + params + ); + } + + let tests = [ + { + move: [1, 6], + params: { index: 0 }, + result: { win1: [1, 0, 2, 3, 4], win2: [6, 5, 7, 8, 9] }, + }, + { + move: [6, 1], + params: { index: 0 }, + result: { win1: [1, 0, 2, 3, 4], win2: [6, 5, 7, 8, 9] }, + }, + { + move: [1, 6], + params: { index: 0, windowId: win2 }, + result: { win1: [0, 2, 3, 4], win2: [1, 6, 5, 7, 8, 9] }, + }, + { + move: [6, 1], + params: { index: 0, windowId: win2 }, + result: { win1: [0, 2, 3, 4], win2: [6, 1, 5, 7, 8, 9] }, + }, + { + move: [1, 6], + params: { index: -1 }, + result: { win1: [0, 2, 3, 4, 1], win2: [5, 7, 8, 9, 6] }, + }, + { + move: [6, 1], + params: { index: -1 }, + result: { win1: [0, 2, 3, 4, 1], win2: [5, 7, 8, 9, 6] }, + }, + { + move: [1, 6], + params: { index: -1, windowId: win2 }, + result: { win1: [0, 2, 3, 4], win2: [5, 7, 8, 9, 1, 6] }, + }, + { + move: [6, 1], + params: { index: -1, windowId: win2 }, + result: { win1: [0, 2, 3, 4], win2: [5, 7, 8, 9, 6, 1] }, + }, + { + move: [2, 1, 7, 6], + params: { index: 3 }, + result: { win1: [0, 3, 2, 1, 4], win2: [5, 8, 7, 6, 9] }, + }, + { + move: [1, 2, 3, 4], + params: { index: 0, windowId: win2 }, + result: { win1: [0], win2: [1, 2, 3, 4, 5, 6, 7, 8, 9] }, + }, + { + move: [0, 1, 2, 3], + params: { index: 5, windowId: win2 }, + result: { win1: [4], win2: [5, 6, 7, 8, 9, 0, 1, 2, 3] }, + }, + { + move: [1, 2, 3, 4, 5, 6, 7, 8, 9], + params: { index: 0, windowId: win2 }, + result: { win1: [0], win2: [1, 2, 3, 4, 5, 6, 7, 8, 9] }, + }, + { + move: [5, 6, 7, 8, 9, 0, 1, 2, 3], + params: { index: 0, windowId: win2 }, + result: { win1: [4], win2: [5, 6, 7, 8, 9, 0, 1, 2, 3] }, + }, + { + move: [5, 1, 6, 2, 7, 3, 8, 4, 9], + params: { index: 0, windowId: win2 }, + result: { win1: [0], win2: [5, 1, 6, 2, 7, 3, 8, 4, 9] }, + }, + { + move: [5, 1, 6, 2, 7, 3, 8, 4, 9], + params: { index: 1, windowId: win2 }, + result: { win1: [0], win2: [5, 1, 6, 2, 7, 3, 8, 4, 9] }, + }, + { + move: [5, 1, 6, 2, 7, 3, 8, 4, 9], + params: { index: 999, windowId: win2 }, + result: { win1: [0], win2: [5, 1, 6, 2, 7, 3, 8, 4, 9] }, + }, + ]; + + const initial = { win1: [0, 1, 2, 3, 4], win2: [5, 6, 7, 8, 9] }; + await check("initial", initial); + for (let test of tests) { + browser.test.log(JSON.stringify(test)); + await move(test.move, test.params); + await check("move", test.result); + await reset(); + await check("reset", initial); + } + + await browser.windows.remove(win1); + await browser.windows.remove(win2); + browser.test.notifyPass("tabs.move"); + }, + }); + + await extension.startup(); + await extension.awaitFinish("tabs.move"); + await extension.unload(); +}); -- cgit v1.2.3