gecko/browser/components/tabview/test/browser_tabview_bug624727_perwindowpb.js
Bellindira Castillo [:bellindira] 601ab9cc2b Bug 806716 - Port browser_tabview_bug624727.js to the new per-window PB APIs; r=ehsan
DONTBUILD since this is NPOTB in global PB builds

--HG--
rename : browser/components/tabview/test/browser_tabview_bug624727.js => browser/components/tabview/test/browser_tabview_bug624727_perwindowpb.js
2012-12-04 16:45:41 -06:00

144 lines
4.5 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
let createGroupItem = function (aWindow) {
let cw = aWindow.TabView.getContentWindow();
let bounds = new cw.Rect(20, 20, 400, 200);
let groupItem = new cw.GroupItem([], {bounds: bounds, immediately: true});
cw.UI.setActive(groupItem);
let groupItemId = groupItem.id;
registerCleanupFunction(function() {
let groupItem = cw.GroupItems.groupItem(groupItemId);
if (groupItem)
groupItem.close();
});
for (let i=0; i<3; i++)
aWindow.gBrowser.addTab('about:blank');
}
let assertTabViewIsHidden = function (aWindow, prefix) {
ok(!aWindow.TabView.isVisible(), prefix + ': tabview is hidden');
}
let assertNumberOfTabs = function (aWindow, prefix, num) {
is(aWindow.gBrowser.tabs.length, num, prefix + ': there are ' + num + ' tabs');
}
let assertNumberOfPinnedTabs = function (aWindow, prefix, num) {
is(aWindow.gBrowser._numPinnedTabs, num, prefix + ': there are ' + num + ' pinned tabs');
}
let assertNumberOfGroups = function (aCW, prefix, num) {
is(aCW.GroupItems.groupItems.length, num, prefix + ': there are ' + num + ' groups');
}
let assertOneTabInGroup = function (prefix, groupItem) {
is(groupItem.getChildren().length, 1, prefix + ': group contains one tab');
}
let assertValidPrerequisites = function (aWindow, prefix) {
assertNumberOfTabs(aWindow, prefix, 1);
assertNumberOfPinnedTabs(aWindow, prefix, 0);
assertTabViewIsHidden(aWindow, prefix);
}
let assertValidSetup = function (aWindow, prefix) {
let cw = aWindow.TabView.getContentWindow();
assertNumberOfGroups(cw, prefix, 2);
assertNumberOfTabs(aWindow, prefix, 4);
assertNumberOfPinnedTabs(aWindow, prefix, 2);
let [group1, group2] = cw.GroupItems.groupItems;
assertOneTabInGroup(prefix, group1);
assertOneTabInGroup(prefix, group2);
}
let testStateAfterEnteringPB = function (aWindow, aCallback) {
let prefix = 'window is private';
ok(PrivateBrowsingUtils.isWindowPrivate(aWindow), prefix);
assertTabViewIsHidden(aWindow, prefix);
showTabView(function () {
let cw = aWindow.TabView.getContentWindow();
assertNumberOfGroups(cw, prefix, 1);
assertNumberOfTabs(aWindow, prefix, 1);
assertOneTabInGroup(prefix, cw.GroupItems.groupItems[0]);
aCallback();
}, aWindow);
}
let testStateAfterLeavingPB = function (aWindow) {
let prefix = 'window is not private';
ok(!PrivateBrowsingUtils.isWindowPrivate(aWindow), prefix);
assertTabViewIsHidden(aWindow, prefix);
showTabView(function () {
assertValidSetup(aWindow, prefix);
finishTest(aWindow);
}, aWindow);
}
let finishTest = function (aWindow) {
let cw = aWindow.TabView.getContentWindow();
// Remove pinned tabs
aWindow.gBrowser.removeTab(aWindow.gBrowser.tabs[0]);
aWindow.gBrowser.removeTab(aWindow.gBrowser.tabs[0]);
cw.GroupItems.groupItems[1].closeAll();
hideTabView(function () {
assertValidPrerequisites(aWindow, 'exit');
assertNumberOfGroups(cw, 'exit', 1);
aWindow.close();
finish();
}, aWindow);
}
let testOnWindow = function(aIsPrivate, aCallback) {
let win = OpenBrowserWindow({private: aIsPrivate});
win.addEventListener("load", function onLoad() {
win.removeEventListener("load", onLoad, false);
executeSoon(function() { aCallback(win) });
}, false);
}
waitForExplicitFinish();
testOnWindow(false, function(publicWindow) {
registerCleanupFunction(function () publicWindow.TabView.hide());
assertValidPrerequisites(publicWindow, 'start');
showTabView(function () {
let cw = publicWindow.TabView.getContentWindow();
assertNumberOfGroups(cw, 'start', 1);
createGroupItem(publicWindow);
afterAllTabsLoaded(function () {
// Setup
let groupItems = cw.GroupItems.groupItems;
let [tabItem1, tabItem2, ] = groupItems[1].getChildren();
publicWindow.gBrowser.pinTab(tabItem1.tab);
publicWindow.gBrowser.pinTab(tabItem2.tab);
assertValidSetup(publicWindow, 'setup');
hideTabView(function() {
testOnWindow(true, function(privateWindow) {
testStateAfterEnteringPB(privateWindow, function() {
privateWindow.close();
hideTabView(function() {
testStateAfterLeavingPB(publicWindow);
}, publicWindow);
});
});
}, publicWindow);
});
}, publicWindow);
});
}