_getSortedEngines: function() {
var preferences =
Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService);
var orderBranch = preferences.getBranch(kEngineOrderBranch);
var engines = [];
var addedEngines = { };
var i = 0;
try {
while (1) {
var engineName = orderBranch.getComplexValue(i++,
Ci.nsIPrefLocalizedString).data;
var engine = this._engines[engineName];
if (engine && !engine.hidden && !(engineName in addedEngines)) {
engines.push(engine);
addedEngines[engineName] = engine;
}
}
}
catch (e) {
// No more sorted engines - getComplexValue will throw
for (var engineName in this._engines) {
var engine = this._engines[engineName];
if (engine && !engine.hidden && !(engineName in addedEngines))
engines.push(this._engines[engineName]);
}
}
return engines;
},