// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('options', function() { const OptionsPage = options.OptionsPage; const ArrayDataModel = cr.ui.ArrayDataModel; ///////////////////////////////////////////////////////////////////////////// // PasswordManager class: /** * Encapsulated handling of password and exceptions page. * @constructor */ function PasswordManager() { this.activeNavTab = null; OptionsPage.call(this, 'passwords', templateData.passwordsPageTabTitle, 'password-manager'); } cr.addSingletonGetter(PasswordManager); PasswordManager.prototype = { __proto__: OptionsPage.prototype, /** * The saved passwords list. * @type {DeletableItemList} * @private */ savedPasswordsList_: null, /** * The password exceptions list. * @type {DeletableItemList} * @private */ passwordExceptionsList_: null, /** @inheritDoc */ initializePage: function() { OptionsPage.prototype.initializePage.call(this); this.createSavedPasswordsList_(); this.createPasswordExceptionsList_(); }, /** @inheritDoc */ canShowPage: function() { return !PersonalOptions.disablePasswordManagement(); }, /** @inheritDoc */ didShowPage: function() { // Updating the password lists may cause a blocking platform dialog pop up // (Mac, Linux), so we delay this operation until the page is shown. chrome.send('updatePasswordLists'); }, /** * Creates, decorates and initializes the saved passwords list. * @private */ createSavedPasswordsList_: function() { this.savedPasswordsList_ = $('saved-passwords-list'); options.passwordManager.PasswordsList.decorate(this.savedPasswordsList_); this.savedPasswordsList_.autoExpands = true; }, /** * Creates, decorates and initializes the password exceptions list. * @private */ createPasswordExceptionsList_: function() { this.passwordExceptionsList_ = $('password-exceptions-list'); options.passwordManager.PasswordExceptionsList.decorate( this.passwordExceptionsList_); this.passwordExceptionsList_.autoExpands = true; }, /** * Updates the visibility of the list and empty list placeholder. * @param {!List} list The list to toggle visilibility for. */ updateListVisibility_: function(list) { var empty = list.dataModel.length == 0; var listPlaceHolderID = list.id + '-empty-placeholder'; list.hidden = empty; $(listPlaceHolderID).hidden = !empty; }, /** * Updates the data model for the saved passwords list with the values from * |entries|. * @param {Array} entries The list of saved password data. */ setSavedPasswordsList_: function(entries) { this.savedPasswordsList_.dataModel = new ArrayDataModel(entries); this.updateListVisibility_(this.savedPasswordsList_); }, /** * Updates the data model for the password exceptions list with the values * from |entries|. * @param {Array} entries The list of password exception data. */ setPasswordExceptionsList_: function(entries) { this.passwordExceptionsList_.dataModel = new ArrayDataModel(entries); this.updateListVisibility_(this.passwordExceptionsList_); }, }; /** * Call to remove a saved password. * @param rowIndex indicating the row to remove. */ PasswordManager.removeSavedPassword = function(rowIndex) { chrome.send('removeSavedPassword', [String(rowIndex)]); }; /** * Call to remove a password exception. * @param rowIndex indicating the row to remove. */ PasswordManager.removePasswordException = function(rowIndex) { chrome.send('removePasswordException', [String(rowIndex)]); }; /** * Call to remove all saved passwords. * @param tab contentType of the tab currently on. */ PasswordManager.removeAllPasswords = function() { chrome.send('removeAllSavedPasswords'); }; /** * Call to remove all saved passwords. * @param tab contentType of the tab currently on. */ PasswordManager.removeAllPasswordExceptions = function() { chrome.send('removeAllPasswordExceptions'); }; PasswordManager.setSavedPasswordsList = function(entries) { PasswordManager.getInstance().setSavedPasswordsList_(entries); }; PasswordManager.setPasswordExceptionsList = function(entries) { PasswordManager.getInstance().setPasswordExceptionsList_(entries); }; // Export return { PasswordManager: PasswordManager }; });