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 |