diff options
Diffstat (limited to 'browser/components/search/test/browser_google_codes.js')
-rw-r--r-- | browser/components/search/test/browser_google_codes.js | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/browser/components/search/test/browser_google_codes.js b/browser/components/search/test/browser_google_codes.js deleted file mode 100644 index e166b6868..000000000 --- a/browser/components/search/test/browser_google_codes.js +++ /dev/null @@ -1,161 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -const kUrlPref = "geoSpecificDefaults.url"; -const BROWSER_SEARCH_PREF = "browser.search."; - -var originalGeoURL; - -/** - * Clean the profile of any cache file left from a previous run. - * Returns a boolean indicating if the cache file existed. - */ -function removeCacheFile() -{ - const CACHE_FILENAME = "search.json.mozlz4"; - - let file = Services.dirsvc.get("ProfD", Ci.nsIFile); - file.append(CACHE_FILENAME); - if (file.exists()) { - file.remove(false); - return true; - } - return false; -} - -/** - * Returns a promise that is resolved when an observer notification from the - * search service fires with the specified data. - * - * @param aExpectedData - * The value the observer notification sends that causes us to resolve - * the promise. - */ -function waitForSearchNotification(aExpectedData, aCallback) { - const SEARCH_SERVICE_TOPIC = "browser-search-service"; - Services.obs.addObserver(function observer(aSubject, aTopic, aData) { - if (aData != aExpectedData) - return; - - Services.obs.removeObserver(observer, SEARCH_SERVICE_TOPIC); - aCallback(); - }, SEARCH_SERVICE_TOPIC, false); -} - -function asyncInit() { - return new Promise(resolve => { - Services.search.init(function() { - ok(Services.search.isInitialized, "search service should be initialized"); - resolve(); - }); - }); -} - -function asyncReInit() { - const kLocalePref = "general.useragent.locale"; - - let promise = new Promise(resolve => { - waitForSearchNotification("reinit-complete", resolve); - }); - - Services.search.QueryInterface(Ci.nsIObserver) - .observe(null, "nsPref:changed", kLocalePref); - - return promise; -} - -let gEngineCount; - -add_task(function* preparation() { - // ContentSearch is interferring with our async re-initializations of the - // search service: once _initServicePromise has resolved, it will access - // the search service, thus causing unpredictable behavior due to - // synchronous initializations of the service. - let originalContentSearchPromise = ContentSearch._initServicePromise; - ContentSearch._initServicePromise = new Promise(resolve => { - registerCleanupFunction(() => { - ContentSearch._initServicePromise = originalContentSearchPromise; - resolve(); - }); - }); - - yield asyncInit(); - gEngineCount = Services.search.getVisibleEngines().length; - - waitForSearchNotification("uninit-complete", () => { - // Verify search service is not initialized - is(Services.search.isInitialized, false, "Search service should NOT be initialized"); - - removeCacheFile(); - - // 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"}'); - - Services.prefs.setBoolPref("browser.search.geoSpecificDefaults", true); - - // Make the new Google the only engine - originalGeoURL = Services.prefs.getCharPref(BROWSER_SEARCH_PREF + kUrlPref); - let geoUrl = 'data:application/json,{"interval": 31536000, "settings": {"searchDefault": "Google", "visibleDefaultEngines": ["google"]}}'; - Services.prefs.getDefaultBranch(BROWSER_SEARCH_PREF).setCharPref(kUrlPref, geoUrl); - }); - - yield asyncReInit(); - - yield new Promise(resolve => { - waitForSearchNotification("write-cache-to-disk-complete", resolve); - }); -}); - -add_task(function* tests() { - let engines = Services.search.getEngines(); - is(Services.search.currentEngine.name, "Google", "Search engine should be Google"); - is(engines.length, 1, "There should only be one engine"); - - let engine = Services.search.getEngineByName("Google"); - ok(engine, "Google"); - - let base = "https://www.google.com/search?q=foo&ie=utf-8&oe=utf-8&client=firefox-b"; - - // Keyword uses a slightly different code - let keywordBase = base + "-ab"; - - let url; - - // Test search URLs (including purposes). - url = engine.getSubmission("foo", null, "contextmenu").uri.spec; - is(url, base, "Check context menu search URL for 'foo'"); - url = engine.getSubmission("foo", null, "keyword").uri.spec; - is(url, keywordBase, "Check keyword search URL for 'foo'"); - url = engine.getSubmission("foo", null, "searchbar").uri.spec; - is(url, base, "Check search bar search URL for 'foo'"); - url = engine.getSubmission("foo", null, "homepage").uri.spec; - is(url, base, "Check homepage search URL for 'foo'"); - url = engine.getSubmission("foo", null, "newtab").uri.spec; - is(url, base, "Check newtab search URL for 'foo'"); - url = engine.getSubmission("foo", null, "system").uri.spec; - is(url, base, "Check system search URL for 'foo'"); -}); - - -add_task(function* cleanup() { - waitForSearchNotification("uninit-complete", () => { - // Verify search service is not initialized - is(Services.search.isInitialized, false, - "Search service should NOT be initialized"); - removeCacheFile(); - - Services.prefs.clearUserPref("browser.search.geoip.url"); - - // We can't clear the pref because it's set to false by testing/profiles/prefs_general.js - Services.prefs.setBoolPref("browser.search.geoSpecificDefaults", false); - - Services.prefs.getDefaultBranch(BROWSER_SEARCH_PREF).setCharPref(kUrlPref, originalGeoURL); - }); - - yield asyncReInit(); - is(gEngineCount, Services.search.getVisibleEngines().length, - "correct engine count after cleanup"); -}); |