OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 cr.define('options', function() { |
| 6 const OptionsPage = options.OptionsPage; |
| 7 const ArrayDataModel = cr.ui.ArrayDataModel; |
| 8 |
| 9 ///////////////////////////////////////////////////////////////////////////// |
| 10 // AutofillOptions class: |
| 11 |
| 12 /** |
| 13 * Encapsulated handling of Autofill options page. |
| 14 * @constructor |
| 15 */ |
| 16 function AutofillOptions() { |
| 17 OptionsPage.call(this, |
| 18 'autofill', |
| 19 templateData.autofillOptionsPageTabTitle, |
| 20 'autofill-options'); |
| 21 } |
| 22 |
| 23 cr.addSingletonGetter(AutofillOptions); |
| 24 |
| 25 AutofillOptions.prototype = { |
| 26 __proto__: OptionsPage.prototype, |
| 27 |
| 28 /** |
| 29 * The address list. |
| 30 * @type {DeletableItemList} |
| 31 * @private |
| 32 */ |
| 33 addressList_: null, |
| 34 |
| 35 /** |
| 36 * The credit card list. |
| 37 * @type {DeletableItemList} |
| 38 * @private |
| 39 */ |
| 40 creditCardList_: null, |
| 41 |
| 42 initializePage: function() { |
| 43 OptionsPage.prototype.initializePage.call(this); |
| 44 |
| 45 this.createAddressList_(); |
| 46 this.createCreditCardList_(); |
| 47 |
| 48 var self = this; |
| 49 $('autofill-add-address').onclick = function(event) { |
| 50 self.showAddAddressOverlay_(); |
| 51 }; |
| 52 $('autofill-add-creditcard').onclick = function(event) { |
| 53 self.showAddCreditCardOverlay_(); |
| 54 }; |
| 55 |
| 56 // TODO(jhawkins): What happens when Autofill is disabled whilst on the |
| 57 // Autofill options page? |
| 58 }, |
| 59 |
| 60 /** |
| 61 * Creates, decorates and initializes the address list. |
| 62 * @private |
| 63 */ |
| 64 createAddressList_: function() { |
| 65 this.addressList_ = $('address-list'); |
| 66 options.autofillOptions.AutofillAddressList.decorate(this.addressList_); |
| 67 this.addressList_.autoExpands = true; |
| 68 }, |
| 69 |
| 70 /** |
| 71 * Creates, decorates and initializes the credit card list. |
| 72 * @private |
| 73 */ |
| 74 createCreditCardList_: function() { |
| 75 this.creditCardList_ = $('creditcard-list'); |
| 76 options.autofillOptions.AutofillCreditCardList.decorate( |
| 77 this.creditCardList_); |
| 78 this.creditCardList_.autoExpands = true; |
| 79 }, |
| 80 |
| 81 /** |
| 82 * Shows the 'Add address' overlay, specifically by loading the |
| 83 * 'Edit address' overlay, emptying the input fields and modifying the |
| 84 * overlay title. |
| 85 * @private |
| 86 */ |
| 87 showAddAddressOverlay_: function() { |
| 88 var title = localStrings.getString('addAddressTitle'); |
| 89 AutofillEditAddressOverlay.setTitle(title); |
| 90 AutofillEditAddressOverlay.clearInputFields(); |
| 91 OptionsPage.navigateToPage('autofillEditAddress'); |
| 92 }, |
| 93 |
| 94 /** |
| 95 * Shows the 'Add credit card' overlay, specifically by loading the |
| 96 * 'Edit credit card' overlay, emptying the input fields and modifying the |
| 97 * overlay title. |
| 98 * @private |
| 99 */ |
| 100 showAddCreditCardOverlay_: function() { |
| 101 var title = localStrings.getString('addCreditCardTitle'); |
| 102 AutofillEditCreditCardOverlay.setTitle(title); |
| 103 AutofillEditCreditCardOverlay.clearInputFields(); |
| 104 OptionsPage.navigateToPage('autofillEditCreditCard'); |
| 105 }, |
| 106 |
| 107 /** |
| 108 * Updates the data model for the address list with the values from |
| 109 * |entries|. |
| 110 * @param {Array} entries The list of addresses. |
| 111 */ |
| 112 setAddressList_: function(entries) { |
| 113 this.addressList_.dataModel = new ArrayDataModel(entries); |
| 114 }, |
| 115 |
| 116 /** |
| 117 * Updates the data model for the credit card list with the values from |
| 118 * |entries|. |
| 119 * @param {Array} entries The list of credit cards. |
| 120 */ |
| 121 setCreditCardList_: function(entries) { |
| 122 this.creditCardList_.dataModel = new ArrayDataModel(entries); |
| 123 }, |
| 124 |
| 125 /** |
| 126 * Removes the Autofill address represented by |guid|. |
| 127 * @param {String} guid The GUID of the address to remove. |
| 128 * @private |
| 129 */ |
| 130 removeAddress_: function(guid) { |
| 131 chrome.send('removeAddress', [guid]); |
| 132 }, |
| 133 |
| 134 /** |
| 135 * Removes the Autofill credit card represented by |guid|. |
| 136 * @param {String} guid The GUID of the credit card to remove. |
| 137 * @private |
| 138 */ |
| 139 removeCreditCard_: function(guid) { |
| 140 chrome.send('removeCreditCard', [guid]); |
| 141 }, |
| 142 |
| 143 /** |
| 144 * Requests profile data for the address represented by |guid| from the |
| 145 * PersonalDataManager. Once the data is loaded, the AutofillOptionsHandler |
| 146 * calls showEditAddressOverlay(). |
| 147 * @param {String} guid The GUID of the address to edit. |
| 148 * @private |
| 149 */ |
| 150 loadAddressEditor_: function(guid) { |
| 151 chrome.send('loadAddressEditor', [guid]); |
| 152 }, |
| 153 |
| 154 /** |
| 155 * Requests profile data for the credit card represented by |guid| from the |
| 156 * PersonalDataManager. Once the data is loaded, the AutofillOptionsHandler |
| 157 * calls showEditCreditCardOverlay(). |
| 158 * @param {String} guid The GUID of the credit card to edit. |
| 159 * @private |
| 160 */ |
| 161 loadCreditCardEditor_: function(guid) { |
| 162 chrome.send('loadCreditCardEditor', [guid]); |
| 163 }, |
| 164 |
| 165 /** |
| 166 * Shows the 'Edit address' overlay, using the data in |address| to fill the |
| 167 * input fields. |address| is a list with one item, an associative array |
| 168 * that contains the address data. |
| 169 * @private |
| 170 */ |
| 171 showEditAddressOverlay_: function(address) { |
| 172 var title = localStrings.getString('editAddressTitle'); |
| 173 AutofillEditAddressOverlay.setTitle(title); |
| 174 AutofillEditAddressOverlay.loadAddress(address); |
| 175 OptionsPage.navigateToPage('autofillEditAddress'); |
| 176 }, |
| 177 |
| 178 /** |
| 179 * Shows the 'Edit credit card' overlay, using the data in |credit_card| to |
| 180 * fill the input fields. |address| is a list with one item, an associative |
| 181 * array that contains the credit card data. |
| 182 * @private |
| 183 */ |
| 184 showEditCreditCardOverlay_: function(creditCard) { |
| 185 var title = localStrings.getString('editCreditCardTitle'); |
| 186 AutofillEditCreditCardOverlay.setTitle(title); |
| 187 AutofillEditCreditCardOverlay.loadCreditCard(creditCard); |
| 188 OptionsPage.navigateToPage('autofillEditCreditCard'); |
| 189 }, |
| 190 }; |
| 191 |
| 192 AutofillOptions.setAddressList = function(entries) { |
| 193 AutofillOptions.getInstance().setAddressList_(entries); |
| 194 }; |
| 195 |
| 196 AutofillOptions.setCreditCardList = function(entries) { |
| 197 AutofillOptions.getInstance().setCreditCardList_(entries); |
| 198 }; |
| 199 |
| 200 AutofillOptions.removeAddress = function(guid) { |
| 201 AutofillOptions.getInstance().removeAddress_(guid); |
| 202 }; |
| 203 |
| 204 AutofillOptions.removeCreditCard = function(guid) { |
| 205 AutofillOptions.getInstance().removeCreditCard_(guid); |
| 206 }; |
| 207 |
| 208 AutofillOptions.loadAddressEditor = function(guid) { |
| 209 AutofillOptions.getInstance().loadAddressEditor_(guid); |
| 210 }; |
| 211 |
| 212 AutofillOptions.loadCreditCardEditor = function(guid) { |
| 213 AutofillOptions.getInstance().loadCreditCardEditor_(guid); |
| 214 }; |
| 215 |
| 216 AutofillOptions.editAddress = function(address) { |
| 217 AutofillOptions.getInstance().showEditAddressOverlay_(address); |
| 218 }; |
| 219 |
| 220 AutofillOptions.editCreditCard = function(creditCard) { |
| 221 AutofillOptions.getInstance().showEditCreditCardOverlay_(creditCard); |
| 222 }; |
| 223 |
| 224 // Export |
| 225 return { |
| 226 AutofillOptions: AutofillOptions |
| 227 }; |
| 228 |
| 229 }); |
| 230 |
OLD | NEW |