fune/browser/base/content/test/about/browser_aboutHome_search_POST.js

60 lines
2.2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
ignoreAllUncaughtExceptions();
add_task(async function() {
info("Check POST search engine support");
await BrowserTestUtils.withNewTab({ gBrowser, url: "about:home" }, function(browser) {
return new Promise(resolve => {
let searchObserver = async function search_observer(subject, topic, data) {
let currEngine = Services.search.defaultEngine;
let engine = subject.QueryInterface(Ci.nsISearchEngine);
info("Observer: " + data + " for " + engine.name);
if (data != "engine-added")
return;
if (engine.name != "POST Search")
return;
Services.obs.removeObserver(searchObserver, "browser-search-engine-modified");
// Ready to execute the tests!
let needle = "Search for something awesome.";
let p = promiseContentSearchChange(browser, engine.name);
Services.search.defaultEngine = engine;
await p;
let promise = BrowserTestUtils.browserLoaded(browser);
await ContentTask.spawn(browser, { needle }, async function(args) {
let doc = content.document;
let el = doc.querySelector(["#searchText", "#newtab-search-text"]);
el.value = args.needle;
doc.getElementById("searchSubmit").click();
});
await promise;
// When the search results load, check them for correctness.
await ContentTask.spawn(browser, { needle }, async function(args) {
let loadedText = content.document.body.textContent;
ok(loadedText, "search page loaded");
is(loadedText, "searchterms=" + escape(args.needle.replace(/\s/g, "+")),
"Search text should arrive correctly");
});
Services.search.defaultEngine = currEngine;
try {
Services.search.removeEngine(engine);
} catch (ex) {}
resolve();
};
Services.obs.addObserver(searchObserver, "browser-search-engine-modified");
Services.search.addEngine("http://test:80/browser/browser/base/content/test/about/POSTSearchEngine.xml",
null, null, false);
});
});
});