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 /**
5 * Tests basic functionality of sources filtering (file search).
6 */
8 const TAB_URL = EXAMPLE_URL + "doc_script-switching-01.html";
10 let gTab, gDebuggee, gPanel, gDebugger;
11 let gSources, gSearchView, gSearchBox;
13 function test() {
14 // Debug test slaves are a bit slow at this test.
15 requestLongerTimeout(3);
17 initDebugger(TAB_URL).then(([aTab, aDebuggee, aPanel]) => {
18 gTab = aTab;
19 gDebuggee = aDebuggee;
20 gPanel = aPanel;
21 gDebugger = gPanel.panelWin;
22 gSources = gDebugger.DebuggerView.Sources;
23 gSearchView = gDebugger.DebuggerView.FilteredSources;
24 gSearchBox = gDebugger.DebuggerView.Filtering._searchbox;
26 waitForSourceShown(gPanel, "-01.js")
27 .then(bogusSearch)
28 .then(firstSearch)
29 .then(secondSearch)
30 .then(thirdSearch)
31 .then(fourthSearch)
32 .then(fifthSearch)
33 .then(sixthSearch)
34 .then(seventhSearch)
35 .then(() => closeDebuggerAndFinish(gPanel))
36 .then(null, aError => {
37 ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
38 });
39 });
40 }
42 function bogusSearch() {
43 let finished = promise.all([
44 ensureSourceIs(gPanel, "-01.js"),
45 ensureCaretAt(gPanel, 1),
46 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_NOT_FOUND)
47 ]);
49 setText(gSearchBox, "BOGUS");
51 return finished.then(() => promise.all([
52 ensureSourceIs(gPanel, "-01.js"),
53 ensureCaretAt(gPanel, 1),
54 verifyContents({ itemCount: 0, hidden: true })
55 ]));
56 }
58 function firstSearch() {
59 let finished = promise.all([
60 ensureSourceIs(gPanel, "-01.js"),
61 ensureCaretAt(gPanel, 1),
62 once(gDebugger, "popupshown"),
63 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
64 waitForSourceShown(gPanel, "-02.js")
65 ]);
67 setText(gSearchBox, "-02.js");
69 return finished.then(() => promise.all([
70 ensureSourceIs(gPanel, "-02.js"),
71 ensureCaretAt(gPanel, 1),
72 verifyContents({ itemCount: 1, hidden: false })
73 ]));
74 }
76 function secondSearch() {
77 let finished = promise.all([
78 once(gDebugger, "popupshown"),
79 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
80 waitForSourceShown(gPanel, "-01.js")
81 ])
82 .then(() => {
83 let finished = promise.all([
84 once(gDebugger, "popupshown"),
85 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
86 waitForCaretUpdated(gPanel, 5)
87 ])
88 .then(() => promise.all([
89 ensureSourceIs(gPanel, "-01.js"),
90 ensureCaretAt(gPanel, 5),
91 verifyContents({ itemCount: 1, hidden: false })
92 ]));
94 typeText(gSearchBox, ":5");
95 return finished;
96 });
98 setText(gSearchBox, ".*-01\.js");
99 return finished;
100 }
102 function thirdSearch() {
103 let finished = promise.all([
104 once(gDebugger, "popupshown"),
105 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
106 waitForSourceShown(gPanel, "-02.js")
107 ])
108 .then(() => {
109 let finished = promise.all([
110 once(gDebugger, "popupshown"),
111 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
112 waitForCaretUpdated(gPanel, 6, 12)
113 ])
114 .then(() => promise.all([
115 ensureSourceIs(gPanel, "-02.js"),
116 ensureCaretAt(gPanel, 6, 12),
117 verifyContents({ itemCount: 1, hidden: false })
118 ]));
120 typeText(gSearchBox, "#deb");
121 return finished;
122 });
124 setText(gSearchBox, ".*-02\.js");
125 return finished;
126 }
128 function fourthSearch() {
129 let finished = promise.all([
130 once(gDebugger, "popupshown"),
131 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
132 waitForSourceShown(gPanel, "-01.js")
133 ])
134 .then(() => {
135 let finished = promise.all([
136 once(gDebugger, "popupshown"),
137 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
138 waitForCaretUpdated(gPanel, 2, 9),
139 ])
140 .then(() => promise.all([
141 ensureSourceIs(gPanel, "-01.js"),
142 ensureCaretAt(gPanel, 2, 9),
143 verifyContents({ itemCount: 1, hidden: false })
144 // ...because we simply searched for ":" in the current file.
145 ]));
147 typeText(gSearchBox, "#:"); // # has precedence.
148 return finished;
149 });
151 setText(gSearchBox, ".*-01\.js");
152 return finished;
153 }
155 function fifthSearch() {
156 let finished = promise.all([
157 once(gDebugger, "popupshown"),
158 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
159 waitForSourceShown(gPanel, "-02.js")
160 ])
161 .then(() => {
162 let finished = promise.all([
163 once(gDebugger, "popuphidden"),
164 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_NOT_FOUND),
165 waitForCaretUpdated(gPanel, 1, 3)
166 ])
167 .then(() => promise.all([
168 ensureSourceIs(gPanel, "-02.js"),
169 ensureCaretAt(gPanel, 1, 3),
170 verifyContents({ itemCount: 0, hidden: true })
171 // ...because the searched label includes ":5", so nothing is found.
172 ]));
174 typeText(gSearchBox, ":5#*"); // # has precedence.
175 return finished;
176 });
178 setText(gSearchBox, ".*-02\.js");
179 return finished;
180 }
182 function sixthSearch() {
183 let finished = promise.all([
184 ensureSourceIs(gPanel, "-02.js"),
185 ensureCaretAt(gPanel, 1, 3),
186 once(gDebugger, "popupshown"),
187 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
188 waitForCaretUpdated(gPanel, 5)
189 ]);
191 backspaceText(gSearchBox, 2);
193 return finished.then(() => promise.all([
194 ensureSourceIs(gPanel, "-02.js"),
195 ensureCaretAt(gPanel, 5),
196 verifyContents({ itemCount: 1, hidden: false })
197 ]));
198 }
200 function seventhSearch() {
201 let finished = promise.all([
202 ensureSourceIs(gPanel, "-02.js"),
203 ensureCaretAt(gPanel, 5),
204 once(gDebugger, "popupshown"),
205 waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FILE_SEARCH_MATCH_FOUND),
206 waitForSourceShown(gPanel, "-01.js"),
207 ]);
209 backspaceText(gSearchBox, 6);
211 return finished.then(() => promise.all([
212 ensureSourceIs(gPanel, "-01.js"),
213 ensureCaretAt(gPanel, 1),
214 verifyContents({ itemCount: 2, hidden: false })
215 ]));
216 }
218 function verifyContents(aArgs) {
219 is(gSources.visibleItems.length, 2,
220 "The unmatched sources in the widget should not be hidden.");
221 is(gSearchView.itemCount, aArgs.itemCount,
222 "No sources should be displayed in the sources container after a bogus search.");
223 is(gSearchView.hidden, aArgs.hidden,
224 "No sources should be displayed in the sources container after a bogus search.");
225 }
227 registerCleanupFunction(function() {
228 gTab = null;
229 gDebuggee = null;
230 gPanel = null;
231 gDebugger = null;
232 gSources = null;
233 gSearchView = null;
234 gSearchBox = null;
235 });