Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4139)

Unified Diff: chrome/browser/resources/options/password_manager.js

Issue 489103004: Allow editing passwords in settings/passwords (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed a type mismatch in password_manager.js Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/resources/options/password_manager_list.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/options/password_manager.js
diff --git a/chrome/browser/resources/options/password_manager.js b/chrome/browser/resources/options/password_manager.js
index 6d0b6a749819e68c324c8c9387908ed3c0dfb904..4600b8cf8d6da71d1609af0294a87a66c0f285e6 100644
--- a/chrome/browser/resources/options/password_manager.js
+++ b/chrome/browser/resources/options/password_manager.js
@@ -55,6 +55,13 @@ cr.define('options', function() {
*/
lastQuery_: null,
+ /**
+ * Whether a search query filter is applied to the current data model.
+ * @type {boolean}
+ * @private
+ */
+ filterIsActive_: false,
+
/** @override */
initializePage: function() {
Page.prototype.initializePage.call(this);
@@ -158,6 +165,7 @@ cr.define('options', function() {
* @param {!Array} entries The list of saved password data.
*/
setSavedPasswordsList_: function(entries) {
+ this.filterIsActive_ = !!this.lastQuery_;
if (this.lastQuery_) {
// Implement password searching here in javascript, rather than in C++.
// The number of saved passwords shouldn't be too big for us to handle.
@@ -174,6 +182,9 @@ cr.define('options', function() {
return false;
};
entries = entries.filter(filter);
+ } else {
+ // Adds the Add New Entry row.
+ entries.push(null);
}
this.savedPasswordsList_.dataModel = new ArrayDataModel(entries);
this.updateListVisibility_(this.savedPasswordsList_);
@@ -197,7 +208,7 @@ cr.define('options', function() {
*/
showPassword_: function(index, password) {
var model = this.savedPasswordsList_.dataModel;
- if (this.lastQuery_) {
+ if (this.filterIsActive_) {
// When a filter is active, |index| does not represent the current
// index in the model, but each entry stores its original index, so
// we can find the item using a linear search.
@@ -213,6 +224,53 @@ cr.define('options', function() {
var item = this.savedPasswordsList_.getListItemByIndex(index);
item.showPassword(password);
},
+
+ /**
+ * Forwards the validity of the origin to the Add New Entry row.
+ * @param {string} url The origin.
+ * @param {boolean} valid The validity of the origin for adding.
+ * @private
+ */
+ originValidityCheckComplete_: function(url, valid) {
+ // There is no Add New Entry row when a filter is active.
+ if (this.filterIsActive_)
+ return;
+ // Since no filter is active, the Add New Entry row always exists and its
+ // item is the last one.
+ var model = this.savedPasswordsList_.dataModel;
+ assert(model.length > 0);
+ var addRowItem = this.savedPasswordsList_.getListItemByIndex(
+ model.length - 1);
+ addRowItem.originValidityCheckComplete(url, valid);
+ },
+ };
+
+ /**
+ * Requests the browser to check the validity of the origin being edited by
+ * the user in the Add New Entry row.
+ * @param {string} url The origin being edited.
+ */
+ PasswordManager.checkOriginValidityForAdding = function(url) {
+ chrome.send('checkOriginValidityForAdding', [url]);
+ };
+
+ /**
+ * Adds a new password entry.
+ * @param {string} url The origin.
+ * @param {string} username The username value.
+ * @param {string} password The password value.
+ */
+ PasswordManager.addPassword = function(url, username, password) {
+ chrome.send('addPassword', [url, username, password]);
+ };
+
+ /**
+ * Updates the password value of an entry.
+ * @param {number} rowIndex The row to update.
+ * @param {string} newPassword The new password value.
+ */
+ PasswordManager.updatePassword = function(rowIndex, newPassword) {
+ chrome.send('updatePassword', [String(rowIndex), newPassword]);
};
/**
@@ -239,7 +297,8 @@ cr.define('options', function() {
cr.makePublic(PasswordManager, [
'setSavedPasswordsList',
'setPasswordExceptionsList',
- 'showPassword'
+ 'showPassword',
+ 'originValidityCheckComplete'
]);
// Export
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/resources/options/password_manager_list.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698