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