|
1 /** |
|
2 * Any copyright is dedicated to the Public Domain. |
|
3 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
4 **/ |
|
5 |
|
6 var gTests = [ |
|
7 { |
|
8 name: "normal search (search service)", |
|
9 testText: "test search", |
|
10 expectText: "test+search" |
|
11 }, |
|
12 { |
|
13 name: "?-prefixed search (search service)", |
|
14 testText: "? foo ", |
|
15 expectText: "foo" |
|
16 } |
|
17 ]; |
|
18 |
|
19 function test() { |
|
20 waitForExplicitFinish(); |
|
21 |
|
22 let tab = gBrowser.selectedTab = gBrowser.addTab(); |
|
23 |
|
24 let searchObserver = function search_observer(aSubject, aTopic, aData) { |
|
25 let engine = aSubject.QueryInterface(Ci.nsISearchEngine); |
|
26 info("Observer: " + aData + " for " + engine.name); |
|
27 |
|
28 if (aData != "engine-added") |
|
29 return; |
|
30 |
|
31 if (engine.name != "POST Search") |
|
32 return; |
|
33 |
|
34 Services.search.defaultEngine = engine; |
|
35 |
|
36 registerCleanupFunction(function () { |
|
37 Services.search.removeEngine(engine); |
|
38 }); |
|
39 |
|
40 // ready to execute the tests! |
|
41 executeSoon(nextTest); |
|
42 }; |
|
43 |
|
44 Services.obs.addObserver(searchObserver, "browser-search-engine-modified", false); |
|
45 |
|
46 registerCleanupFunction(function () { |
|
47 gBrowser.removeTab(tab); |
|
48 |
|
49 Services.obs.removeObserver(searchObserver, "browser-search-engine-modified"); |
|
50 }); |
|
51 |
|
52 Services.search.addEngine("http://test:80/browser/browser/base/content/test/general/POSTSearchEngine.xml", |
|
53 Ci.nsISearchEngine.DATA_XML, null, false); |
|
54 } |
|
55 |
|
56 var gCurrTest; |
|
57 function nextTest() { |
|
58 if (gTests.length) { |
|
59 gCurrTest = gTests.shift(); |
|
60 doTest(); |
|
61 } else { |
|
62 finish(); |
|
63 } |
|
64 } |
|
65 |
|
66 function doTest() { |
|
67 info("Running test: " + gCurrTest.name); |
|
68 |
|
69 waitForLoad(function () { |
|
70 let loadedText = gBrowser.contentDocument.body.textContent; |
|
71 ok(loadedText, "search page loaded"); |
|
72 let needle = "searchterms=" + gCurrTest.expectText; |
|
73 is(loadedText, needle, "The query POST data should be returned in the response"); |
|
74 nextTest(); |
|
75 }); |
|
76 |
|
77 // Simulate a user entering search terms |
|
78 gURLBar.value = gCurrTest.testText; |
|
79 gURLBar.focus(); |
|
80 EventUtils.synthesizeKey("VK_RETURN", {}); |
|
81 } |
|
82 |
|
83 |
|
84 function waitForLoad(cb) { |
|
85 let browser = gBrowser.selectedBrowser; |
|
86 browser.addEventListener("load", function listener() { |
|
87 if (browser.currentURI.spec == "about:blank") |
|
88 return; |
|
89 info("Page loaded: " + browser.currentURI.spec); |
|
90 browser.removeEventListener("load", listener, true); |
|
91 |
|
92 cb(); |
|
93 }, true); |
|
94 } |