summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/tabs/browser_tabReorder_overflow.js
blob: a74677204f9b7818cc25946b75501d4459145dc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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");
});