mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
let gTestLog = [];
|
|
|
|
/**
|
|
* The order of notifications expected for this test is:
|
|
* - engine-changed (while we're installing the engine, we modify it, which notifies - bug 606886)
|
|
* - engine-added (engine was added to the store by the search service)
|
|
* -> our search observer is called, which sets:
|
|
* - .defaultEngine, triggering engine-default
|
|
* - .currentEngine, triggering engine-current (after bug 493051 - for now the search service sets this after engine-added)
|
|
* ...and then schedules a removal
|
|
* - engine-loaded (the search service's observer is garanteed to fire first, which is what causes engine-added to fire)
|
|
* - engine-removed (due to the removal schedule above)
|
|
*/
|
|
let expectedLog = [
|
|
"engine-changed", // XXX bug 606886
|
|
"engine-added",
|
|
"engine-default",
|
|
"engine-current",
|
|
"engine-loaded",
|
|
"engine-removed"
|
|
];
|
|
|
|
function search_observer(subject, topic, data) {
|
|
let engine = subject.QueryInterface(Ci.nsISearchEngine);
|
|
gTestLog.push(data + " for " + engine.name);
|
|
|
|
do_print("Observer: " + data + " for " + engine.name);
|
|
|
|
switch (data) {
|
|
case "engine-added":
|
|
let retrievedEngine = Services.search.getEngineByName("Test search engine");
|
|
do_check_eq(engine, retrievedEngine);
|
|
Services.search.defaultEngine = engine;
|
|
Services.search.currentEngine = engine;
|
|
do_execute_soon(function () {
|
|
Services.search.removeEngine(engine);
|
|
});
|
|
break;
|
|
case "engine-removed":
|
|
let engineNameOutput = " for Test search engine";
|
|
expectedLog = expectedLog.map(logLine => logLine + engineNameOutput);
|
|
do_print("expectedLog:\n" + expectedLog.join("\n"))
|
|
do_print("gTestLog:\n" + gTestLog.join("\n"))
|
|
for (let i = 0; i < expectedLog.length; i++) {
|
|
do_check_eq(gTestLog[i], expectedLog[i]);
|
|
}
|
|
do_check_eq(gTestLog.length, expectedLog.length);
|
|
do_test_finished();
|
|
break;
|
|
}
|
|
}
|
|
|
|
function run_test() {
|
|
removeMetadata();
|
|
updateAppInfo();
|
|
useHttpServer();
|
|
|
|
do_register_cleanup(function cleanup() {
|
|
Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
|
|
});
|
|
|
|
do_test_pending();
|
|
|
|
Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
|
|
|
|
Services.search.addEngine(gDataUrl + "engine.xml",
|
|
Ci.nsISearchEngine.DATA_XML,
|
|
null, false);
|
|
}
|