diff options
Diffstat (limited to 'browser/base/content/test/general/browser_keywordSearch.js')
-rw-r--r-- | browser/base/content/test/general/browser_keywordSearch.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_keywordSearch.js b/browser/base/content/test/general/browser_keywordSearch.js new file mode 100644 index 000000000..cf8bd0c0e --- /dev/null +++ b/browser/base/content/test/general/browser_keywordSearch.js @@ -0,0 +1,88 @@ +/** + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + **/ + +var gTests = [ + { + name: "normal search (search service)", + testText: "test search", + searchURL: Services.search.defaultEngine.getSubmission("test search", null, "keyword").uri.spec + }, + { + name: "?-prefixed search (search service)", + testText: "? foo ", + searchURL: Services.search.defaultEngine.getSubmission("foo", null, "keyword").uri.spec + } +]; + +function test() { + waitForExplicitFinish(); + + let windowObserver = { + observe: function(aSubject, aTopic, aData) { + if (aTopic == "domwindowopened") { + ok(false, "Alert window opened"); + let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); + win.addEventListener("load", function() { + win.removeEventListener("load", arguments.callee, false); + win.close(); + }, false); + executeSoon(finish); + } + } + }; + + Services.ww.registerNotification(windowObserver); + + let tab = gBrowser.selectedTab = gBrowser.addTab(); + + let listener = { + onStateChange: function onLocationChange(webProgress, req, flags, status) { + // Only care about document starts + let docStart = Ci.nsIWebProgressListener.STATE_IS_DOCUMENT | + Ci.nsIWebProgressListener.STATE_START; + if (!(flags & docStart)) + return; + + info("received document start"); + + ok(req instanceof Ci.nsIChannel, "req is a channel"); + is(req.originalURI.spec, gCurrTest.searchURL, "search URL was loaded"); + info("Actual URI: " + req.URI.spec); + + req.cancel(Components.results.NS_ERROR_FAILURE); + + executeSoon(nextTest); + } + }; + gBrowser.addProgressListener(listener); + + registerCleanupFunction(function () { + Services.ww.unregisterNotification(windowObserver); + + gBrowser.removeProgressListener(listener); + gBrowser.removeTab(tab); + }); + + nextTest(); +} + +var gCurrTest; +function nextTest() { + if (gTests.length) { + gCurrTest = gTests.shift(); + doTest(); + } else { + finish(); + } +} + +function doTest() { + info("Running test: " + gCurrTest.name); + + // Simulate a user entering search terms + gURLBar.value = gCurrTest.testText; + gURLBar.focus(); + EventUtils.synthesizeKey("VK_RETURN", {}); +} |