| Index: chrome/browser/resources/options/autofill_edit_creditcard_overlay.js
|
| diff --git a/chrome/browser/resources/options/autofill_edit_creditcard_overlay.js b/chrome/browser/resources/options/autofill_edit_creditcard_overlay.js
|
| index c61255ec786656e36f5f9566b298caf8f4e29d1c..ee29af77e031572788a5be2d33db1aa1c40305f3 100644
|
| --- a/chrome/browser/resources/options/autofill_edit_creditcard_overlay.js
|
| +++ b/chrome/browser/resources/options/autofill_edit_creditcard_overlay.js
|
| @@ -6,7 +6,15 @@ cr.define('options', function() {
|
| const OptionsPage = options.OptionsPage;
|
|
|
| // The GUID of the loaded credit card.
|
| - var guid;
|
| + var guid_;
|
| +
|
| + // The CC number of the profile, used to check for changes to the input field.
|
| + var storedCCNumber_;
|
| +
|
| + // Set to true if the user has edited the CC number field. When saving the
|
| + // CC profile after editing, the stored CC number is saved if the input field
|
| + // has not been modified.
|
| + var hasEditedNumber_;
|
|
|
| /**
|
| * AutoFillEditCreditCardOverlay class
|
| @@ -38,20 +46,38 @@ cr.define('options', function() {
|
| self.saveCreditCard_();
|
| self.dismissOverlay_();
|
| }
|
| + $('creditCardNumber').onkeydown = this.onKeyDown_.bind(this);
|
|
|
| - self.guid = '';
|
| + self.guid_ = '';
|
| + self.storedCCNumber_ = '';
|
| + self.hasEditedNumber_ = false;
|
| self.clearInputFields_();
|
| self.connectInputEvents_();
|
| self.setDefaultSelectOptions_();
|
| },
|
|
|
| /**
|
| + * Handles the keydown event.
|
| + * @private
|
| + */
|
| + onKeyDown_: function(event) {
|
| + // If the user hasn't edited the text yet, delete it all on edit.
|
| + if (!this.hasEditedNumber_ &&
|
| + $('creditCardNumber').value != this.storedCCNumber_) {
|
| + this.hasEditedNumber_ = true;
|
| + $('creditCardNumber').value = '';
|
| + }
|
| + },
|
| +
|
| + /**
|
| * Clears any uncommitted input, and dismisses the overlay.
|
| * @private
|
| */
|
| dismissOverlay_: function() {
|
| this.clearInputFields_();
|
| - this.guid = '';
|
| + this.guid_ = '';
|
| + this.storedCCNumber_ = '';
|
| + this.hasEditedNumber_ = false;
|
| OptionsPage.clearOverlays();
|
| },
|
|
|
| @@ -62,12 +88,16 @@ cr.define('options', function() {
|
| */
|
| saveCreditCard_: function() {
|
| var creditCard = new Array(5);
|
| - creditCard[0] = this.guid;
|
| + creditCard[0] = this.guid_;
|
| creditCard[1] = $('nameOnCard').value;
|
| - creditCard[2] = $('creditCardNumber').value;
|
| creditCard[3] = $('expirationMonth').value;
|
| creditCard[4] = $('expirationYear').value;
|
|
|
| + if (this.hasEditedNumber_)
|
| + creditCard[2] = $('creditCardNumber').value;
|
| + else
|
| + creditCard[2] = this.storedCCNumber_;
|
| +
|
| chrome.send('setCreditCard', creditCard);
|
| },
|
|
|
| @@ -80,11 +110,10 @@ cr.define('options', function() {
|
| connectInputEvents_: function() {
|
| var self = this;
|
| $('nameOnCard').oninput = $('creditCardNumber').oninput =
|
| - $('expirationMonth').onchange = $('expirationYear').onchange =
|
| - // TODO(isherman): What should the indentation of this line be?
|
| - function(event) {
|
| - self.inputFieldChanged_();
|
| - }
|
| + $('expirationMonth').onchange = $('expirationYear').onchange =
|
| + function(event) {
|
| + self.inputFieldChanged_();
|
| + }
|
| },
|
|
|
| /**
|
| @@ -151,7 +180,7 @@ cr.define('options', function() {
|
| */
|
| setInputFields_: function(creditCard) {
|
| $('nameOnCard').value = creditCard['nameOnCard'];
|
| - $('creditCardNumber').value = creditCard['creditCardNumber'];
|
| + $('creditCardNumber').value = creditCard['obfuscatedCardNumber'];
|
|
|
| // The options for the year select control may be out-dated at this point,
|
| // e.g. the user opened the options page before midnight on New Year's Eve
|
| @@ -180,7 +209,8 @@ cr.define('options', function() {
|
| loadCreditCard_: function(creditCard) {
|
| this.setInputFields_(creditCard);
|
| this.inputFieldChanged_();
|
| - this.guid = creditCard['guid'];
|
| + this.guid_ = creditCard['guid'];
|
| + this.storedCCNumber_ = creditCard['creditCardNumber'];
|
| },
|
| };
|
|
|
|
|