121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Use of this source code is governed by a BSD-style license that can be 321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// found in the LICENSE file. 421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsencr.define('options.passwordManager', function() { 621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen const ArrayDataModel = cr.ui.ArrayDataModel; 721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen const DeletableItemList = options.DeletableItemList; 821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen const DeletableItem = options.DeletableItem; 921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen const List = cr.ui.List; 1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Creates a new passwords list item. 1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @param {Array} entry An array of the form [url, username, password]. 1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @constructor 1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @extends {cr.ui.ListItem} 1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function PasswordListItem(entry, showPasswords) { 1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var el = cr.doc.createElement('div'); 1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen el.dataItem = entry; 2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen el.__proto__ = PasswordListItem.prototype; 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen el.decorate(showPasswords); 2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return el; 2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordListItem.prototype = { 2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen __proto__: DeletableItem.prototype, 2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 2921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** @inheritDoc */ 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen decorate: function(showPasswords) { 3121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen DeletableItem.prototype.decorate.call(this); 3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // The URL of the site. 3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var urlLabel = this.ownerDocument.createElement('div'); 3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen urlLabel.classList.add('favicon-cell'); 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen urlLabel.classList.add('url'); 3721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen urlLabel.textContent = this.url; 3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen urlLabel.style.backgroundImage = url('chrome://favicon/' + this.url); 3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.contentElement.appendChild(urlLabel); 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // The stored username. 4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var usernameLabel = this.ownerDocument.createElement('div'); 4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen usernameLabel.className = 'name'; 4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen usernameLabel.textContent = this.username; 4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.contentElement.appendChild(usernameLabel); 4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // The stored password. 4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var passwordInputDiv = this.ownerDocument.createElement('div'); 4921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen passwordInputDiv.className = 'password'; 5021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 5121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // The password input field. 5221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var passwordInput = this.ownerDocument.createElement('input'); 5321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen passwordInput.type = 'password'; 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen passwordInput.className = 'inactive-password'; 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen passwordInput.readOnly = true; 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen passwordInput.value = showPasswords ? this.password : "********"; 5721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen passwordInputDiv.appendChild(passwordInput); 5821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 5921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // The show/hide button. 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (showPasswords) { 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var button = this.ownerDocument.createElement('button'); 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen button.classList.add('hidden'); 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen button.classList.add('password-button'); 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen button.textContent = localStrings.getString('passwordShowButton'); 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen button.addEventListener('click', this.onClick_, true); 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen passwordInputDiv.appendChild(button); 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 6821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 6921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.contentElement.appendChild(passwordInputDiv); 7021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 7121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 7221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** @inheritDoc */ 7321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen selectionChanged: function() { 7421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var passwordInput = this.querySelector('input[type=password]'); 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen var textInput = this.querySelector('input[type=text]'); 7672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen var input = passwordInput || textInput; 7772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen var button = input.nextSibling; 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // |button| doesn't exist when passwords can't be shown. 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!button) 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 8121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (this.selected) { 8272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen input.classList.remove('inactive-password'); 8372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen button.classList.remove('hidden'); 8421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } else { 8572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen input.classList.add('inactive-password'); 8672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen button.classList.add('hidden'); 8721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 8821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 8921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 9021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 9121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * On-click event handler. Swaps the type of the input field from password 9221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * to text and back. 9321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @private 9421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 9521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen onClick_: function(event) { 9672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // The password is the input element previous to the button. 9772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen var button = event.currentTarget; 9872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen var passwordInput = button.previousSibling; 9972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (passwordInput.type == 'password') { 10072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen passwordInput.type = 'text'; 10172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen button.textContent = localStrings.getString('passwordHideButton'); 10272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } else { 10372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen passwordInput.type = 'password'; 10472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen button.textContent = localStrings.getString('passwordShowButton'); 10572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } 10621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 10721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 10821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 10921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Get and set the URL for the entry. 11021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @type {string} 11121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 11221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen get url() { 11321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return this.dataItem[0]; 11421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 11521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen set url(url) { 11621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.dataItem[0] = url; 11721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 11821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 11921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 12021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Get and set the username for the entry. 12121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @type {string} 12221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 12321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen get username() { 12421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return this.dataItem[1]; 12521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 12621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen set username(username) { 12721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.dataItem[1] = username; 12821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 12921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 13021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 13121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Get and set the password for the entry. 13221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @type {string} 13321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 13421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen get password() { 13521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return this.dataItem[2]; 13621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 13721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen set password(password) { 13821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.dataItem[2] = password; 13921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 14021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }; 14121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 14221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 14321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Creates a new PasswordExceptions list item. 14421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @param {Array} entry A pair of the form [url, username]. 14521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @constructor 14621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @extends {Deletable.ListItem} 14721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 14821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen function PasswordExceptionsListItem(entry) { 14921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var el = cr.doc.createElement('div'); 15021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen el.dataItem = entry; 15121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen el.__proto__ = PasswordExceptionsListItem.prototype; 15221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen el.decorate(); 15321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 15421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return el; 15521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 15621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 15721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordExceptionsListItem.prototype = { 15821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen __proto__: DeletableItem.prototype, 15921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 16021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 16121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Call when an element is decorated as a list item. 16221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 16321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen decorate: function() { 16421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen DeletableItem.prototype.decorate.call(this); 16521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 16621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // The URL of the site. 16721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var urlLabel = this.ownerDocument.createElement('div'); 16821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen urlLabel.className = 'url'; 16921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen urlLabel.classList.add('favicon-cell'); 17021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen urlLabel.textContent = this.url; 17121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen urlLabel.style.backgroundImage = url('chrome://favicon/' + this.url); 17221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.contentElement.appendChild(urlLabel); 17321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 17421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 17521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 17621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Get the url for the entry. 17721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @type {string} 17821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 17921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen get url() { 18021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return this.dataItem; 18121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 18221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen set url(url) { 18321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.dataItem = url; 18421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 18521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }; 18621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 18721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 18821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Create a new passwords list. 18921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @constructor 19021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @extends {cr.ui.List} 19121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 19221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var PasswordsList = cr.ui.define('list'); 19321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 19421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordsList.prototype = { 19521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen __proto__: DeletableItemList.prototype, 19621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 197ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 198ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * Whether passwords can be revealed or not. 199ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @type {boolean} 200ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @private 201ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 202ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen showPasswords_: true, 203ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 204ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** @inheritDoc */ 205ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen decorate: function() { 206ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DeletableItemList.prototype.decorate.call(this); 207ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Preferences.getInstance().addEventListener( 208ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "profile.password_manager_allow_show_passwords", 209ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.onPreferenceChanged_.bind(this)); 210ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }, 211ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 212ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 213ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * Listener for changes on the preference. 214ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @param {Event} event The preference update event. 215ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @private 216ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 217ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen onPreferenceChanged_: function(event) { 218ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.showPasswords_ = event.value.value; 219ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.redraw(); 220ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }, 221ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 22221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** @inheritDoc */ 22321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen createItem: function(entry) { 224ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return new PasswordListItem(entry, this.showPasswords_); 22521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 22621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 22721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** @inheritDoc */ 22821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen deleteItemAtIndex: function(index) { 22921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordManager.removeSavedPassword(index); 23021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 23121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 23221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 23321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * The length of the list. 23421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 23521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen get length() { 23621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return this.dataModel.length; 23721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 23821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }; 23921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 24021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 24121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Create a new passwords list. 24221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @constructor 24321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * @extends {cr.ui.List} 24421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 24521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen var PasswordExceptionsList = cr.ui.define('list'); 24621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 24721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordExceptionsList.prototype = { 24821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen __proto__: DeletableItemList.prototype, 24921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 25021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** @inheritDoc */ 25121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen createItem: function(entry) { 25221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return new PasswordExceptionsListItem(entry); 25321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 25421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 25521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** @inheritDoc */ 25621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen deleteItemAtIndex: function(index) { 25721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordManager.removePasswordException(index); 25821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 25921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 26021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 26121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * The length of the list. 26221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 26321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen get length() { 26421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return this.dataModel.length; 26521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }, 26621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }; 26721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 26821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return { 26921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordListItem: PasswordListItem, 27021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordExceptionsListItem: PasswordExceptionsListItem, 27121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordsList: PasswordsList, 27221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen PasswordExceptionsList: PasswordExceptionsList, 27321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen }; 27421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}); 275