mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 1041534 - Refactor search tests to remove some code duplication. r=MattN
This commit is contained in:
parent
5d377d2e9f
commit
407761efa7
@ -1,12 +1,17 @@
|
||||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim:set ts=2 sw=2 sts=2 et: */
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
Components.utils.import("resource://gre/modules/NetUtil.jsm");
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Components.utils.import("resource://gre/modules/FileUtils.jsm");
|
||||
Components.utils.import("resource://gre/modules/Promise.jsm");
|
||||
Components.utils.import("resource://testing-common/AppInfo.jsm");
|
||||
const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/FileUtils.jsm");
|
||||
Cu.import("resource://gre/modules/osfile.jsm");
|
||||
Cu.import("resource://gre/modules/NetUtil.jsm");
|
||||
Cu.import("resource://gre/modules/Promise.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://testing-common/AppInfo.jsm");
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
|
||||
const BROWSER_SEARCH_PREF = "browser.search.";
|
||||
const NS_APP_SEARCH_DIR = "SrchPlugns";
|
||||
@ -42,6 +47,17 @@ function removeMetadata()
|
||||
}
|
||||
}
|
||||
|
||||
function getSearchMetadata()
|
||||
{
|
||||
// Check that search-metadata.json has been created
|
||||
let metadata = gProfD.clone();
|
||||
metadata.append("search-metadata.json");
|
||||
do_check_true(metadata.exists());
|
||||
|
||||
do_print("Parsing metadata");
|
||||
return readJSONFile(metadata);
|
||||
}
|
||||
|
||||
function removeCacheFile()
|
||||
{
|
||||
let file = gProfD.clone();
|
||||
@ -138,3 +154,80 @@ function isSubObjectOf(expectedObj, actualObj) {
|
||||
// Expand the amount of information available in error logs
|
||||
Services.prefs.setBoolPref("browser.search.log", true);
|
||||
|
||||
/**
|
||||
* After useHttpServer() is called, this string contains the URL of the "data"
|
||||
* directory, including the final slash.
|
||||
*/
|
||||
let gDataUrl;
|
||||
|
||||
/**
|
||||
* Initializes the HTTP server and ensures that it is terminated when tests end.
|
||||
*
|
||||
* @return The HttpServer object in case further customization is needed.
|
||||
*/
|
||||
function useHttpServer() {
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
gDataUrl = "http://localhost:" + httpServer.identity.primaryPort + "/data/";
|
||||
do_register_cleanup(() => httpServer.stop(() => {}));
|
||||
return httpServer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds test engines and returns a promise resolved when they are installed.
|
||||
*
|
||||
* The engines are added in the given order.
|
||||
*
|
||||
* @param aItems
|
||||
* Array of objects with the following properties:
|
||||
* {
|
||||
* name: Engine name, used to wait for it to be loaded.
|
||||
* xmlFileName: Name of the XML file in the "data" folder.
|
||||
* srcFileName: Name of the SRC file in the "data" folder.
|
||||
* iconFileName: Name of the icon associated to the SRC file.
|
||||
* details: Array containing the parameters of addEngineWithDetails,
|
||||
* except for the engine name. Alternative to xmlFileName.
|
||||
* }
|
||||
*/
|
||||
let addTestEngines = Task.async(function* (aItems) {
|
||||
if (!gDataUrl) {
|
||||
do_throw("useHttpServer must be called before addTestEngines.");
|
||||
}
|
||||
|
||||
let engines = [];
|
||||
|
||||
for (let item of aItems) {
|
||||
do_print("Adding engine: " + item.name);
|
||||
yield new Promise((resolve, reject) => {
|
||||
Services.obs.addObserver(function obs(subject, topic, data) {
|
||||
try {
|
||||
let engine = subject.QueryInterface(Ci.nsISearchEngine);
|
||||
do_print("Observed " + data + " for " + engine.name);
|
||||
if (data != "engine-added" || engine.name != item.name) {
|
||||
return;
|
||||
}
|
||||
|
||||
Services.obs.removeObserver(obs, "browser-search-engine-modified");
|
||||
engines.push(engine);
|
||||
resolve();
|
||||
} catch (ex) {
|
||||
reject(ex);
|
||||
}
|
||||
}, "browser-search-engine-modified", false);
|
||||
|
||||
if (item.xmlFileName) {
|
||||
Services.search.addEngine(gDataUrl + item.xmlFileName,
|
||||
Ci.nsISearchEngine.DATA_XML, null, false);
|
||||
} else if (item.srcFileName) {
|
||||
Services.search.addEngine(gDataUrl + item.srcFileName,
|
||||
Ci.nsISearchEngine.DATA_TEXT,
|
||||
gDataUrl + item.iconFileName, false);
|
||||
} else {
|
||||
Services.search.addEngineWithDetails(item.name, ...item.details);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return engines;
|
||||
});
|
||||
|
@ -7,12 +7,6 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
let gHttpServer;
|
||||
let gBaseUrl;
|
||||
|
||||
Components.utils.import("resource://testing-common/httpd.js");
|
||||
|
||||
// Override the prompt service and nsIPrompt, since the search service currently
|
||||
// prompts in response to certain installation failures we test here
|
||||
// XXX this should disappear once bug 863474 is fixed
|
||||
@ -69,7 +63,7 @@ add_test(function simple_callback_test() {
|
||||
do_throw("search callback returned error: " + errorCode);
|
||||
}
|
||||
}
|
||||
Services.search.addEngine(gBaseUrl + "/data/engine.xml",
|
||||
Services.search.addEngine(gDataUrl + "engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false, searchCallback);
|
||||
});
|
||||
@ -87,7 +81,7 @@ add_test(function duplicate_failure_test() {
|
||||
}
|
||||
}
|
||||
// Re-add the same engine added in the previous test
|
||||
Services.search.addEngine(gBaseUrl + "/data/engine.xml",
|
||||
Services.search.addEngine(gDataUrl + "engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false, searchCallback);
|
||||
});
|
||||
@ -112,15 +106,7 @@ add_test(function load_failure_test() {
|
||||
|
||||
function run_test() {
|
||||
updateAppInfo();
|
||||
|
||||
gHttpServer = new HttpServer();
|
||||
gHttpServer.start(-1);
|
||||
gHttpServer.registerDirectory("/", do_get_cwd());
|
||||
gBaseUrl = "http://localhost:" + gHttpServer.identity.primaryPort;
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
gHttpServer.stop(function() {});
|
||||
});
|
||||
useHttpServer();
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
@ -8,40 +8,22 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
useHttpServer();
|
||||
|
||||
Components.utils.import("resource://testing-common/httpd.js");
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
let waitForEngines = {
|
||||
"Test search engine": 1,
|
||||
"A second test engine": 1
|
||||
};
|
||||
|
||||
function search_observer(aSubject, aTopic, aData) {
|
||||
let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
|
||||
do_print("Observer: " + aData + " for " + engine.name);
|
||||
|
||||
if (aData != "engine-added") {
|
||||
return;
|
||||
}
|
||||
|
||||
// If the engine is defined in `waitForEngines`, remove it from the list
|
||||
if (waitForEngines[engine.name]) {
|
||||
delete waitForEngines[engine.name];
|
||||
} else {
|
||||
// This engine is not one we're waiting for, so bail out early.
|
||||
return;
|
||||
}
|
||||
|
||||
// Only continue when both engines have been loaded.
|
||||
if (Object.keys(waitForEngines).length)
|
||||
return;
|
||||
add_task(function* test_defaultEngine() {
|
||||
let [engine1, engine2] = yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
{ name: "A second test engine", xmlFileName: "engine2.xml" },
|
||||
]);
|
||||
|
||||
let search = Services.search;
|
||||
|
||||
let engine1 = search.getEngineByName("Test search engine");
|
||||
let engine2 = search.getEngineByName("A second test engine");
|
||||
|
||||
search.defaultEngine = engine1;
|
||||
do_check_eq(search.defaultEngine, engine1);
|
||||
search.defaultEngine = engine2
|
||||
@ -68,32 +50,4 @@ function search_observer(aSubject, aTopic, aData) {
|
||||
do_check_eq(search.defaultEngine, engine1);
|
||||
engine2.hidden = false;
|
||||
do_check_eq(search.defaultEngine, engine2);
|
||||
|
||||
do_test_finished();
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
|
||||
});
|
||||
|
||||
do_test_pending();
|
||||
|
||||
Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
|
||||
|
||||
Services.search.addEngine(baseUrl + "/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
Services.search.addEngine(baseUrl + "/data/engine2.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
}
|
||||
});
|
||||
|
@ -7,7 +7,6 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
const SEARCH_APP_DIR = 1;
|
||||
|
||||
function run_test() {
|
||||
|
@ -1,8 +1,6 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
/*
|
||||
* Test that invalid engine files with xml extensions will not break
|
||||
* initialization. See Bug 940446.
|
||||
|
@ -7,9 +7,6 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
// Metadata to write to search-metadata.json for the test.
|
||||
let gMetadata = {"[profile]/test-search-engine.xml":{"used":true}};
|
||||
|
||||
|
@ -7,16 +7,18 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
useHttpServer();
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function test_multiIcon() {
|
||||
let engine = Services.search.getEngineByName("IconsTest");
|
||||
do_check_neq(engine, null);
|
||||
|
||||
do_print("Running tests on IconsTest engine");
|
||||
add_task(function* test_multipleIcons() {
|
||||
let [engine] = yield addTestEngines([
|
||||
{ name: "IconsTest", xmlFileName: "engineImages.xml" },
|
||||
]);
|
||||
|
||||
do_print("The default should be the 16x16 icon");
|
||||
do_check_true(engine.iconURI.spec.contains("ico16"));
|
||||
@ -44,35 +46,4 @@ Cu.import("resource://testing-common/httpd.js");
|
||||
}));
|
||||
|
||||
do_test_finished();
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(4444);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
});
|
||||
|
||||
do_test_pending();
|
||||
|
||||
let observer = function(aSubject, aTopic, aData) {
|
||||
if (aData == "engine-loaded") {
|
||||
test_multiIcon();
|
||||
}
|
||||
};
|
||||
|
||||
Services.obs.addObserver(observer, "browser-search-engine-modified", false);
|
||||
|
||||
do_print("Adding engine with multiple images");
|
||||
Services.search.addEngine("http://localhost:4444/data/engineImages.xml",
|
||||
Ci.nsISearchEngine.DATA_XML, null, false);
|
||||
|
||||
do_timeout(12000, function() {
|
||||
do_throw("Timeout");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -1,13 +1,6 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
let Cu = Components.utils;
|
||||
let Ci = Components.interfaces;
|
||||
|
||||
Cu.import("resource://gre/modules/osfile.jsm");
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
|
||||
/*
|
||||
* test_nocache: Start search engine
|
||||
* - without search.json
|
||||
@ -17,21 +10,19 @@ Cu.import("resource://testing-common/httpd.js");
|
||||
* - search.json is created.
|
||||
*/
|
||||
|
||||
|
||||
function run_test()
|
||||
{
|
||||
removeCache();
|
||||
updateAppInfo();
|
||||
do_load_manifest("data/chrome.manifest");
|
||||
useHttpServer();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
add_task(function* test_nocache() {
|
||||
let search = Services.search;
|
||||
|
||||
do_test_pending();
|
||||
|
||||
// Check that cache is created at startup
|
||||
afterCache(function cacheCreated() {
|
||||
// Check that search.json has been created.
|
||||
@ -39,63 +30,36 @@ function run_test()
|
||||
cache.append("search.json");
|
||||
do_check_true(cache.exists());
|
||||
});
|
||||
yield new Promise((resolve, reject) => search.init(rv => {
|
||||
Components.isSuccessCode(rv) ? resolve() : reject();
|
||||
}));
|
||||
|
||||
// Perform initialization
|
||||
search.init(function ss_initialized(rv) {
|
||||
do_check_true(Components.isSuccessCode(rv));
|
||||
// Add engine and wait for cache update
|
||||
yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
]);
|
||||
|
||||
do_print("Setting up observer");
|
||||
function observer(aSubject, aTopic, aData) {
|
||||
do_print("Observing topic " + aTopic);
|
||||
if ("engine-added" == aData) {
|
||||
let engine = search.getEngineByName("Test search engine");
|
||||
if (!engine) {
|
||||
return;
|
||||
}
|
||||
Services.obs.removeObserver(observer, "browser-search-engine-modified");
|
||||
do_print("Engine has been added, let's wait for the cache to be built");
|
||||
afterCache(function() {
|
||||
do_print("Success");
|
||||
do_print("Engine has been added, let's wait for the cache to be built");
|
||||
yield new Promise(resolve => afterCache(resolve));
|
||||
|
||||
Task.spawn(function task() {
|
||||
do_print("Searching test engine in cache");
|
||||
try {
|
||||
let path = OS.Path.join(OS.Constants.Path.profileDir, "search.json");
|
||||
let data = yield OS.File.read(path);
|
||||
let text = new TextDecoder().decode(data);
|
||||
let cache = JSON.parse(text);
|
||||
let found = false;
|
||||
for (let dirName in cache.directories) {
|
||||
for (let engine of cache.directories[dirName].engines) {
|
||||
if (engine._id == "[app]/test-search-engine.xml") {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
do_check_true(found);
|
||||
} catch (ex) {
|
||||
do_throw(ex);
|
||||
} finally {
|
||||
removeCache();
|
||||
httpServer.stop(function() {
|
||||
// httpServer doesn't seem to stop cleanly if there is no callback
|
||||
});
|
||||
do_test_finished();
|
||||
}
|
||||
});
|
||||
});
|
||||
do_print("Searching test engine in cache");
|
||||
let path = OS.Path.join(OS.Constants.Path.profileDir, "search.json");
|
||||
let data = yield OS.File.read(path);
|
||||
let text = new TextDecoder().decode(data);
|
||||
let cache = JSON.parse(text);
|
||||
let found = false;
|
||||
for (let dirName in cache.directories) {
|
||||
for (let engine of cache.directories[dirName].engines) {
|
||||
if (engine._id == "[app]/test-search-engine.xml") {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
};
|
||||
Services.obs.addObserver(observer, "browser-search-engine-modified", false);
|
||||
}
|
||||
if (found) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
do_check_true(found);
|
||||
|
||||
// Add an engine, check if it appears in the cache
|
||||
search.addEngine("http://localhost:" + httpServer.identity.primaryPort +
|
||||
"/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
});
|
||||
}
|
||||
removeCache();
|
||||
});
|
||||
|
@ -19,90 +19,43 @@
|
||||
* and configuration of Firefox.
|
||||
*/
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
const Cr = Components.results;
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
|
||||
|
||||
function run_test()
|
||||
{
|
||||
do_print("Preparing test");
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
do_load_manifest("data/chrome.manifest");
|
||||
useHttpServer();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
add_task(function* test_nodb_pluschanges() {
|
||||
let [engine1, engine2] = yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
{ name: "Sherlock test search engine", srcFileName: "engine.src",
|
||||
iconFileName: "ico-size-16x16-png.ico" },
|
||||
]);
|
||||
|
||||
let search = Services.search;
|
||||
|
||||
do_print("Setting up observer");
|
||||
function observer(aSubject, aTopic, aData) {
|
||||
do_print("Observing topic " + aTopic);
|
||||
if ("engine-added" == aData) {
|
||||
let engine1 = search.getEngineByName("Test search engine");
|
||||
let engine2 = search.getEngineByName("Sherlock test search engine");
|
||||
do_print("Currently, engine1 is " + engine1);
|
||||
do_print("Currently, engine2 is " + engine2);
|
||||
if(engine1 && engine2)
|
||||
{
|
||||
search.moveEngine(engine1, 0);
|
||||
search.moveEngine(engine2, 1);
|
||||
do_print("Next step is forcing flush");
|
||||
do_timeout(0,
|
||||
function() {
|
||||
do_print("Forcing flush");
|
||||
// Force flush
|
||||
// Note: the timeout is needed, to avoid some reentrency
|
||||
// issues in nsSearchService.
|
||||
search.QueryInterface(Ci.nsIObserver).
|
||||
observe(observer, "quit-application", "<no verb>");
|
||||
});
|
||||
afterCommit(
|
||||
function()
|
||||
{
|
||||
do_print("Commit complete");
|
||||
// Check that search-metadata.json has been created
|
||||
let metadata = gProfD.clone();
|
||||
metadata.append("search-metadata.json");
|
||||
do_check_true(metadata.exists());
|
||||
search.moveEngine(engine1, 0);
|
||||
search.moveEngine(engine2, 1);
|
||||
|
||||
// Check that the entries are placed as specified correctly
|
||||
let stream = NetUtil.newChannel(metadata).open();
|
||||
do_print("Parsing metadata");
|
||||
let json = parseJsonFromStream(stream);
|
||||
do_check_eq(json["[app]/test-search-engine.xml"].order, 1);
|
||||
do_check_eq(json["[profile]/sherlock-test-search-engine.xml"].order, 2);
|
||||
// This is needed to avoid some reentrency issues in nsSearchService.
|
||||
do_print("Next step is forcing flush");
|
||||
yield new Promise(resolve => do_execute_soon(resolve));
|
||||
|
||||
do_print("Cleaning up");
|
||||
httpServer.stop(function() {});
|
||||
stream.close(); // Stream must be closed under Windows
|
||||
removeMetadata();
|
||||
do_test_finished();
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
Services.obs.addObserver(observer, "browser-search-engine-modified",
|
||||
false);
|
||||
do_print("Forcing flush");
|
||||
let promiseCommit = new Promise(resolve => afterCommit(resolve));
|
||||
search.QueryInterface(Ci.nsIObserver)
|
||||
.observe(null, "quit-application", "");
|
||||
yield promiseCommit;
|
||||
do_print("Commit complete");
|
||||
|
||||
do_test_pending();
|
||||
// Check that the entries are placed as specified correctly
|
||||
let json = getSearchMetadata();
|
||||
do_check_eq(json["[app]/test-search-engine.xml"].order, 1);
|
||||
do_check_eq(json["[profile]/sherlock-test-search-engine.xml"].order, 2);
|
||||
|
||||
search.addEngine(baseUrl + "/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
search.addEngine(baseUrl + "/data/engine.src",
|
||||
Ci.nsISearchEngine.DATA_TEXT,
|
||||
baseUrl + "/data/ico-size-16x16-png.ico",
|
||||
false);
|
||||
|
||||
do_timeout(120000, function() {
|
||||
do_throw("Timeout");
|
||||
});
|
||||
}
|
||||
do_print("Cleaning up");
|
||||
removeMetadata();
|
||||
});
|
||||
|
@ -3,10 +3,6 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
Components.utils.import("resource://testing-common/httpd.js");
|
||||
|
||||
let gTestLog = [];
|
||||
|
||||
/**
|
||||
@ -62,13 +58,9 @@ function search_observer(subject, topic, data) {
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
useHttpServer();
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
|
||||
});
|
||||
|
||||
@ -76,9 +68,7 @@ function run_test() {
|
||||
|
||||
Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
|
||||
|
||||
Services.search.addEngine("http://localhost:" +
|
||||
httpServer.identity.primaryPort +
|
||||
"/data/engine.xml",
|
||||
Services.search.addEngine(gDataUrl + "engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
}
|
||||
|
@ -8,15 +8,6 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
|
||||
let waitForEngines = {
|
||||
"Test search engine": 1,
|
||||
"A second test engine": 1
|
||||
};
|
||||
|
||||
const PREF_BRANCH = "browser.search.";
|
||||
|
||||
/**
|
||||
@ -35,47 +26,35 @@ function setLocalizedPref(aPrefName, aValue) {
|
||||
} catch (ex) {}
|
||||
}
|
||||
|
||||
function search_observer(aSubject, aTopic, aData) {
|
||||
let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
|
||||
do_print("Observer: " + aData + " for " + engine.name);
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
useHttpServer();
|
||||
|
||||
if (aData != "engine-added") {
|
||||
return;
|
||||
}
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
// If the engine is defined in `waitForEngines`, remove it from the list
|
||||
if (waitForEngines[engine.name]) {
|
||||
delete waitForEngines[engine.name];
|
||||
} else {
|
||||
// This engine is not one we're waiting for, so bail out early.
|
||||
return;
|
||||
}
|
||||
|
||||
// Only continue when both engines have been loaded.
|
||||
if (Object.keys(waitForEngines).length) {
|
||||
return;
|
||||
}
|
||||
add_task(function* test_prefSync() {
|
||||
let [engine1, engine2] = yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
{ name: "A second test engine", xmlFileName: "engine2.xml" },
|
||||
]);
|
||||
|
||||
let search = Services.search;
|
||||
|
||||
let engine1Name = "Test search engine";
|
||||
let engine2Name = "A second test engine";
|
||||
let engine1 = search.getEngineByName(engine1Name);
|
||||
let engine2 = search.getEngineByName(engine2Name);
|
||||
|
||||
// Initial sanity check:
|
||||
search.defaultEngine = engine1;
|
||||
do_check_eq(search.defaultEngine, engine1);
|
||||
search.currentEngine = engine1;
|
||||
do_check_eq(search.currentEngine, engine1);
|
||||
|
||||
setLocalizedPref("defaultenginename", engine2Name);
|
||||
setLocalizedPref("defaultenginename", engine2.name);
|
||||
// Default engine should be synced with the pref
|
||||
do_check_eq(search.defaultEngine, engine2);
|
||||
// Current engine should've stayed the same
|
||||
do_check_eq(search.currentEngine, engine1);
|
||||
|
||||
setLocalizedPref("selectedEngine", engine2Name);
|
||||
setLocalizedPref("selectedEngine", engine2.name);
|
||||
// Default engine should've stayed the same
|
||||
do_check_eq(search.defaultEngine, engine2);
|
||||
// Current engine should've been updated
|
||||
@ -86,7 +65,7 @@ function search_observer(aSubject, aTopic, aData) {
|
||||
// set the value of defaultenginename on the default branch.
|
||||
let defaultBranch = Services.prefs.getDefaultBranch("");
|
||||
let prefName = PREF_BRANCH + "defaultenginename";
|
||||
let prefVal = "data:text/plain," + prefName + "=" + engine1Name;
|
||||
let prefVal = "data:text/plain," + prefName + "=" + engine1.name;
|
||||
defaultBranch.setCharPref(prefName, prefVal, true);
|
||||
search.currentEngine = engine1;
|
||||
// Current engine should've been updated
|
||||
@ -99,32 +78,4 @@ function search_observer(aSubject, aTopic, aData) {
|
||||
search.defaultEngine = engine1;
|
||||
do_check_eq(search.defaultEngine, engine1);
|
||||
do_check_false(Services.prefs.prefHasUserValue("browser.search.defaultenginename"));
|
||||
|
||||
do_test_finished();
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
|
||||
});
|
||||
|
||||
do_test_pending();
|
||||
|
||||
Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
|
||||
|
||||
Services.search.addEngine(baseUrl + "/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
Services.search.addEngine(baseUrl + "/data/engine2.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
}
|
||||
});
|
||||
|
@ -8,19 +8,19 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
do_load_manifest("data/chrome.manifest");
|
||||
useHttpServer();
|
||||
|
||||
Components.utils.import("resource://testing-common/httpd.js");
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function search_observer(aSubject, aTopic, aData) {
|
||||
let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
|
||||
do_print("Observer: " + aData + " for " + engine.name);
|
||||
|
||||
if (aData != "engine-added")
|
||||
return;
|
||||
|
||||
if (engine.name != "Test search engine")
|
||||
return;
|
||||
add_task(function* test_purpose() {
|
||||
let [engine] = yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
]);
|
||||
|
||||
function check_submission(aExpected, aSearchTerm, aType, aPurpose) {
|
||||
do_check_eq(engine.getSubmission(aSearchTerm, aType, aPurpose).uri.spec,
|
||||
@ -47,28 +47,4 @@ function search_observer(aSubject, aTopic, aData) {
|
||||
check_submission("", "foo", "application/x-moz-default-purpose", "invalid");
|
||||
|
||||
do_test_finished();
|
||||
};
|
||||
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
do_load_manifest("data/chrome.manifest");
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
|
||||
});
|
||||
|
||||
do_test_pending();
|
||||
Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
|
||||
|
||||
Services.search.addEngine("http://localhost:" +
|
||||
httpServer.identity.primaryPort +
|
||||
"/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
}
|
||||
});
|
||||
|
@ -7,60 +7,27 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
useHttpServer();
|
||||
|
||||
Components.utils.import("resource://testing-common/httpd.js");
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
let engines = [
|
||||
"engine-rel-searchform.xml",
|
||||
"engine-rel-searchform-post.xml",
|
||||
];
|
||||
|
||||
function search_observer(aSubject, aTopic, aData) {
|
||||
let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
|
||||
do_print("Observer: " + aData + " for " + engine.name);
|
||||
|
||||
if (aData != "engine-added")
|
||||
return;
|
||||
|
||||
let idx = engines.indexOf(engine.name);
|
||||
if (idx < 0)
|
||||
// The engine is some other engine unrelated to the test, so ignore it.
|
||||
return;
|
||||
add_task(function* test_rel_searchform() {
|
||||
let engineNames = [
|
||||
"engine-rel-searchform.xml",
|
||||
"engine-rel-searchform-post.xml",
|
||||
];
|
||||
|
||||
// The final searchForm of the engine should be a URL whose domain is the
|
||||
// <ShortName> in the engine's XML and that has a ?search parameter. The
|
||||
// point of the ?search parameter is to avoid accidentally matching the value
|
||||
// returned as a last resort by Engine's searchForm getter, which is simply
|
||||
// the prePath of the engine's first HTML <Url>.
|
||||
do_check_eq(engine.searchForm, "http://" + engine.name + "/?search");
|
||||
|
||||
engines.splice(idx, 1);
|
||||
if (!engines.length)
|
||||
do_test_finished();
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
|
||||
});
|
||||
|
||||
do_test_pending();
|
||||
Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
|
||||
|
||||
for (let basename of engines) {
|
||||
Services.search.addEngine("http://localhost:" +
|
||||
httpServer.identity.primaryPort +
|
||||
"/data/" + basename,
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
let items = [for (e of engineNames) { name: e, xmlFileName: e }];
|
||||
for (let engine of yield addTestEngines(items)) {
|
||||
do_check_eq(engine.searchForm, "http://" + engine.name + "/?search");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -7,73 +7,27 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
Components.utils.import("resource://testing-common/httpd.js");
|
||||
|
||||
let waitForEngines = new Set([ "Test search engine",
|
||||
"A second test engine",
|
||||
"bacon" ]);
|
||||
|
||||
function promiseEnginesAdded() {
|
||||
let deferred = Promise.defer();
|
||||
|
||||
let observe = function observe(aSubject, aTopic, aData) {
|
||||
let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
|
||||
do_print("Observer: " + aData + " for " + engine.name);
|
||||
if (aData != "engine-added") {
|
||||
return;
|
||||
}
|
||||
waitForEngines.delete(engine.name);
|
||||
if (waitForEngines.size > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
let engine1 = Services.search.getEngineByName("Test search engine");
|
||||
do_check_eq(engine1.getResultDomain(), "google.com");
|
||||
do_check_eq(engine1.getResultDomain("text/html"), "google.com");
|
||||
do_check_eq(engine1.getResultDomain("application/x-moz-default-purpose"),
|
||||
"purpose.google.com");
|
||||
do_check_eq(engine1.getResultDomain("fake-response-type"), "");
|
||||
let engine2 = Services.search.getEngineByName("A second test engine");
|
||||
do_check_eq(engine2.getResultDomain(), "duckduckgo.com");
|
||||
let engine3 = Services.search.getEngineByName("bacon");
|
||||
do_check_eq(engine3.getResultDomain(), "bacon.moz");
|
||||
deferred.resolve();
|
||||
};
|
||||
|
||||
Services.obs.addObserver(observe, "browser-search-engine-modified", false);
|
||||
do_register_cleanup(function cleanup() {
|
||||
Services.obs.removeObserver(observe, "browser-search-engine-modified");
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
useHttpServer();
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
add_task(function* check_resultDomain() {
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
});
|
||||
add_task(function* test_resultDomain() {
|
||||
let [engine1, engine2, engine3] = yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
{ name: "A second test engine", xmlFileName: "engine2.xml" },
|
||||
{ name: "bacon", details: ["", "bacon", "Search Bacon", "GET",
|
||||
"http://www.bacon.moz/?search={searchTerms}"] },
|
||||
]);
|
||||
|
||||
let promise = promiseEnginesAdded();
|
||||
Services.search.addEngine(baseUrl + "/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
Services.search.addEngine(baseUrl + "/data/engine2.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
Services.search.addEngineWithDetails("bacon", "", "bacon", "Search Bacon",
|
||||
"GET", "http://www.bacon.moz/?search={searchTerms}");
|
||||
yield promise;
|
||||
do_check_eq(engine1.getResultDomain(), "google.com");
|
||||
do_check_eq(engine1.getResultDomain("text/html"), "google.com");
|
||||
do_check_eq(engine1.getResultDomain("application/x-moz-default-purpose"),
|
||||
"purpose.google.com");
|
||||
do_check_eq(engine1.getResultDomain("fake-response-type"), "");
|
||||
do_check_eq(engine2.getResultDomain(), "duckduckgo.com");
|
||||
do_check_eq(engine3.getResultDomain(), "bacon.moz");
|
||||
});
|
||||
|
@ -17,108 +17,55 @@
|
||||
* and configuration of Firefox.
|
||||
*/
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
const Cr = Components.results;
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
|
||||
function run_test() {
|
||||
do_print("Preparing test");
|
||||
removeMetadata();
|
||||
updateAppInfo();
|
||||
useHttpServer();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function getSearchMetadata() {
|
||||
// Check that search-metadata.json has been created
|
||||
let metadata = gProfD.clone();
|
||||
metadata.append("search-metadata.json");
|
||||
do_check_true(metadata.exists());
|
||||
|
||||
let stream = NetUtil.newChannel(metadata).open();
|
||||
do_print("Parsing metadata");
|
||||
let json = parseJsonFromStream(stream);
|
||||
stream.close(); // Stream must be closed under Windows
|
||||
|
||||
return json;
|
||||
}
|
||||
add_task(function* test_save_sorted_engines() {
|
||||
let [engine1, engine2] = yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
{ name: "Sherlock test search engine", srcFileName: "engine.src",
|
||||
iconFileName: "ico-size-16x16-png.ico" },
|
||||
]);
|
||||
|
||||
let search = Services.search;
|
||||
|
||||
do_print("Setting up observer");
|
||||
function observer(aSubject, aTopic, aData) {
|
||||
do_print("Observing topic " + aTopic);
|
||||
if ("engine-added" != aData) {
|
||||
return;
|
||||
}
|
||||
// Test moving the engines
|
||||
search.moveEngine(engine1, 0);
|
||||
search.moveEngine(engine2, 1);
|
||||
|
||||
let engine1 = search.getEngineByName("Test search engine");
|
||||
let engine2 = search.getEngineByName("Sherlock test search engine");
|
||||
do_print("Currently, engine1 is " + engine1);
|
||||
do_print("Currently, engine2 is " + engine2);
|
||||
if (!engine1 || !engine2) {
|
||||
return;
|
||||
}
|
||||
// Changes should be commited immediately
|
||||
yield new Promise(resolve => afterCommit(resolve));
|
||||
do_print("Commit complete after moveEngine");
|
||||
|
||||
// Test moving the engines
|
||||
search.moveEngine(engine1, 0);
|
||||
search.moveEngine(engine2, 1);
|
||||
// Check that the entries are placed as specified correctly
|
||||
let json = getSearchMetadata();
|
||||
do_check_eq(json["[app]/test-search-engine.xml"].order, 1);
|
||||
do_check_eq(json["[profile]/sherlock-test-search-engine.xml"].order, 2);
|
||||
|
||||
// Changes should be commited immediately
|
||||
afterCommit(function() {
|
||||
do_print("Commit complete after moveEngine");
|
||||
// Test removing an engine
|
||||
search.removeEngine(engine1);
|
||||
yield new Promise(resolve => afterCommit(resolve));
|
||||
do_print("Commit complete after removeEngine");
|
||||
|
||||
// Check that the entries are placed as specified correctly
|
||||
let json = getSearchMetadata();
|
||||
do_check_eq(json["[app]/test-search-engine.xml"].order, 1);
|
||||
do_check_eq(json["[profile]/sherlock-test-search-engine.xml"].order, 2);
|
||||
// Check that the order of the remaining engine was updated correctly
|
||||
json = getSearchMetadata();
|
||||
do_check_eq(json["[profile]/sherlock-test-search-engine.xml"].order, 1);
|
||||
|
||||
// Test removing an engine
|
||||
search.removeEngine(engine1);
|
||||
afterCommit(function() {
|
||||
do_print("Commit complete after removeEngine");
|
||||
// Test adding a new engine
|
||||
search.addEngineWithDetails("foo", "", "foo", "", "GET",
|
||||
"http://searchget/?search={searchTerms}");
|
||||
yield new Promise(resolve => afterCommit(resolve));
|
||||
do_print("Commit complete after addEngineWithDetails");
|
||||
|
||||
// Check that the order of the remaining engine was updated correctly
|
||||
let json = getSearchMetadata();
|
||||
do_check_eq(json["[profile]/sherlock-test-search-engine.xml"].order, 1);
|
||||
json = getSearchMetadata();
|
||||
do_check_eq(json["[profile]/foo.xml"].alias, "foo");
|
||||
do_check_true(json["[profile]/foo.xml"].order > 0);
|
||||
|
||||
// Test adding a new engine
|
||||
search.addEngineWithDetails("foo", "", "foo", "", "GET", "http://searchget/?search={searchTerms}");
|
||||
afterCommit(function() {
|
||||
do_print("Commit complete after addEngineWithDetails");
|
||||
|
||||
// Check that engine was added to the list of sorted engines
|
||||
let json = getSearchMetadata();
|
||||
do_check_eq(json["[profile]/foo.xml"].alias, "foo");
|
||||
do_check_true(json["[profile]/foo.xml"].order > 0);
|
||||
|
||||
do_print("Cleaning up");
|
||||
Services.obs.removeObserver(observer, "browser-search-engine-modified");
|
||||
httpServer.stop(function() {});
|
||||
removeMetadata();
|
||||
do_test_finished();
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
Services.obs.addObserver(observer, "browser-search-engine-modified", false);
|
||||
|
||||
do_test_pending();
|
||||
|
||||
search.addEngine(baseUrl + "/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML,
|
||||
null, false);
|
||||
search.addEngine(baseUrl + "/data/engine.src",
|
||||
Ci.nsISearchEngine.DATA_TEXT,
|
||||
baseUrl + "/data/ico-size-16x16-png.ico",
|
||||
false);
|
||||
|
||||
do_timeout(120000, function() {
|
||||
do_throw("Timeout");
|
||||
});
|
||||
}
|
||||
do_print("Cleaning up");
|
||||
removeMetadata();
|
||||
});
|
||||
|
@ -10,38 +10,27 @@
|
||||
* - lazySerializeTask updates the file.
|
||||
*/
|
||||
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
function run_test() {
|
||||
updateAppInfo();
|
||||
useHttpServer();
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
Cu.import("resource://gre/modules/NetUtil.jsm");
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
add_test(function test_batchTask() {
|
||||
let observer = function(aSubject, aTopic, aData) {
|
||||
if (aTopic == "browser-search-engine-modified" && aData == "engine-loaded") {
|
||||
let engine1 = Services.search.getEngineByName("Test search engine");
|
||||
let engine2 = Services.search.getEngineByName("Sherlock test search engine");
|
||||
if (engine1 && engine2) {
|
||||
Services.obs.removeObserver(observer, aTopic);
|
||||
// Test that files are written correctly.
|
||||
let engineFile1 = engine1.wrappedJSObject._file;
|
||||
let engineFile2 = engine2.wrappedJSObject._file;
|
||||
do_check_true(engineFile1.exists());
|
||||
do_check_true(engineFile2.exists());
|
||||
do_check_neq(engineFile1.fileSize, 0);
|
||||
do_check_neq(engineFile2.fileSize, 0);
|
||||
run_next_test();
|
||||
}
|
||||
}
|
||||
}
|
||||
add_task(function test_batchTask() {
|
||||
let [engine1, engine2] = yield addTestEngines([
|
||||
{ name: "Test search engine", xmlFileName: "engine.xml" },
|
||||
{ name: "Sherlock test search engine", srcFileName: "engine.src",
|
||||
iconFileName: "ico-size-16x16-png.ico" },
|
||||
]);
|
||||
|
||||
Services.obs.addObserver(observer, "browser-search-engine-modified", false);
|
||||
Services.search.addEngine("http://localhost:4444/data/engine.xml",
|
||||
Ci.nsISearchEngine.DATA_XML, null, false);
|
||||
Services.search.addEngine("http://localhost:4444/data/engine.src",
|
||||
Ci.nsISearchEngine.DATA_TEXT,
|
||||
"http://localhost:4444/data/ico-size-16x16-png.ico",
|
||||
false);
|
||||
// Test that files are written correctly.
|
||||
let engineFile1 = engine1.wrappedJSObject._file;
|
||||
let engineFile2 = engine2.wrappedJSObject._file;
|
||||
do_check_true(engineFile1.exists());
|
||||
do_check_true(engineFile2.exists());
|
||||
do_check_neq(engineFile1.fileSize, 0);
|
||||
do_check_neq(engineFile2.fileSize, 0);
|
||||
});
|
||||
|
||||
add_test(function test_addParam() {
|
||||
@ -76,17 +65,3 @@ add_test(function test_addParam() {
|
||||
}
|
||||
Services.obs.addObserver(observer, "browser-search-service", false);
|
||||
});
|
||||
|
||||
function run_test() {
|
||||
updateAppInfo();
|
||||
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(4444);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
|
||||
do_register_cleanup(function cleanup() {
|
||||
httpServer.stop(function() {});
|
||||
});
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user