Index: chrome/browser/resources/options/autofill_edit_address_overlay.js |
diff --git a/chrome/browser/resources/options/autofill_edit_address_overlay.js b/chrome/browser/resources/options/autofill_edit_address_overlay.js |
index c5e9f254600b1f670620533296f5fc2de22c6fb3..7ed59e43b78d42d8d3399fff4db61d62d31f52d5 100644 |
--- a/chrome/browser/resources/options/autofill_edit_address_overlay.js |
+++ b/chrome/browser/resources/options/autofill_edit_address_overlay.js |
@@ -6,12 +6,6 @@ cr.define('options', function() { |
/** @const */ var OptionsPage = options.OptionsPage; |
/** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; |
- // The GUID of the loaded address. |
- var guid; |
- |
- // The BCP 47 language code for the layout of input fields. |
- var languageCode; |
- |
/** |
* AutofillEditAddressOverlay class |
* Encapsulated handling of the 'Add Page' overlay page. |
@@ -29,6 +23,18 @@ cr.define('options', function() { |
__proto__: OptionsPage.prototype, |
/** |
+ * The GUID of the loaded address. |
+ * @type {string} |
+ */ |
+ guid_: '', |
+ |
+ /** |
+ * The BCP 47 language code for the layout of input fields. |
+ * @type {string} |
+ */ |
+ languageCode_: '', |
+ |
+ /** |
* Initializes the page. |
*/ |
initializePage: function() { |
@@ -68,15 +74,15 @@ cr.define('options', function() { |
event.preventDefault(); |
}; |
- this.guid = ''; |
+ this.guid_ = ''; |
this.populateCountryList_(); |
this.rebuildInputFields_( |
loadTimeData.getValue('autofillDefaultCountryComponents')); |
- this.languageCode = |
+ this.languageCode_ = |
loadTimeData.getString('autofillDefaultCountryLanguageCode'); |
this.connectInputEvents_(); |
this.setInputFields_({}); |
- this.getCountrySelector_().onchange = function(event) { |
+ this.getCountrySwitcher_().onchange = function(event) { |
self.countryChanged_(); |
}; |
}, |
@@ -108,7 +114,7 @@ cr.define('options', function() { |
/** |
* Updates the data model for the |list| with the values from |entries|. |
- * @param {element} list The list to update. |
+ * @param {cr.ui.List} list The list to update. |
* @param {Array} entries The list of items to be added to the list. |
* @private |
*/ |
@@ -135,23 +141,22 @@ cr.define('options', function() { |
dismissOverlay_: function() { |
this.setInputFields_({}); |
this.inputFieldChanged_(); |
- this.guid = ''; |
- this.languageCode = ''; |
+ this.guid_ = ''; |
+ this.languageCode_ = ''; |
OptionsPage.closeOverlay(); |
}, |
/** |
- * Returns the country selector element. |
- * @return {element} The country selector. |
+ * @return {Element} The element used to switch countries. |
* @private |
*/ |
- getCountrySelector_: function() { |
+ getCountrySwitcher_: function() { |
return this.pageDiv.querySelector('[field=country]'); |
}, |
/** |
* Returns all list elements. |
- * @return {NodeList} The list elements. |
+ * @return {!NodeList} The list elements. |
* @private |
*/ |
getLists_: function() { |
@@ -160,22 +165,20 @@ cr.define('options', function() { |
/** |
* Returns all text input elements. |
- * @return {NodeList} The text input elements. |
+ * @return {!NodeList} The text input elements. |
* @private |
*/ |
getTextFields_: function() { |
- return this.pageDiv.querySelectorAll( |
- ':-webkit-any(textarea, input)[field]'); |
+ return this.pageDiv.querySelectorAll('textarea[field], input[field]'); |
}, |
/** |
- * Aggregates the values in the input fields into an object. |
- * @return {object} The mapping from field names to values. |
+ * Creates a map from type => value for all text fields. |
+ * @return {Object} The mapping from field names to values. |
* @private |
*/ |
getInputFields_: function() { |
- var address = {}; |
- address['country'] = this.getCountrySelector_().value; |
+ var address = {country: this.getCountrySwitcher_().value}; |
var lists = this.getLists_(); |
for (var i = 0; i < lists.length; i++) { |
@@ -197,7 +200,7 @@ cr.define('options', function() { |
* @private |
*/ |
setInputFields_: function(address) { |
- this.getCountrySelector_().value = address['country'] || ''; |
+ this.getCountrySwitcher_().value = address.country || ''; |
var lists = this.getLists_(); |
for (var i = 0; i < lists.length; i++) { |
@@ -218,22 +221,21 @@ cr.define('options', function() { |
*/ |
saveAddress_: function() { |
var inputFields = this.getInputFields_(); |
- var address = new Array(); |
- var argCounter = 0; |
- address[argCounter++] = this.guid; |
- address[argCounter++] = inputFields['fullName'] || []; |
- address[argCounter++] = inputFields['companyName'] || ''; |
- address[argCounter++] = inputFields['addrLines'] || ''; |
- address[argCounter++] = inputFields['dependentLocality'] || ''; |
- address[argCounter++] = inputFields['city'] || ''; |
- address[argCounter++] = inputFields['state'] || ''; |
- address[argCounter++] = inputFields['postalCode'] || ''; |
- address[argCounter++] = inputFields['sortingCode'] || ''; |
- address[argCounter++] = inputFields['country'] || ''; |
- address[argCounter++] = inputFields['phone'] || []; |
- address[argCounter++] = inputFields['email'] || []; |
- address[argCounter++] = this.languageCode; |
- |
+ var address = [ |
+ this.guid_, |
+ inputFields.fullName || [], |
+ inputFields.companyName || '', |
+ inputFields.addrLines || '', |
+ inputFields.dependentLocality || '', |
+ inputFields.city || '', |
+ inputFields.state || '', |
+ inputFields.postalCode || '', |
+ inputFields.sortingCode || '', |
+ inputFields.country || '', |
+ inputFields.phone || [], |
+ inputFields.email || [], |
+ this.languageCode_, |
+ ]; |
chrome.send('setAddress', address); |
}, |
@@ -244,10 +246,9 @@ cr.define('options', function() { |
* @private |
*/ |
connectInputEvents_: function() { |
- var self = this; |
var fields = this.getTextFields_(); |
for (var i = 0; i < fields.length; i++) { |
- fields[i].oninput = function(event) { self.inputFieldChanged_(); }; |
+ fields[i].oninput = this.inputFieldChanged_.bind(this); |
} |
}, |
@@ -256,10 +257,7 @@ cr.define('options', function() { |
* @private |
*/ |
inputFieldChanged_: function() { |
- var disabled = true; |
- if (this.getCountrySelector_().value) |
- disabled = false; |
- |
+ var disabled = !this.getCountrySwitcher_().value; |
if (disabled) { |
// Length of lists are tested for > 1 due to the "add" placeholder item |
// in the list. |
@@ -290,7 +288,7 @@ cr.define('options', function() { |
* @private |
*/ |
countryChanged_: function() { |
- var countryCode = this.getCountrySelector_().value; |
+ var countryCode = this.getCountrySwitcher_().value; |
if (countryCode) |
chrome.send('loadAddressEditorComponents', [countryCode]); |
else |
@@ -305,7 +303,7 @@ cr.define('options', function() { |
var countryList = loadTimeData.getValue('autofillCountrySelectList'); |
// Add the countries to the country <select> list. |
- var countrySelect = this.getCountrySelector_(); |
+ var countrySelect = this.getCountrySwitcher_(); |
// Add an empty option. |
countrySelect.appendChild(new Option('', '')); |
for (var i = 0; i < countryList.length; i++) { |
@@ -319,6 +317,7 @@ cr.define('options', function() { |
/** |
* Loads the address data from |address|, sets the input fields based on |
* this data, and stores the GUID and language code of the address. |
+ * @param {!Object} address Lots of info about an address from the browser. |
* @private |
*/ |
loadAddress_: function(address) { |
@@ -326,38 +325,40 @@ cr.define('options', function() { |
this.setInputFields_(address); |
this.inputFieldChanged_(); |
this.connectInputEvents_(); |
- this.guid = address.guid; |
- this.languageCode = address.languageCode; |
+ this.guid_ = address.guid; |
+ this.languageCode_ = address.languageCode; |
}, |
/** |
* Takes a snapshot of the input values, clears the input values, loads the |
* address input layout from |input.components|, restores the input values |
* from snapshot, and stores the |input.languageCode| for the address. |
+ * @param {{languageCode: string, components: Array.<Object>}} input Info |
please use gerrit instead
2014/05/07 05:10:14
"components" is an array of array of objects. Exam
Dan Beam
2014/05/07 20:28:23
i think in general this is different from how the
|
+ * about how to layout inputs fields in this dialog. |
* @private |
*/ |
loadAddressComponents_: function(input) { |
- var address = this.getInputFields_(); |
+ var inputFields = this.getInputFields_(); |
this.rebuildInputFields_(input.components); |
- this.setInputFields_(address); |
+ this.setInputFields_(inputFields); |
this.inputFieldChanged_(); |
this.connectInputEvents_(); |
- this.languageCode = input.languageCode; |
+ this.languageCode_ = input.languageCode; |
}, |
/** |
* Clears address inputs and rebuilds the input fields according to |
* |components|. |
+ * @param {!Array.<{{field: string, value: string, placeholder: string=}}>} |
please use gerrit instead
2014/05/07 05:10:14
An array of arrays of objects with elements "field
Dan Beam
2014/05/07 20:28:23
Done.
|
+ * components A list of information about each input field. |
* @private |
*/ |
rebuildInputFields_: function(components) { |
var content = $('autofill-edit-address-fields'); |
- while (content.firstChild) { |
- content.removeChild(content.firstChild); |
- } |
+ content.innerHTML = ''; |
- var customContainerElements = {'fullName': 'div'}; |
- var customInputElements = {'fullName': 'list', 'addrLines': 'textarea'}; |
+ var customContainerElements = {fullName: 'div'}; |
+ var customInputElements = {fullName: 'list', addrLines: 'textarea'}; |
for (var i in components) { |
var row = document.createElement('div'); |