toolkit/components/search/tests/xpcshell/test_defaultEngine.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  *    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 /*
     5  * Test that currentEngine and defaultEngine properties can be set and yield the
     6  * proper events and behavior (search results)
     7  */
     9 "use strict";
    11 const Ci = Components.interfaces;
    13 Components.utils.import("resource://testing-common/httpd.js");
    15 let waitForEngines = {
    16   "Test search engine": 1,
    17   "A second test engine": 1
    18 };
    20 function search_observer(aSubject, aTopic, aData) {
    21   let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
    22   do_print("Observer: " + aData + " for " + engine.name);
    24   if (aData != "engine-added") {
    25     return;
    26   }
    28   // If the engine is defined in `waitForEngines`, remove it from the list
    29   if (waitForEngines[engine.name]) {
    30     delete waitForEngines[engine.name];
    31   } else {
    32     // This engine is not one we're waiting for, so bail out early.
    33     return;
    34   }
    36   // Only continue when both engines have been loaded.
    37   if (Object.keys(waitForEngines).length)
    38     return;
    40   let search = Services.search;
    42   let engine1 = search.getEngineByName("Test search engine");
    43   let engine2 = search.getEngineByName("A second test engine");
    45   search.defaultEngine = engine1;
    46   do_check_eq(search.defaultEngine, engine1);
    47   search.defaultEngine = engine2
    48   do_check_eq(search.defaultEngine, engine2);
    49   search.defaultEngine = engine1;
    50   do_check_eq(search.defaultEngine, engine1);
    52   // Test that hiding the currently-default engine affects the defaultEngine getter
    53   // (when the default is hidden, we fall back to the first in the list, so move
    54   // our second engine to that position)
    55   search.moveEngine(engine2, 0);
    56   engine1.hidden = true;
    57   do_check_eq(search.defaultEngine, engine2);
    59   // Test that the default engine is restored when it is unhidden
    60   engine1.hidden = false;
    61   do_check_eq(search.defaultEngine, engine1);
    63   // Test that setting defaultEngine to an already-hidden engine works, but
    64   // doesn't change the return value of the getter
    65   engine2.hidden = true;
    66   search.moveEngine(engine1, 0)
    67   search.defaultEngine = engine2;
    68   do_check_eq(search.defaultEngine, engine1);
    69   engine2.hidden = false;
    70   do_check_eq(search.defaultEngine, engine2);
    72   do_test_finished();
    73 }
    75 function run_test() {
    76   removeMetadata();
    77   updateAppInfo();
    79   let httpServer = new HttpServer();
    80   httpServer.start(-1);
    81   httpServer.registerDirectory("/", do_get_cwd());
    82   let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
    84   do_register_cleanup(function cleanup() {
    85     httpServer.stop(function() {});
    86     Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
    87   });
    89   do_test_pending();
    91   Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
    93   Services.search.addEngine(baseUrl + "/data/engine.xml",
    94                             Ci.nsISearchEngine.DATA_XML,
    95                             null, false);
    96   Services.search.addEngine(baseUrl + "/data/engine2.xml",
    97                             Ci.nsISearchEngine.DATA_XML,
    98                             null, false);
    99 }

mercurial