2 gPrefService.setBoolPref(
"browser.ctrlTab.previews",
true);
10 ctrlTabTest([2] , 1, 0);
11 ctrlTabTest([2, 3, 1], 2, 2);
12 ctrlTabTest([] , 5, 2);
15 let selectedIndex = gBrowser.tabContainer.selectedIndex;
19 is(gBrowser.tabContainer.selectedIndex, selectedIndex,
20 "Ctrl+Tab -> Ctrl+Shift+Tab keeps the selected tab");
24 let
tabs = gBrowser.mTabs.length;
26 EventUtils.synthesizeKey(
"w", {
ctrlKey:
true });
27 is(gBrowser.mTabs.length, tabs - 1,
"Ctrl+Tab -> Ctrl+W removes one tab");
32 ctrlTabTest([2, 1, 0], 9, 1);
38 selectTabs([1, 2, 0]);
40 let selectedTab = gBrowser.selectedTab;
41 let tabToRemove = gBrowser.mTabs[1];
45 EventUtils.synthesizeKey(
"w", {
ctrlKey:
true });
46 ok(!tabToRemove.parentNode,
47 "Ctrl+Tab*2 -> Ctrl+W removes the second most recently selected tab");
52 ok(gBrowser.selectedTab == selectedTab,
53 "Ctrl+Tab*2 -> Ctrl+W -> Ctrl+Shift+Tab*2 keeps the selected tab");
55 gBrowser.removeTab(gBrowser.tabContainer.lastChild);
58 ctrlTabTest([1], 1, 0);
60 gBrowser.removeTab(gBrowser.tabContainer.lastChild);
64 let focusedWindow = document.commandDispatcher.focusedWindow;
65 let eventConsumed =
true;
66 let detectKeyEvent =
function (
event) {
67 eventConsumed =
event.getPreventDefault();
69 document.addEventListener(
"keypress", detectKeyEvent,
false);
71 document.removeEventListener(
"keypress", detectKeyEvent,
false);
72 ok(eventConsumed,
"Ctrl+Tab consumed by the tabbed browser if one tab is open");
73 is(focusedWindow, document.commandDispatcher.focusedWindow,
74 "Ctrl+Tab doesn't change focus if one tab is open");
78 if (
gPrefService.prefHasUserValue(
"browser.ctrlTab.previews"))
83 function pressCtrlTab(aShiftKey)
84 EventUtils.synthesizeKey(
"VK_TAB", {
ctrlKey:
true, shiftKey: !!aShiftKey });
86 function releaseCtrl()
87 EventUtils.synthesizeKey(
"VK_CONTROL", { type:
"keyup" });
92 function assertTabs(
aTabs) {
93 var
tabs = gBrowser.mTabs.length;
95 while (gBrowser.mTabs.length > 1)
96 gBrowser.removeCurrentTab();
97 throw "expected " +
aTabs +
" open tabs, got " +
tabs;
101 function selectTabs(
tabs) {
102 tabs.forEach(
function (index) {
103 gBrowser.selectedTab = gBrowser.mTabs[index];
107 function ctrlTabTest(tabsToSelect, tabTimes, expectedIndex) {
108 selectTabs(tabsToSelect);
110 var indexStart = gBrowser.tabContainer.selectedIndex;
111 var tabCount = gBrowser.mTabs.length;
112 var normalized = tabTimes % tabCount;
113 var where = normalized == 1 ?
"back to the previously selected tab" :
114 normalized +
" tabs back in most-recently-selected order";
116 for (let
i = 0;
i < tabTimes;
i++) {
120 is(gBrowser.tabContainer.selectedIndex, indexStart,
121 "Selected tab doesn't change while tabbing");
126 "With " + tabCount +
" tabs open, Ctrl+Tab opens the preview panel");
131 "Releasing Ctrl closes the preview panel");
134 "With " + tabCount +
" tabs open, Ctrl+Tab doesn't open the preview panel");
137 is(gBrowser.tabContainer.selectedIndex, expectedIndex,
138 "With "+ tabCount +
" tabs open and tab " + indexStart
139 +
" selected, Ctrl+Tab*" + tabTimes +
" goes " + where);
return e ctrlKey(chr<' '||!chars||chars.indexOf(chr)>-1)
_getSelectedPageStyle s i
restoreHistoryPrecursor aTabs