1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/base/content/test/general/browser_keywordSearch_postData.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,94 @@ 1.4 +/** 1.5 + * Any copyright is dedicated to the Public Domain. 1.6 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.7 + **/ 1.8 + 1.9 +var gTests = [ 1.10 + { 1.11 + name: "normal search (search service)", 1.12 + testText: "test search", 1.13 + expectText: "test+search" 1.14 + }, 1.15 + { 1.16 + name: "?-prefixed search (search service)", 1.17 + testText: "? foo ", 1.18 + expectText: "foo" 1.19 + } 1.20 +]; 1.21 + 1.22 +function test() { 1.23 + waitForExplicitFinish(); 1.24 + 1.25 + let tab = gBrowser.selectedTab = gBrowser.addTab(); 1.26 + 1.27 + let searchObserver = function search_observer(aSubject, aTopic, aData) { 1.28 + let engine = aSubject.QueryInterface(Ci.nsISearchEngine); 1.29 + info("Observer: " + aData + " for " + engine.name); 1.30 + 1.31 + if (aData != "engine-added") 1.32 + return; 1.33 + 1.34 + if (engine.name != "POST Search") 1.35 + return; 1.36 + 1.37 + Services.search.defaultEngine = engine; 1.38 + 1.39 + registerCleanupFunction(function () { 1.40 + Services.search.removeEngine(engine); 1.41 + }); 1.42 + 1.43 + // ready to execute the tests! 1.44 + executeSoon(nextTest); 1.45 + }; 1.46 + 1.47 + Services.obs.addObserver(searchObserver, "browser-search-engine-modified", false); 1.48 + 1.49 + registerCleanupFunction(function () { 1.50 + gBrowser.removeTab(tab); 1.51 + 1.52 + Services.obs.removeObserver(searchObserver, "browser-search-engine-modified"); 1.53 + }); 1.54 + 1.55 + Services.search.addEngine("http://test:80/browser/browser/base/content/test/general/POSTSearchEngine.xml", 1.56 + Ci.nsISearchEngine.DATA_XML, null, false); 1.57 +} 1.58 + 1.59 +var gCurrTest; 1.60 +function nextTest() { 1.61 + if (gTests.length) { 1.62 + gCurrTest = gTests.shift(); 1.63 + doTest(); 1.64 + } else { 1.65 + finish(); 1.66 + } 1.67 +} 1.68 + 1.69 +function doTest() { 1.70 + info("Running test: " + gCurrTest.name); 1.71 + 1.72 + waitForLoad(function () { 1.73 + let loadedText = gBrowser.contentDocument.body.textContent; 1.74 + ok(loadedText, "search page loaded"); 1.75 + let needle = "searchterms=" + gCurrTest.expectText; 1.76 + is(loadedText, needle, "The query POST data should be returned in the response"); 1.77 + nextTest(); 1.78 + }); 1.79 + 1.80 + // Simulate a user entering search terms 1.81 + gURLBar.value = gCurrTest.testText; 1.82 + gURLBar.focus(); 1.83 + EventUtils.synthesizeKey("VK_RETURN", {}); 1.84 +} 1.85 + 1.86 + 1.87 +function waitForLoad(cb) { 1.88 + let browser = gBrowser.selectedBrowser; 1.89 + browser.addEventListener("load", function listener() { 1.90 + if (browser.currentURI.spec == "about:blank") 1.91 + return; 1.92 + info("Page loaded: " + browser.currentURI.spec); 1.93 + browser.removeEventListener("load", listener, true); 1.94 + 1.95 + cb(); 1.96 + }, true); 1.97 +}