summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/tabs/browser_tabReorder_overflow.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/tabs/browser_tabReorder_overflow.js')
-rw-r--r--browser/base/content/test/tabs/browser_tabReorder_overflow.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/browser/base/content/test/tabs/browser_tabReorder_overflow.js b/browser/base/content/test/tabs/browser_tabReorder_overflow.js
new file mode 100644
index 0000000000..a74677204f
--- /dev/null
+++ b/browser/base/content/test/tabs/browser_tabReorder_overflow.js
@@ -0,0 +1,62 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+requestLongerTimeout(2);
+
+add_task(async function () {
+ let initialTabsLength = gBrowser.tabs.length;
+
+ let arrowScrollbox = gBrowser.tabContainer.arrowScrollbox;
+ let tabMinWidth = parseInt(
+ getComputedStyle(gBrowser.selectedTab, null).minWidth
+ );
+
+ let width = ele => ele.getBoundingClientRect().width;
+
+ let tabCountForOverflow = Math.ceil(
+ (width(arrowScrollbox) / tabMinWidth) * 1.1
+ );
+
+ let newTab1 = (gBrowser.selectedTab = BrowserTestUtils.addTab(
+ gBrowser,
+ "about:robots",
+ { skipAnimation: true }
+ ));
+ let newTab2 = (gBrowser.selectedTab = BrowserTestUtils.addTab(
+ gBrowser,
+ "about:about",
+ { skipAnimation: true }
+ ));
+ let newTab3 = (gBrowser.selectedTab = BrowserTestUtils.addTab(
+ gBrowser,
+ "about:config",
+ { skipAnimation: true }
+ ));
+
+ await BrowserTestUtils.overflowTabs(registerCleanupFunction, window, {
+ overflowAtStart: false,
+ });
+
+ registerCleanupFunction(function () {
+ while (gBrowser.tabs.length > initialTabsLength) {
+ gBrowser.removeTab(
+ gBrowser.tabContainer.getItemAtIndex(initialTabsLength)
+ );
+ }
+ });
+
+ let tabs = gBrowser.tabs;
+ is(tabs.length, tabCountForOverflow, "new tabs are opened");
+ is(tabs[initialTabsLength], newTab1, "newTab1 position is correct");
+ is(tabs[initialTabsLength + 1], newTab2, "newTab2 position is correct");
+ is(tabs[initialTabsLength + 2], newTab3, "newTab3 position is correct");
+
+ await dragAndDrop(newTab1, newTab2, false);
+ tabs = gBrowser.tabs;
+ is(tabs.length, tabCountForOverflow, "tabs are still there");
+ is(tabs[initialTabsLength], newTab2, "newTab2 and newTab1 are swapped");
+ is(tabs[initialTabsLength + 1], newTab1, "newTab1 and newTab2 are swapped");
+ is(tabs[initialTabsLength + 2], newTab3, "newTab3 stays same place");
+});