summaryrefslogtreecommitdiffstats
path: root/toolkit/components/search/tests/xpcshell/test_hidden.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_hidden.js')
-rw-r--r--toolkit/components/search/tests/xpcshell/test_hidden.js93
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);
+});