|
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 prefix = 'start'; |
|
7 |
|
8 let createGroupItem = function () { |
|
9 let bounds = new cw.Rect(20, 20, 200, 200); |
|
10 let groupItem = new cw.GroupItem([], {bounds: bounds, immediately: true}); |
|
11 |
|
12 cw.UI.setActive(groupItem); |
|
13 gBrowser.loadOneTab('http://mochi.test:8888/', {inBackground: true}); |
|
14 gBrowser.loadOneTab('http://mochi.test:8888/', {inBackground: true}); |
|
15 |
|
16 let groupItemId = groupItem.id; |
|
17 registerCleanupFunction(function() { |
|
18 let groupItem = cw.GroupItems.groupItem(groupItemId); |
|
19 if (groupItem) |
|
20 groupItem.close(); |
|
21 }); |
|
22 } |
|
23 |
|
24 let getGroupItem = function (index) { |
|
25 return cw.GroupItems.groupItems[index]; |
|
26 } |
|
27 |
|
28 let activateFirstGroupItem = function () { |
|
29 let activeTabItem = getGroupItem(0).getChild(0); |
|
30 cw.GroupItems.updateActiveGroupItemAndTabBar(activeTabItem); |
|
31 } |
|
32 |
|
33 let assertTabViewIsHidden = function () { |
|
34 ok(!TabView.isVisible(), prefix + ': tabview is hidden'); |
|
35 } |
|
36 |
|
37 let assertNumberOfGroups = function (num) { |
|
38 is(cw.GroupItems.groupItems.length, num, prefix + ': there are ' + num + ' groups'); |
|
39 } |
|
40 |
|
41 let assertNumberOfTabs = function (num) { |
|
42 is(gBrowser.visibleTabs.length, num, prefix + ': there are ' + num + ' tabs'); |
|
43 } |
|
44 |
|
45 let assertNumberOfPinnedTabs = function (num) { |
|
46 is(gBrowser._numPinnedTabs, num, prefix + ': there are ' + num + ' pinned tabs'); |
|
47 } |
|
48 |
|
49 let assertNumberOfTabsInGroup = function (groupItem, num) { |
|
50 is(groupItem.getChildren().length, num, prefix + ': there are ' + num + ' tabs in the group'); |
|
51 } |
|
52 |
|
53 let assertValidPrerequisites = function () { |
|
54 assertNumberOfTabs(1); |
|
55 assertNumberOfGroups(1); |
|
56 assertNumberOfPinnedTabs(0); |
|
57 } |
|
58 |
|
59 let finishTest = function () { |
|
60 prefix = 'finish'; |
|
61 assertValidPrerequisites(); |
|
62 assertTabViewIsHidden(); |
|
63 finish(); |
|
64 } |
|
65 |
|
66 let testRestoreTabFromInactiveGroup = function () { |
|
67 prefix = 'restore'; |
|
68 activateFirstGroupItem(); |
|
69 |
|
70 let groupItem = getGroupItem(1); |
|
71 let tabItem = groupItem.getChild(0); |
|
72 |
|
73 EventUtils.synthesizeMouseAtCenter( |
|
74 tabItem.$close[0], {}, TabView.getContentWindow()); |
|
75 assertNumberOfTabsInGroup(groupItem, 1); |
|
76 |
|
77 restoreTab(function () { |
|
78 assertNumberOfTabsInGroup(groupItem, 2); |
|
79 |
|
80 activateFirstGroupItem(); |
|
81 gBrowser.removeTab(gBrowser.tabs[1]); |
|
82 gBrowser.removeTab(gBrowser.tabs[1]); |
|
83 hideTabView(finishTest); |
|
84 }); |
|
85 } |
|
86 |
|
87 waitForExplicitFinish(); |
|
88 assertTabViewIsHidden(); |
|
89 registerCleanupFunction(function () TabView.hide()); |
|
90 |
|
91 showTabView(function () { |
|
92 cw = TabView.getContentWindow(); |
|
93 assertValidPrerequisites(); |
|
94 |
|
95 createGroupItem(); |
|
96 afterAllTabsLoaded(testRestoreTabFromInactiveGroup); |
|
97 }); |
|
98 } |