browser/base/content/test/general/browser_keywordSearch.js

changeset 0
6474c204b198
     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 +}

mercurial