// 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
};
});