|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 let contentWindow; |
|
5 let appTab; |
|
6 let originalTab; |
|
7 let exitButton; |
|
8 |
|
9 // ---------- |
|
10 function test() { |
|
11 waitForExplicitFinish(); |
|
12 |
|
13 window.addEventListener("tabviewshown", onTabViewLoadedAndShown, false); |
|
14 TabView.toggle(); |
|
15 } |
|
16 |
|
17 // ---------- |
|
18 function onTabViewLoadedAndShown() { |
|
19 window.removeEventListener("tabviewshown", onTabViewLoadedAndShown, false); |
|
20 ok(TabView.isVisible(), "Tab View is visible"); |
|
21 |
|
22 contentWindow = document.getElementById("tab-view").contentWindow; |
|
23 |
|
24 // establish initial state |
|
25 is(contentWindow.GroupItems.groupItems.length, 1, |
|
26 "we start with one group (the default)"); |
|
27 is(gBrowser.tabs.length, 1, "we start with one tab"); |
|
28 originalTab = gBrowser.tabs[0]; |
|
29 ok(!originalTab.pinned, "the original tab is not an app tab"); |
|
30 |
|
31 // create an app tab |
|
32 appTab = gBrowser.loadOneTab("about:blank"); |
|
33 is(gBrowser.tabs.length, 2, "we now have two tabs"); |
|
34 gBrowser.pinTab(appTab); |
|
35 |
|
36 // verify that the normal tab is selected |
|
37 ok(originalTab.selected, "the normal tab is selected"); |
|
38 |
|
39 // hit the exit button for the first time |
|
40 exitButton = contentWindow.document.getElementById("exit-button"); |
|
41 ok(exitButton, "Exit button exists"); |
|
42 |
|
43 window.addEventListener("tabviewhidden", onTabViewHiddenForNormalTab, false); |
|
44 EventUtils.sendMouseEvent({ type: "click" }, exitButton, contentWindow); |
|
45 } |
|
46 |
|
47 // ---------- |
|
48 function onTabViewHiddenForNormalTab() { |
|
49 window.removeEventListener("tabviewhidden", onTabViewHiddenForNormalTab, false); |
|
50 ok(!TabView.isVisible(), "Tab View is not visible"); |
|
51 |
|
52 // verify that the normal tab is still selected |
|
53 ok(originalTab.selected, "the normal tab is still selected"); |
|
54 |
|
55 // select the app tab |
|
56 gBrowser.selectedTab = appTab; |
|
57 ok(appTab.selected, "the app tab is now selected"); |
|
58 |
|
59 // go back to tabview |
|
60 window.addEventListener("tabviewshown", onTabViewShown, false); |
|
61 TabView.toggle(); |
|
62 } |
|
63 |
|
64 // ---------- |
|
65 function onTabViewShown() { |
|
66 window.removeEventListener("tabviewshown", onTabViewShown, false); |
|
67 ok(TabView.isVisible(), "Tab View is visible"); |
|
68 |
|
69 // hit the exit button again |
|
70 window.addEventListener("tabviewhidden", onTabViewHiddenForAppTab, false); |
|
71 EventUtils.sendMouseEvent({ type: "click" }, exitButton, contentWindow); |
|
72 } |
|
73 |
|
74 // ---------- |
|
75 function onTabViewHiddenForAppTab() { |
|
76 window.removeEventListener("tabviewhidden", onTabViewHiddenForAppTab, false); |
|
77 ok(!TabView.isVisible(), "Tab View is not visible"); |
|
78 |
|
79 // verify that the app tab is still selected |
|
80 ok(appTab.selected, "the app tab is still selected"); |
|
81 |
|
82 // clean up |
|
83 gBrowser.selectedTab = originalTab; |
|
84 gBrowser.removeTab(appTab); |
|
85 |
|
86 is(gBrowser.tabs.length, 1, "we finish with one tab"); |
|
87 ok(originalTab.selected, |
|
88 "we finish with the normal tab selected"); |
|
89 ok(!TabView.isVisible(), "we finish with Tab View not visible"); |
|
90 |
|
91 finish(); |
|
92 } |