Bug 1371294 - Add a SearchTestUtils.jsm file and stop duplicating promiseNewSearchEngine. r=mikedeboer

MozReview-Commit-ID: IP5iRstshrM

--HG--
extra : rebase_source : a85d904582f055c5fab4e55b4a27802ea94e898e
This commit is contained in:
Mark Banner 2018-04-12 20:09:01 +01:00
Родитель 57cf8146c3
Коммит 016da92273
13 изменённых файлов: 77 добавлений и 47 удалений

Просмотреть файл

@ -9,6 +9,11 @@ const TEST_ENGINE_2_BASENAME = "searchSuggestionEngine2.xml";
const TEST_MSG = "ContentSearchUIControllerTest"; const TEST_MSG = "ContentSearchUIControllerTest";
let {SearchTestUtils} = ChromeUtils.import(
"resource://testing-common/SearchTestUtils.jsm", {});
SearchTestUtils.init(Assert, registerCleanupFunction);
requestLongerTimeout(2); requestLongerTimeout(2);
add_task(async function emptyInput() { add_task(async function emptyInput() {
@ -739,8 +744,11 @@ function setUpEngines() {
let currentEngineName = Services.search.currentEngine.name; let currentEngineName = Services.search.currentEngine.name;
let currentEngines = Services.search.getVisibleEngines(); let currentEngines = Services.search.getVisibleEngines();
info("Adding test search engines"); info("Adding test search engines");
let engine1 = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let rootDir = getRootDirectory(gTestPath);
await promiseNewSearchEngine(TEST_ENGINE_2_BASENAME); let engine1 = await SearchTestUtils.promiseNewSearchEngine(
rootDir + TEST_ENGINE_BASENAME);
await SearchTestUtils.promiseNewSearchEngine(
rootDir + TEST_ENGINE_2_BASENAME);
Services.search.currentEngine = engine1; Services.search.currentEngine = engine1;
for (let engine of currentEngines) { for (let engine of currentEngines) {
Services.search.removeEngine(engine); Services.search.removeEngine(engine);

Просмотреть файл

@ -526,24 +526,6 @@ function promiseNotificationShown(notification) {
return panelPromise; return panelPromise;
} }
function promiseNewSearchEngine(basename) {
return new Promise((resolve, reject) => {
info("Waiting for engine to be added: " + basename);
let url = getRootDirectory(gTestPath) + basename;
Services.search.addEngine(url, null, "", false, {
onSuccess(engine) {
info("Search engine added: " + basename);
registerCleanupFunction(() => Services.search.removeEngine(engine));
resolve(engine);
},
onError(errCode) {
Assert.ok(false, "addEngine failed with error code " + errCode);
reject();
},
});
});
}
/** /**
* Resolves when a bookmark with the given uri is added. * Resolves when a bookmark with the given uri is added.
*/ */

Просмотреть файл

@ -19,7 +19,8 @@ add_task(async function switchToTab() {
}); });
add_task(async function searchSuggestions() { add_task(async function searchSuggestions() {
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
let oldCurrentEngine = Services.search.currentEngine; let oldCurrentEngine = Services.search.currentEngine;
Services.search.currentEngine = engine; Services.search.currentEngine = engine;
Services.prefs.setBoolPref(SUGGEST_ALL_PREF, true); Services.prefs.setBoolPref(SUGGEST_ALL_PREF, true);

Просмотреть файл

@ -8,7 +8,8 @@ add_task(async function init() {
// Add a search suggestion engine and move it to the front so that it appears // Add a search suggestion engine and move it to the front so that it appears
// as the first one-off. // as the first one-off.
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
Services.search.moveEngine(engine, 0); Services.search.moveEngine(engine, 0);
registerCleanupFunction(async function() { registerCleanupFunction(async function() {

Просмотреть файл

@ -6,7 +6,8 @@ add_task(async function init() {
set: [["browser.urlbar.oneOffSearches", true], set: [["browser.urlbar.oneOffSearches", true],
["browser.urlbar.suggest.searches", true]], ["browser.urlbar.suggest.searches", true]],
}); });
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
let oldCurrentEngine = Services.search.currentEngine; let oldCurrentEngine = Services.search.currentEngine;
Services.search.moveEngine(engine, 0); Services.search.moveEngine(engine, 0);
Services.search.currentEngine = engine; Services.search.currentEngine = engine;

Просмотреть файл

@ -5,7 +5,8 @@ const TEST_ENGINE_BASENAME = "searchSuggestionEngine.xml";
add_task(async function prepare() { add_task(async function prepare() {
let suggestionsEnabled = Services.prefs.getBoolPref(SUGGEST_URLBAR_PREF); let suggestionsEnabled = Services.prefs.getBoolPref(SUGGEST_URLBAR_PREF);
Services.prefs.setBoolPref(SUGGEST_URLBAR_PREF, true); Services.prefs.setBoolPref(SUGGEST_URLBAR_PREF, true);
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
let oldCurrentEngine = Services.search.currentEngine; let oldCurrentEngine = Services.search.currentEngine;
Services.search.currentEngine = engine; Services.search.currentEngine = engine;
registerCleanupFunction(async function() { registerCleanupFunction(async function() {

Просмотреть файл

@ -9,7 +9,8 @@ const TEST_ENGINE_BASENAME = "searchSuggestionEngine.xml";
const ONEOFF_PREF = "browser.urlbar.oneOffSearches"; const ONEOFF_PREF = "browser.urlbar.oneOffSearches";
add_task(async function prepare() { add_task(async function prepare() {
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
let oldCurrentEngine = Services.search.currentEngine; let oldCurrentEngine = Services.search.currentEngine;
Services.search.currentEngine = engine; Services.search.currentEngine = engine;
let suggestionsEnabled = Services.prefs.getBoolPref(SUGGEST_URLBAR_PREF); let suggestionsEnabled = Services.prefs.getBoolPref(SUGGEST_URLBAR_PREF);

Просмотреть файл

@ -9,7 +9,8 @@ const TEST_ENGINE_BASENAME = "searchSuggestionEngine.xml";
add_task(async function prepare() { add_task(async function prepare() {
let suggestionsEnabled = Services.prefs.getBoolPref(SUGGEST_URLBAR_PREF); let suggestionsEnabled = Services.prefs.getBoolPref(SUGGEST_URLBAR_PREF);
Services.prefs.setBoolPref(SUGGEST_URLBAR_PREF, true); Services.prefs.setBoolPref(SUGGEST_URLBAR_PREF, true);
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
let oldCurrentEngine = Services.search.currentEngine; let oldCurrentEngine = Services.search.currentEngine;
Services.search.currentEngine = engine; Services.search.currentEngine = engine;

Просмотреть файл

@ -19,7 +19,8 @@ add_task(async function init() {
set: [["browser.urlbar.suggest.searches", true]], set: [["browser.urlbar.suggest.searches", true]],
}); });
// Add a test search engine that returns suggestions on a delay. // Add a test search engine that returns suggestions on a delay.
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
let oldCurrentEngine = Services.search.currentEngine; let oldCurrentEngine = Services.search.currentEngine;
Services.search.moveEngine(engine, 0); Services.search.moveEngine(engine, 0);
Services.search.currentEngine = engine; Services.search.currentEngine = engine;

Просмотреть файл

@ -29,7 +29,8 @@ add_task(async function setup() {
["network.dns.disableIPv6", true]], ["network.dns.disableIPv6", true]],
}); });
let engine = await promiseNewSearchEngine(TEST_ENGINE_BASENAME); let engine = await SearchTestUtils.promiseNewSearchEngine(
getRootDirectory(gTestPath) + TEST_ENGINE_BASENAME);
let oldCurrentEngine = Services.search.currentEngine; let oldCurrentEngine = Services.search.currentEngine;
Services.search.currentEngine = engine; Services.search.currentEngine = engine;
@ -53,4 +54,3 @@ add_task(async function connect_search_engine_tests() {
await promiseSpeculativeConnection(gHttpServer); await promiseSpeculativeConnection(gHttpServer);
is(gHttpServer.connectionNumber, 1, `${gHttpServer.connectionNumber} speculative connection has been setup.`); is(gHttpServer.connectionNumber, 1, `${gHttpServer.connectionNumber} speculative connection has been setup.`);
}); });

Просмотреть файл

@ -10,6 +10,10 @@ ChromeUtils.defineModuleGetter(this, "Preferences",
"resource://gre/modules/Preferences.jsm"); "resource://gre/modules/Preferences.jsm");
ChromeUtils.defineModuleGetter(this, "HttpServer", ChromeUtils.defineModuleGetter(this, "HttpServer",
"resource://testing-common/httpd.js"); "resource://testing-common/httpd.js");
ChromeUtils.defineModuleGetter(this, "SearchTestUtils",
"resource://testing-common/SearchTestUtils.jsm");
SearchTestUtils.init(Assert, registerCleanupFunction);
/** /**
* Waits for the next top-level document load in the current browser. The URI * Waits for the next top-level document load in the current browser. The URI
@ -204,24 +208,6 @@ function promiseAutocompleteResultPopup(inputText,
return promiseSearchComplete(win, dontAnimate); return promiseSearchComplete(win, dontAnimate);
} }
function promiseNewSearchEngine(basename) {
return new Promise((resolve, reject) => {
info("Waiting for engine to be added: " + basename);
let url = getRootDirectory(gTestPath) + basename;
Services.search.addEngine(url, null, "", false, {
onSuccess(engine) {
info("Search engine added: " + basename);
registerCleanupFunction(() => Services.search.removeEngine(engine));
resolve(engine);
},
onError(errCode) {
Assert.ok(false, "addEngine failed with error code " + errCode);
reject();
},
});
});
}
function promisePageActionPanelOpen() { function promisePageActionPanelOpen() {
let dwu = window.QueryInterface(Ci.nsIInterfaceRequestor) let dwu = window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils); .getInterface(Ci.nsIDOMWindowUtils);

Просмотреть файл

@ -10,6 +10,10 @@ BROWSER_CHROME_MANIFESTS += [
'test/google_nocodes/browser.ini', 'test/google_nocodes/browser.ini',
] ]
TESTING_JS_MODULES += [
'test/SearchTestUtils.jsm',
]
JAR_MANIFESTS += ['jar.mn'] JAR_MANIFESTS += ['jar.mn']
with Files('**'): with Files('**'):

Просмотреть файл

@ -0,0 +1,43 @@
"use strict";
ChromeUtils.import("resource://gre/modules/Services.jsm");
var EXPORTED_SYMBOLS = [
"SearchTestUtils",
];
var gTestGlobals;
var SearchTestUtils = Object.freeze({
init(Assert, registerCleanupFunction) {
gTestGlobals = {
Assert,
registerCleanupFunction
};
},
/**
* Adds a search engine to the search service. It will remove the engine
* at the end of the test.
*
* @param {String} url The URL of the engine to add.
* @param {Function} registerCleanupFunction Pass the registerCleanupFunction
* from the test's scope.
* @returns {Promise} Returns a promise that is resolved with the new engine
* or rejected if it fails.
*/
promiseNewSearchEngine(url) {
return new Promise((resolve, reject) => {
Services.search.addEngine(url, null, "", false, {
onSuccess(engine) {
gTestGlobals.registerCleanupFunction(() => Services.search.removeEngine(engine));
resolve(engine);
},
onError(errCode) {
gTestGlobals.Assert.ok(false, `addEngine failed with error code ${errCode}`);
reject();
},
});
});
}
});