diff -r 000000000000 -r 6474c204b198 toolkit/components/passwordmgr/content/passwordManagerCommon.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/components/passwordmgr/content/passwordManagerCommon.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,233 @@ +// -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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=0 && updateSelection) { + for (var s=0; s= 0) { + tree.treeBoxObject.ensureRowIsVisible(selectedRow) + } + + return ascending; +} + +/** + * Case insensitive string comparator. + */ +function CompareLowerCase(first, second) { + var firstLower, secondLower; + + // Are we sorting nsILoginInfo entries or just strings? + if (first.hostname) { + firstLower = first.hostname.toLowerCase(); + secondLower = second.hostname.toLowerCase(); + } else { + firstLower = first.toLowerCase(); + secondLower = second.toLowerCase(); + } + + if (firstLower < secondLower) { + return -1; + } + + if (firstLower > secondLower) { + return 1; + } + + return 0; +}