1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/base/content/test/general/browser_keywordSearch.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,88 @@ 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 + searchURL: Services.search.defaultEngine.getSubmission("test search", null, "keyword").uri.spec 1.14 + }, 1.15 + { 1.16 + name: "?-prefixed search (search service)", 1.17 + testText: "? foo ", 1.18 + searchURL: Services.search.defaultEngine.getSubmission("foo", null, "keyword").uri.spec 1.19 + } 1.20 +]; 1.21 + 1.22 +function test() { 1.23 + waitForExplicitFinish(); 1.24 + 1.25 + let windowObserver = { 1.26 + observe: function(aSubject, aTopic, aData) { 1.27 + if (aTopic == "domwindowopened") { 1.28 + ok(false, "Alert window opened"); 1.29 + let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); 1.30 + win.addEventListener("load", function() { 1.31 + win.removeEventListener("load", arguments.callee, false); 1.32 + win.close(); 1.33 + }, false); 1.34 + executeSoon(finish); 1.35 + } 1.36 + } 1.37 + }; 1.38 + 1.39 + Services.ww.registerNotification(windowObserver); 1.40 + 1.41 + let tab = gBrowser.selectedTab = gBrowser.addTab(); 1.42 + 1.43 + let listener = { 1.44 + onStateChange: function onLocationChange(webProgress, req, flags, status) { 1.45 + // Only care about document starts 1.46 + let docStart = Ci.nsIWebProgressListener.STATE_IS_DOCUMENT | 1.47 + Ci.nsIWebProgressListener.STATE_START; 1.48 + if (!(flags & docStart)) 1.49 + return; 1.50 + 1.51 + info("received document start"); 1.52 + 1.53 + ok(req instanceof Ci.nsIChannel, "req is a channel"); 1.54 + is(req.originalURI.spec, gCurrTest.searchURL, "search URL was loaded"); 1.55 + info("Actual URI: " + req.URI.spec); 1.56 + 1.57 + req.cancel(Components.results.NS_ERROR_FAILURE); 1.58 + 1.59 + executeSoon(nextTest); 1.60 + } 1.61 + }; 1.62 + gBrowser.addProgressListener(listener); 1.63 + 1.64 + registerCleanupFunction(function () { 1.65 + Services.ww.unregisterNotification(windowObserver); 1.66 + 1.67 + gBrowser.removeProgressListener(listener); 1.68 + gBrowser.removeTab(tab); 1.69 + }); 1.70 + 1.71 + nextTest(); 1.72 +} 1.73 + 1.74 +var gCurrTest; 1.75 +function nextTest() { 1.76 + if (gTests.length) { 1.77 + gCurrTest = gTests.shift(); 1.78 + doTest(); 1.79 + } else { 1.80 + finish(); 1.81 + } 1.82 +} 1.83 + 1.84 +function doTest() { 1.85 + info("Running test: " + gCurrTest.name); 1.86 + 1.87 + // Simulate a user entering search terms 1.88 + gURLBar.value = gCurrTest.testText; 1.89 + gURLBar.focus(); 1.90 + EventUtils.synthesizeKey("VK_RETURN", {}); 1.91 +}