browser/base/content/test/general/browser_keywordSearch_postData.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:7e78d8c68f1f
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 }

mercurial