// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /*** =================== INITIALISATION CODE =================== ***/ var kObserverService; // interface variables var passwordmanager = null; // password-manager lists var signons = []; var rejects = []; var deletedSignons = []; var deletedRejects = []; var signonsTree; var rejectsTree; var showingPasswords = false; function Startup() { // xpconnect to password manager interfaces passwordmanager = Components.classes["@mozilla.org/login-manager;1"] .getService(Components.interfaces.nsILoginManager); // be prepared to reload the display if anything changes kObserverService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); kObserverService.addObserver(signonReloadDisplay, "passwordmgr-storage-changed", false); signonsTree = document.getElementById("signonsTree"); rejectsTree = document.getElementById("rejectsTree"); } function Shutdown() { kObserverService.removeObserver(signonReloadDisplay, "passwordmgr-storage-changed"); } var signonReloadDisplay = { observe: function(subject, topic, data) { if (topic == "passwordmgr-storage-changed") { switch (data) { case "addLogin": case "modifyLogin": case "removeLogin": case "removeAllLogins": if (!signonsTree) { return; } signons.length = 0; LoadSignons(); // apply the filter if needed if (document.getElementById("filter") && document.getElementById("filter").value != "") { _filterPasswords(); } break; case "hostSavingEnabled": case "hostSavingDisabled": if (!rejectsTree) { return; } rejects.length = 0; if (lastRejectSortColumn == "hostname") { lastRejectSortAscending = !lastRejectSortAscending; // prevents sort from being reversed } LoadRejects(); break; } kObserverService.notifyObservers(null, "passwordmgr-dialog-updated", null); } } } /*** =================== GENERAL CODE =================== ***/ function DeleteAllFromTree(tree, view, table, deletedTable, removeButton, removeAllButton) { // remove all items from table and place in deleted table for (var i=0; i= 0; s--) { var i = selections[s]; deletedTable[deletedTable.length] = table[i]; table[i] = null; } // collapse list by removing all the null entries for (var j=0; j valB) return 1; return 0; } // do the sort table.sort(compareFunc); if (!ascending) table.reverse(); // restore the selection var selectedRow = -1; if (selectedNumber>=0 && updateSelection) { for (var s=0; s= 0) { tree.treeBoxObject.ensureRowIsVisible(selectedRow) } return ascending; }