forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			87 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * 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(aSubject, aTopic, aData) {
 | |
|       if (aTopic == "domwindowopened") {
 | |
|         ok(false, "Alert window opened");
 | |
|         let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget);
 | |
|         win.addEventListener("load", function() {
 | |
|           win.close();
 | |
|         }, {once: true});
 | |
|         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", {});
 | |
| }
 | 
