_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; },