1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/components/places/tests/unit/test_priorityUrlProvider.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,74 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +Cu.import("resource://gre/modules/PriorityUrlProvider.jsm"); 1.9 + 1.10 +function run_test() { 1.11 + run_next_test(); 1.12 +} 1.13 + 1.14 +add_task(function* search_engine_match() { 1.15 + let engine = yield promiseDefaultSearchEngine(); 1.16 + let token = engine.getResultDomain(); 1.17 + let match = yield PriorityUrlProvider.getMatch(token.substr(0, 1)); 1.18 + do_check_eq(match.url, engine.searchForm); 1.19 + do_check_eq(match.title, engine.name); 1.20 + do_check_eq(match.iconUrl, engine.iconURI ? engine.iconURI.spec : null); 1.21 + do_check_eq(match.reason, "search"); 1.22 +}); 1.23 + 1.24 +add_task(function* no_match() { 1.25 + do_check_eq(null, yield PriorityUrlProvider.getMatch("test")); 1.26 +}); 1.27 + 1.28 +add_task(function* hide_search_engine_nomatch() { 1.29 + let engine = yield promiseDefaultSearchEngine(); 1.30 + let token = engine.getResultDomain(); 1.31 + let promiseTopic = promiseSearchTopic("engine-changed"); 1.32 + Services.search.removeEngine(engine); 1.33 + yield promiseTopic; 1.34 + do_check_true(engine.hidden); 1.35 + do_check_eq(null, yield PriorityUrlProvider.getMatch(token.substr(0, 1))); 1.36 +}); 1.37 + 1.38 +add_task(function* add_search_engine_match() { 1.39 + let promiseTopic = promiseSearchTopic("engine-added"); 1.40 + do_check_eq(null, yield PriorityUrlProvider.getMatch("bacon")); 1.41 + Services.search.addEngineWithDetails("bacon", "", "bacon", "Search Bacon", 1.42 + "GET", "http://www.bacon.moz/?search={searchTerms}"); 1.43 + yield promiseSearchTopic; 1.44 + let match = yield PriorityUrlProvider.getMatch("bacon"); 1.45 + do_check_eq(match.url, "http://www.bacon.moz"); 1.46 + do_check_eq(match.title, "bacon"); 1.47 + do_check_eq(match.iconUrl, null); 1.48 + do_check_eq(match.reason, "search"); 1.49 +}); 1.50 + 1.51 +add_task(function* remove_search_engine_nomatch() { 1.52 + let engine = Services.search.getEngineByName("bacon"); 1.53 + let promiseTopic = promiseSearchTopic("engine-removed"); 1.54 + Services.search.removeEngine(engine); 1.55 + yield promiseTopic; 1.56 + do_check_eq(null, yield PriorityUrlProvider.getMatch("bacon")); 1.57 +}); 1.58 + 1.59 +function promiseDefaultSearchEngine() { 1.60 + let deferred = Promise.defer(); 1.61 + Services.search.init( () => { 1.62 + deferred.resolve(Services.search.defaultEngine); 1.63 + }); 1.64 + return deferred.promise; 1.65 +} 1.66 + 1.67 +function promiseSearchTopic(expectedVerb) { 1.68 + let deferred = Promise.defer(); 1.69 + Services.obs.addObserver( function observe(subject, topic, verb) { 1.70 + do_log_info("browser-search-engine-modified: " + verb); 1.71 + if (verb == expectedVerb) { 1.72 + Services.obs.removeObserver(observe, "browser-search-engine-modified"); 1.73 + deferred.resolve(); 1.74 + } 1.75 + }, "browser-search-engine-modified", false); 1.76 + return deferred.promise; 1.77 +}