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