browser/base/content/test/general/browser_keywordSearch_postData.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_postData.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,94 @@
     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 +    expectText: "test+search"
    1.14 +  },
    1.15 +  {
    1.16 +    name: "?-prefixed search (search service)",
    1.17 +    testText: "?   foo  ",
    1.18 +    expectText: "foo"
    1.19 +  }
    1.20 +];
    1.21 +
    1.22 +function test() {
    1.23 +  waitForExplicitFinish();
    1.24 +
    1.25 +  let tab = gBrowser.selectedTab = gBrowser.addTab();
    1.26 +
    1.27 +  let searchObserver = function search_observer(aSubject, aTopic, aData) {
    1.28 +    let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
    1.29 +    info("Observer: " + aData + " for " + engine.name);
    1.30 +
    1.31 +    if (aData != "engine-added")
    1.32 +      return;
    1.33 +
    1.34 +    if (engine.name != "POST Search")
    1.35 +      return;
    1.36 +
    1.37 +    Services.search.defaultEngine = engine;
    1.38 +
    1.39 +    registerCleanupFunction(function () {
    1.40 +      Services.search.removeEngine(engine);
    1.41 +    });
    1.42 +
    1.43 +    // ready to execute the tests!
    1.44 +    executeSoon(nextTest);
    1.45 +  };
    1.46 +
    1.47 +  Services.obs.addObserver(searchObserver, "browser-search-engine-modified", false);
    1.48 +
    1.49 +  registerCleanupFunction(function () {
    1.50 +    gBrowser.removeTab(tab);
    1.51 +
    1.52 +    Services.obs.removeObserver(searchObserver, "browser-search-engine-modified");
    1.53 +  });
    1.54 +
    1.55 +  Services.search.addEngine("http://test:80/browser/browser/base/content/test/general/POSTSearchEngine.xml",
    1.56 +                            Ci.nsISearchEngine.DATA_XML, null, false);
    1.57 +}
    1.58 +
    1.59 +var gCurrTest;
    1.60 +function nextTest() {
    1.61 +  if (gTests.length) {
    1.62 +    gCurrTest = gTests.shift();
    1.63 +    doTest();
    1.64 +  } else {
    1.65 +    finish();
    1.66 +  }
    1.67 +}
    1.68 +
    1.69 +function doTest() {
    1.70 +  info("Running test: " + gCurrTest.name);
    1.71 +
    1.72 +  waitForLoad(function () {
    1.73 +    let loadedText = gBrowser.contentDocument.body.textContent;
    1.74 +    ok(loadedText, "search page loaded");
    1.75 +    let needle = "searchterms=" + gCurrTest.expectText;
    1.76 +    is(loadedText, needle, "The query POST data should be returned in the response");
    1.77 +    nextTest();
    1.78 +  });
    1.79 +
    1.80 +  // Simulate a user entering search terms
    1.81 +  gURLBar.value = gCurrTest.testText;
    1.82 +  gURLBar.focus();
    1.83 +  EventUtils.synthesizeKey("VK_RETURN", {});
    1.84 +}
    1.85 +
    1.86 +
    1.87 +function waitForLoad(cb) {
    1.88 +  let browser = gBrowser.selectedBrowser;
    1.89 +  browser.addEventListener("load", function listener() {
    1.90 +    if (browser.currentURI.spec == "about:blank")
    1.91 +      return;
    1.92 +    info("Page loaded: " + browser.currentURI.spec);
    1.93 +    browser.removeEventListener("load", listener, true);
    1.94 +
    1.95 +    cb();
    1.96 +  }, true);
    1.97 +}

mercurial