forked from mirrors/gecko-dev
60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
var tabs = [];
|
|
|
|
function addTab(aURL) {
|
|
tabs.push(
|
|
BrowserTestUtils.addTab(gBrowser, aURL, {
|
|
skipAnimation: true,
|
|
})
|
|
);
|
|
}
|
|
|
|
function switchTab(index) {
|
|
return BrowserTestUtils.switchTab(gBrowser, gBrowser.tabs[index]);
|
|
}
|
|
|
|
function testAttrib(tabIndex, attrib, expected) {
|
|
is(
|
|
gBrowser.tabs[tabIndex].hasAttribute(attrib),
|
|
expected,
|
|
`tab #${tabIndex} should${
|
|
expected ? "" : "n't"
|
|
} have the ${attrib} attribute`
|
|
);
|
|
}
|
|
|
|
add_setup(async function () {
|
|
is(gBrowser.tabs.length, 1, "one tab is open initially");
|
|
|
|
addTab("http://mochi.test:8888/#0");
|
|
addTab("http://mochi.test:8888/#1");
|
|
addTab("http://mochi.test:8888/#2");
|
|
addTab("http://mochi.test:8888/#3");
|
|
|
|
is(gBrowser.tabs.length, 5, "five tabs are open after setup");
|
|
});
|
|
|
|
// Add several new tabs in sequence, hiding some, to ensure that the
|
|
// correct attributes get set
|
|
add_task(async function test() {
|
|
testAttrib(0, "visuallyselected", true);
|
|
|
|
await switchTab(2);
|
|
|
|
testAttrib(2, "visuallyselected", true);
|
|
});
|
|
|
|
add_task(async function test_pinning() {
|
|
await switchTab(3);
|
|
testAttrib(3, "visuallyselected", true);
|
|
// Causes gBrowser.tabs to change indices
|
|
gBrowser.pinTab(gBrowser.tabs[3]);
|
|
testAttrib(0, "visuallyselected", true);
|
|
});
|
|
|
|
add_task(function cleanup() {
|
|
tabs.forEach(gBrowser.removeTab, gBrowser);
|
|
});
|