diff options
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_hidden.js')
-rw-r--r-- | toolkit/components/search/tests/xpcshell/test_hidden.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_hidden.js b/toolkit/components/search/tests/xpcshell/test_hidden.js new file mode 100644 index 000000000..b784f3624 --- /dev/null +++ b/toolkit/components/search/tests/xpcshell/test_hidden.js @@ -0,0 +1,93 @@ +/* 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); +}); |