mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-05 05:30:29 +00:00
Bug 1434229 - Test tab reorder when tabbar is overflown r=dao
MozReview-Commit-ID: FgusKqb0XF6 *** --HG-- extra : rebase_source : 823d6ac24b551b05e4f04af2db0b30b31e6ed830
This commit is contained in:
parent
c4a85a5a4d
commit
72ce6f775e
@ -33,6 +33,7 @@ support-files = file_new_tab_page.html
|
||||
[browser_preloadedBrowser_zoom.js]
|
||||
[browser_reload_deleted_file.js]
|
||||
skip-if = (debug && os == 'mac') || (debug && os == 'linux' && bits == 64) #Bug 1421183, disabled on Linux/OSX for leaked windows
|
||||
[browser_tabReorder_overflow.js]
|
||||
[browser_tabswitch_updatecommands.js]
|
||||
[browser_viewsource_of_data_URI_in_file_process.js]
|
||||
[browser_visibleTabs_bookmarkAllTabs.js]
|
||||
|
@ -0,0 +1,59 @@
|
||||
/* 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 tabs = gBrowser.tabs;
|
||||
let tabMinWidth = parseInt(getComputedStyle(gBrowser.selectedTab, null).minWidth);
|
||||
|
||||
let rect = ele => ele.getBoundingClientRect();
|
||||
let width = ele => rect(ele).width;
|
||||
let height = ele => rect(ele).height;
|
||||
let left = ele => rect(ele).left;
|
||||
let top = ele => rect(ele).top;
|
||||
|
||||
let tabCountForOverflow = Math.ceil(width(arrowScrollbox) / tabMinWidth);
|
||||
|
||||
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});
|
||||
|
||||
while (tabs.length < tabCountForOverflow) {
|
||||
BrowserTestUtils.addTab(gBrowser, "about:blank", { skipAnimation: true });
|
||||
}
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
while (tabs.length > initialTabsLength) {
|
||||
gBrowser.removeTab(gBrowser.tabs[initialTabsLength]);
|
||||
}
|
||||
});
|
||||
|
||||
is(gBrowser.tabs.length, tabCountForOverflow, "new tabs are opened");
|
||||
is(gBrowser.tabs[initialTabsLength], newTab1, "newTab1 position is correct");
|
||||
is(gBrowser.tabs[initialTabsLength + 1], newTab2, "newTab2 position is correct");
|
||||
is(gBrowser.tabs[initialTabsLength + 2], newTab3, "newTab3 position is correct");
|
||||
|
||||
async function dragAndDrop(tab1, tab2) {
|
||||
let event = {
|
||||
clientX: left(tab2) + width(tab2) / 2 + 10,
|
||||
clientY: top(tab2) + height(tab2) / 2,
|
||||
};
|
||||
|
||||
let originalTPos = tab1._tPos;
|
||||
EventUtils.synthesizeDrop(tab1, tab2, null, "move", window, window, event);
|
||||
await BrowserTestUtils.waitForCondition(() => tab1._tPos != originalTPos,
|
||||
"Waiting for tab position to be updated");
|
||||
}
|
||||
|
||||
await dragAndDrop(newTab1, newTab2);
|
||||
is(gBrowser.tabs.length, tabCountForOverflow, "tabs are still there");
|
||||
is(gBrowser.tabs[initialTabsLength], newTab2, "newTab2 and newTab1 are swapped");
|
||||
is(gBrowser.tabs[initialTabsLength + 1], newTab1, "newTab1 and newTab2 are swapped");
|
||||
is(gBrowser.tabs[initialTabsLength + 2], newTab3, "newTab3 stays same place");
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user