tenfourfox/toolkit/components/search/tests/xpcshell/test_hidden.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

94 lines
3.1 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
const kUrlPref = "geoSpecificDefaults.url";
function run_test() {
removeMetadata();
removeCacheFile();
do_load_manifest("data/chrome.manifest");
configureToLoadJarEngines();
// Geo specific defaults won't be fetched if there's no country code.
Services.prefs.setCharPref("browser.search.geoip.url",
'data:application/json,{"country_code": "US"}');
// Make 'hidden' the only visible engine.
let url = "data:application/json,{\"interval\": 31536000, \"settings\": {\"searchDefault\": \"hidden\", \"visibleDefaultEngines\": [\"hidden\"]}}";
Services.prefs.getDefaultBranch(BROWSER_SEARCH_PREF).setCharPref(kUrlPref, url);
do_check_false(Services.search.isInitialized);
run_next_test();
}
add_task(function* async_init() {
let commitPromise = promiseAfterCache()
yield asyncInit();
let engines = Services.search.getEngines();
do_check_eq(engines.length, 1);
// The default test jar engine has been hidden.
let engine = Services.search.getEngineByName("bug645970");
do_check_eq(engine, null);
// The hidden engine is visible.
engine = Services.search.getEngineByName("hidden");
do_check_neq(engine, null);
// The next test does a sync init, which won't do the geoSpecificDefaults XHR,
// so it depends on the metadata having been written to disk.
yield commitPromise;
});
add_task(function* sync_init() {
let unInitPromise = waitForSearchNotification("uninit-complete");
let reInitPromise = asyncReInit();
yield unInitPromise;
do_check_false(Services.search.isInitialized);
// Synchronously check the current default engine, to force a sync init.
do_check_eq(Services.search.currentEngine.name, "hidden");
do_check_true(Services.search.isInitialized);
let engines = Services.search.getEngines();
do_check_eq(engines.length, 1);
// The default test jar engine has been hidden.
let engine = Services.search.getEngineByName("bug645970");
do_check_eq(engine, null);
// The hidden engine is visible.
engine = Services.search.getEngineByName("hidden");
do_check_neq(engine, null);
yield reInitPromise;
});
add_task(function* invalid_engine() {
// Trigger a new request.
yield forceExpiration();
// Set the visibleDefaultEngines list to something that contains a non-existent engine.
// This should cause the search service to ignore the list altogether and fallback to
// local defaults.
let url = "data:application/json,{\"interval\": 31536000, \"settings\": {\"searchDefault\": \"hidden\", \"visibleDefaultEngines\": [\"hidden\", \"bogus\"]}}";
Services.prefs.getDefaultBranch(BROWSER_SEARCH_PREF).setCharPref(kUrlPref, url);
yield asyncReInit();
let engines = Services.search.getEngines();
do_check_eq(engines.length, 1);
// The default test jar engine is visible.
let engine = Services.search.getEngineByName("bug645970");
do_check_neq(engine, null);
// The hidden engine is... hidden.
engine = Services.search.getEngineByName("hidden");
do_check_eq(engine, null);
});