|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 /* Tests for bug 537013 to ensure proper tab-sequestration of find bar. */ |
|
5 |
|
6 let tabs = []; |
|
7 let texts = [ |
|
8 "This side up.", |
|
9 "The world is coming to an end. Please log off.", |
|
10 "Klein bottle for sale. Inquire within.", |
|
11 "To err is human; to forgive is not company policy." |
|
12 ]; |
|
13 |
|
14 let Clipboard = Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard); |
|
15 let HasFindClipboard = Clipboard.supportsFindClipboard(); |
|
16 |
|
17 function addTabWithText(aText, aCallback) { |
|
18 let newTab = gBrowser.addTab("data:text/html,<h1 id='h1'>" + aText + "</h1>"); |
|
19 tabs.push(newTab); |
|
20 gBrowser.selectedTab = newTab; |
|
21 } |
|
22 |
|
23 function setFindString(aString) { |
|
24 gFindBar.open(); |
|
25 gFindBar._findField.focus(); |
|
26 gFindBar._findField.select(); |
|
27 EventUtils.sendString(aString); |
|
28 is(gFindBar._findField.value, aString, "Set the field correctly!"); |
|
29 } |
|
30 |
|
31 let newWindow; |
|
32 |
|
33 function test() { |
|
34 waitForExplicitFinish(); |
|
35 registerCleanupFunction(function () { |
|
36 while (tabs.length) { |
|
37 gBrowser.removeTab(tabs.pop()); |
|
38 } |
|
39 }); |
|
40 texts.forEach(function(aText) addTabWithText(aText)); |
|
41 |
|
42 // Set up the first tab |
|
43 gBrowser.selectedTab = tabs[0]; |
|
44 |
|
45 setFindString(texts[0]); |
|
46 // Turn on highlight for testing bug 891638 |
|
47 gFindBar.getElement("highlight").checked = true; |
|
48 |
|
49 // Make sure the second tab is correct, then set it up |
|
50 gBrowser.selectedTab = tabs[1]; |
|
51 gBrowser.selectedTab.addEventListener("TabFindInitialized", continueTests1); |
|
52 // Initialize the findbar |
|
53 gFindBar; |
|
54 } |
|
55 function continueTests1() { |
|
56 gBrowser.selectedTab.removeEventListener("TabFindInitialized", |
|
57 continueTests1); |
|
58 ok(true, "'TabFindInitialized' event properly dispatched!"); |
|
59 ok(gFindBar.hidden, "Second tab doesn't show find bar!"); |
|
60 gFindBar.open(); |
|
61 is(gFindBar._findField.value, texts[0], |
|
62 "Second tab kept old find value for new initialization!"); |
|
63 setFindString(texts[1]); |
|
64 |
|
65 // Confirm the first tab is still correct, ensure re-hiding works as expected |
|
66 gBrowser.selectedTab = tabs[0]; |
|
67 ok(!gFindBar.hidden, "First tab shows find bar!"); |
|
68 // When the Find Clipboard is supported, this test not relevant. |
|
69 if (!HasFindClipboard) |
|
70 is(gFindBar._findField.value, texts[0], "First tab persists find value!"); |
|
71 ok(gFindBar.getElement("highlight").checked, |
|
72 "Highlight button state persists!"); |
|
73 |
|
74 // While we're here, let's test bug 253793 |
|
75 gBrowser.reload(); |
|
76 gBrowser.addEventListener("DOMContentLoaded", continueTests2, true); |
|
77 } |
|
78 |
|
79 function continueTests2() { |
|
80 gBrowser.removeEventListener("DOMContentLoaded", continueTests2, true); |
|
81 ok(!gFindBar.getElement("highlight").checked, "Highlight button reset!"); |
|
82 gFindBar.close(); |
|
83 ok(gFindBar.hidden, "First tab doesn't show find bar!"); |
|
84 gBrowser.selectedTab = tabs[1]; |
|
85 ok(!gFindBar.hidden, "Second tab shows find bar!"); |
|
86 // Test for bug 892384 |
|
87 is(gFindBar._findField.getAttribute("focused"), "true", |
|
88 "Open findbar refocused on tab change!"); |
|
89 gURLBar.focus(); |
|
90 gBrowser.selectedTab = tabs[0]; |
|
91 ok(gFindBar.hidden, "First tab doesn't show find bar!"); |
|
92 |
|
93 // Set up a third tab, no tests here |
|
94 gBrowser.selectedTab = tabs[2]; |
|
95 setFindString(texts[2]); |
|
96 |
|
97 // Now we jump to the second, then first, and then fourth |
|
98 gBrowser.selectedTab = tabs[1]; |
|
99 // Test for bug 892384 |
|
100 ok(!gFindBar._findField.hasAttribute("focused"), |
|
101 "Open findbar not refocused on tab change!"); |
|
102 gBrowser.selectedTab = tabs[0]; |
|
103 gBrowser.selectedTab = tabs[3]; |
|
104 ok(gFindBar.hidden, "Fourth tab doesn't show find bar!"); |
|
105 is(gFindBar, gBrowser.getFindBar(), "Find bar is right one!"); |
|
106 gFindBar.open(); |
|
107 // Disabled the following assertion due to intermittent failure on OSX 10.6 Debug. |
|
108 if (!HasFindClipboard) { |
|
109 is(gFindBar._findField.value, texts[1], |
|
110 "Fourth tab has second tab's find value!"); |
|
111 } |
|
112 |
|
113 newWindow = gBrowser.replaceTabWithWindow(tabs.pop()); |
|
114 whenDelayedStartupFinished(newWindow, checkNewWindow); |
|
115 } |
|
116 |
|
117 // Test that findbar gets restored when a tab is moved to a new window. |
|
118 function checkNewWindow() { |
|
119 ok(!newWindow.gFindBar.hidden, "New window shows find bar!"); |
|
120 // Disabled the following assertion due to intermittent failure on OSX 10.6 Debug. |
|
121 if (!HasFindClipboard) { |
|
122 is(newWindow.gFindBar._findField.value, texts[1], |
|
123 "New window find bar has correct find value!"); |
|
124 } |
|
125 ok(!newWindow.gFindBar.getElement("find-next").disabled, |
|
126 "New window findbar has enabled buttons!"); |
|
127 newWindow.close(); |
|
128 finish(); |
|
129 } |