Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 function test() {
5 let cw;
6 let win;
7 let groupItemId;
8 let prefix = 'start';
10 let assertTabViewIsHidden = function () {
11 ok(!win.TabView.isVisible(), prefix + ': tabview is hidden');
12 }
14 let assertNumberOfGroups = function (num) {
15 is(cw.GroupItems.groupItems.length, num, prefix + ': there should be ' + num + ' groups');
16 }
18 let assertNumberOfTabs = function (num) {
19 is(win.gBrowser.visibleTabs.length, num, prefix + ': there should be ' + num + ' tabs');
20 }
22 let assertNumberOfPinnedTabs = function (num) {
23 is(win.gBrowser._numPinnedTabs, num, prefix + ': there should be ' + num + ' pinned tabs');
24 }
26 let assertGroupItemPreserved = function () {
27 is(cw.GroupItems.groupItems[0].id, groupItemId, prefix + ': groupItem was preserved');
28 }
30 let assertValidPrerequisites = function () {
31 assertNumberOfTabs(1);
32 assertNumberOfGroups(1);
33 assertNumberOfPinnedTabs(0);
34 assertTabViewIsHidden();
35 }
37 let createTab = function (url) {
38 return win.gBrowser.loadOneTab(url || 'http://mochi.test:8888/', {inBackground: true});
39 }
41 let createBlankTab = function () {
42 return createTab('about:blank');
43 }
45 let finishTest = function () {
46 prefix = 'finish';
47 assertValidPrerequisites();
48 promiseWindowClosed(win).then(finish);
49 }
51 let testUndoCloseWithSelectedBlankTab = function () {
52 prefix = 'unpinned';
53 let tab = createTab();
54 assertNumberOfTabs(2);
56 afterAllTabsLoaded(function () {
57 win.gBrowser.removeTab(tab);
58 assertNumberOfTabs(1);
59 assertNumberOfPinnedTabs(0);
61 restoreTab(function () {
62 prefix = 'unpinned-restored';
63 assertValidPrerequisites();
64 assertGroupItemPreserved();
66 createBlankTab();
67 afterAllTabsLoaded(testUndoCloseWithSelectedBlankPinnedTab, win);
68 }, 0, win);
69 }, win);
70 }
72 let testUndoCloseWithSelectedBlankPinnedTab = function () {
73 prefix = 'pinned';
74 assertNumberOfTabs(2);
76 afterAllTabsLoaded(function () {
77 win.gBrowser.removeTab(win.gBrowser.tabs[0]);
78 win.gBrowser.pinTab(win.gBrowser.tabs[0]);
80 assertNumberOfTabs(1);
81 assertNumberOfPinnedTabs(1);
83 restoreTab(function () {
84 prefix = 'pinned-restored';
85 assertValidPrerequisites();
86 assertGroupItemPreserved();
88 createBlankTab();
89 win.gBrowser.removeTab(win.gBrowser.tabs[0]);
91 afterAllTabsLoaded(finishTest, win);
92 }, 0, win);
93 }, win);
94 }
96 waitForExplicitFinish();
98 newWindowWithTabView(window => {
99 win = window;
101 hideTabView(function () {
102 cw = win.TabView.getContentWindow();
103 groupItemId = cw.GroupItems.groupItems[0].id;
105 assertValidPrerequisites();
106 testUndoCloseWithSelectedBlankTab();
107 }, win);
108 });
109 }