| Index: chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js
|
| diff --git a/chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js b/chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8402a10ea019d24a55e04d68f65987cd7c33e7d3
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js
|
| @@ -0,0 +1,205 @@
|
| +// 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;
|
| +
|
| + // The GUID of the loaded credit card.
|
| + var guid_;
|
| +
|
| + /**
|
| + * AutofillEditCreditCardOverlay class
|
| + * Encapsulated handling of the 'Add Page' overlay page.
|
| + * @class
|
| + */
|
| + function AutofillEditCreditCardOverlay() {
|
| + OptionsPage.call(this, 'autofillEditCreditCard',
|
| + templateData.autofillEditCreditCardTitle,
|
| + 'autofill-edit-credit-card-overlay');
|
| + }
|
| +
|
| + cr.addSingletonGetter(AutofillEditCreditCardOverlay);
|
| +
|
| + AutofillEditCreditCardOverlay.prototype = {
|
| + __proto__: OptionsPage.prototype,
|
| +
|
| + /**
|
| + * Initializes the page.
|
| + */
|
| + initializePage: function() {
|
| + OptionsPage.prototype.initializePage.call(this);
|
| +
|
| + var self = this;
|
| + $('autofill-edit-credit-card-cancel-button').onclick = function(event) {
|
| + self.dismissOverlay_();
|
| + }
|
| + $('autofill-edit-credit-card-apply-button').onclick = function(event) {
|
| + self.saveCreditCard_();
|
| + self.dismissOverlay_();
|
| + }
|
| +
|
| + self.guid_ = '';
|
| + self.hasEditedNumber_ = false;
|
| + self.clearInputFields_();
|
| + self.connectInputEvents_();
|
| + self.setDefaultSelectOptions_();
|
| + },
|
| +
|
| + /**
|
| + * Clears any uncommitted input, and dismisses the overlay.
|
| + * @private
|
| + */
|
| + dismissOverlay_: function() {
|
| + this.clearInputFields_();
|
| + this.guid_ = '';
|
| + this.hasEditedNumber_ = false;
|
| + OptionsPage.closeOverlay();
|
| + },
|
| +
|
| + /**
|
| + * Aggregates the values in the input fields into an array and sends the
|
| + * array to the Autofill handler.
|
| + * @private
|
| + */
|
| + saveCreditCard_: function() {
|
| + var creditCard = new Array(5);
|
| + creditCard[0] = this.guid_;
|
| + creditCard[1] = $('name-on-card').value;
|
| + creditCard[2] = $('credit-card-number').value;
|
| + creditCard[3] = $('expiration-month').value;
|
| + creditCard[4] = $('expiration-year').value;
|
| + chrome.send('setCreditCard', creditCard);
|
| + },
|
| +
|
| + /**
|
| + * Connects each input field to the inputFieldChanged_() method that enables
|
| + * or disables the 'Ok' button based on whether all the fields are empty or
|
| + * not.
|
| + * @private
|
| + */
|
| + connectInputEvents_: function() {
|
| + var ccNumber = $('credit-card-number');
|
| + $('name-on-card').oninput = ccNumber.oninput =
|
| + $('expiration-month').onchange = $('expiration-year').onchange =
|
| + this.inputFieldChanged_.bind(this);
|
| + },
|
| +
|
| + /**
|
| + * Checks the values of each of the input fields and disables the 'Ok'
|
| + * button if all of the fields are empty.
|
| + * @param {Event} opt_event Optional data for the 'input' event.
|
| + * @private
|
| + */
|
| + inputFieldChanged_: function(opt_event) {
|
| + var disabled = !$('name-on-card').value && !$('credit-card-number').value;
|
| + $('autofill-edit-credit-card-apply-button').disabled = disabled;
|
| + },
|
| +
|
| + /**
|
| + * Sets the default values of the options in the 'Expiration date' select
|
| + * controls.
|
| + * @private
|
| + */
|
| + setDefaultSelectOptions_: function() {
|
| + // Set the 'Expiration month' default options.
|
| + var expirationMonth = $('expiration-month');
|
| + expirationMonth.options.length = 0;
|
| + for (var i = 1; i <= 12; ++i) {
|
| + var text;
|
| + if (i < 10)
|
| + text = '0' + i;
|
| + else
|
| + text = i;
|
| +
|
| + var option = document.createElement('option');
|
| + option.text = text;
|
| + option.value = text;
|
| + expirationMonth.add(option, null);
|
| + }
|
| +
|
| + // Set the 'Expiration year' default options.
|
| + var expirationYear = $('expiration-year');
|
| + expirationYear.options.length = 0;
|
| +
|
| + var date = new Date();
|
| + var year = parseInt(date.getFullYear());
|
| + for (var i = 0; i < 10; ++i) {
|
| + var text = year + i;
|
| + var option = document.createElement('option');
|
| + option.text = text;
|
| + option.value = text;
|
| + expirationYear.add(option, null);
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Clears the value of each input field.
|
| + * @private
|
| + */
|
| + clearInputFields_: function() {
|
| + $('name-on-card').value = '';
|
| + $('credit-card-number').value = '';
|
| + $('expiration-month').selectedIndex = 0;
|
| + $('expiration-year').selectedIndex = 0;
|
| +
|
| + // Reset the enabled status of the 'Ok' button.
|
| + this.inputFieldChanged_();
|
| + },
|
| +
|
| + /**
|
| + * Sets the value of each input field according to |creditCard|
|
| + * @private
|
| + */
|
| + setInputFields_: function(creditCard) {
|
| + $('name-on-card').value = creditCard['nameOnCard'];
|
| + $('credit-card-number').value = creditCard['creditCardNumber'];
|
| +
|
| + // 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
|
| + // and then loaded a credit card profile to edit in the new year, so
|
| + // reload the select options just to be safe.
|
| + this.setDefaultSelectOptions_();
|
| +
|
| + var idx = parseInt(creditCard['expirationMonth'], 10);
|
| + $('expiration-month').selectedIndex = idx - 1;
|
| +
|
| + expYear = creditCard['expirationYear'];
|
| + var date = new Date();
|
| + var year = parseInt(date.getFullYear());
|
| + for (var i = 0; i < 10; ++i) {
|
| + var text = year + i;
|
| + if (expYear == String(text))
|
| + $('expiration-year').selectedIndex = i;
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Loads the credit card data from |creditCard|, sets the input fields based
|
| + * on this data and stores the GUID of the credit card.
|
| + * @private
|
| + */
|
| + loadCreditCard_: function(creditCard) {
|
| + this.setInputFields_(creditCard);
|
| + this.inputFieldChanged_();
|
| + this.guid_ = creditCard['guid'];
|
| + },
|
| + };
|
| +
|
| + AutofillEditCreditCardOverlay.clearInputFields = function(title) {
|
| + AutofillEditCreditCardOverlay.getInstance().clearInputFields_();
|
| + };
|
| +
|
| + AutofillEditCreditCardOverlay.loadCreditCard = function(creditCard) {
|
| + AutofillEditCreditCardOverlay.getInstance().loadCreditCard_(creditCard);
|
| + };
|
| +
|
| + AutofillEditCreditCardOverlay.setTitle = function(title) {
|
| + $('autofill-credit-card-title').textContent = title;
|
| + };
|
| +
|
| + // Export
|
| + return {
|
| + AutofillEditCreditCardOverlay: AutofillEditCreditCardOverlay
|
| + };
|
| +});
|
|
|