Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: chrome/browser/resources/options/autofill_edit_creditcard_overlay.js

Issue 6369015: DOMUI: Two fixes for CC editor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/dom_ui/options/autofill_options_handler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('options', function() { 5 cr.define('options', function() {
6 const OptionsPage = options.OptionsPage; 6 const OptionsPage = options.OptionsPage;
7 7
8 // The GUID of the loaded credit card. 8 // The GUID of the loaded credit card.
9 var guid; 9 var guid_;
10
11 // The CC number of the profile, used to check for changes to the input field.
12 var storedCCNumber_;
13
14 // Set to true if the user has edited the CC number field. When saving the
15 // CC profile after editing, the stored CC number is saved if the input field
16 // has not been modified.
17 var hasEditedNumber_;
10 18
11 /** 19 /**
12 * AutoFillEditCreditCardOverlay class 20 * AutoFillEditCreditCardOverlay class
13 * Encapsulated handling of the 'Add Page' overlay page. 21 * Encapsulated handling of the 'Add Page' overlay page.
14 * @class 22 * @class
15 */ 23 */
16 function AutoFillEditCreditCardOverlay() { 24 function AutoFillEditCreditCardOverlay() {
17 OptionsPage.call(this, 'autoFillEditCreditCardOverlay', 25 OptionsPage.call(this, 'autoFillEditCreditCardOverlay',
18 templateData.autoFillEditCreditCardTitle, 26 templateData.autoFillEditCreditCardTitle,
19 'autoFillEditCreditCardOverlay'); 27 'autoFillEditCreditCardOverlay');
(...skipping 11 matching lines...) Expand all
31 OptionsPage.prototype.initializePage.call(this); 39 OptionsPage.prototype.initializePage.call(this);
32 40
33 var self = this; 41 var self = this;
34 $('autoFillEditCreditCardCancelButton').onclick = function(event) { 42 $('autoFillEditCreditCardCancelButton').onclick = function(event) {
35 self.dismissOverlay_(); 43 self.dismissOverlay_();
36 } 44 }
37 $('autoFillEditCreditCardApplyButton').onclick = function(event) { 45 $('autoFillEditCreditCardApplyButton').onclick = function(event) {
38 self.saveCreditCard_(); 46 self.saveCreditCard_();
39 self.dismissOverlay_(); 47 self.dismissOverlay_();
40 } 48 }
49 $('creditCardNumber').onkeydown = this.onKeyDown_.bind(this);
41 50
42 self.guid = ''; 51 self.guid_ = '';
52 self.storedCCNumber_ = '';
53 self.hasEditedNumber_ = false;
43 self.clearInputFields_(); 54 self.clearInputFields_();
44 self.connectInputEvents_(); 55 self.connectInputEvents_();
45 self.setDefaultSelectOptions_(); 56 self.setDefaultSelectOptions_();
46 }, 57 },
47 58
48 /** 59 /**
60 * Handles the keydown event.
61 * @private
62 */
63 onKeyDown_: function(event) {
64 // If the user hasn't edited the text yet, delete it all on edit.
65 if (!this.hasEditedNumber_ &&
66 $('creditCardNumber').value != this.storedCCNumber_) {
67 this.hasEditedNumber_ = true;
68 $('creditCardNumber').value = '';
69 }
70 },
71
72 /**
49 * Clears any uncommitted input, and dismisses the overlay. 73 * Clears any uncommitted input, and dismisses the overlay.
50 * @private 74 * @private
51 */ 75 */
52 dismissOverlay_: function() { 76 dismissOverlay_: function() {
53 this.clearInputFields_(); 77 this.clearInputFields_();
54 this.guid = ''; 78 this.guid_ = '';
79 this.storedCCNumber_ = '';
80 this.hasEditedNumber_ = false;
55 OptionsPage.clearOverlays(); 81 OptionsPage.clearOverlays();
56 }, 82 },
57 83
58 /** 84 /**
59 * Aggregates the values in the input fields into an array and sends the 85 * Aggregates the values in the input fields into an array and sends the
60 * array to the AutoFill handler. 86 * array to the AutoFill handler.
61 * @private 87 * @private
62 */ 88 */
63 saveCreditCard_: function() { 89 saveCreditCard_: function() {
64 var creditCard = new Array(5); 90 var creditCard = new Array(5);
65 creditCard[0] = this.guid; 91 creditCard[0] = this.guid_;
66 creditCard[1] = $('nameOnCard').value; 92 creditCard[1] = $('nameOnCard').value;
67 creditCard[2] = $('creditCardNumber').value;
68 creditCard[3] = $('expirationMonth').value; 93 creditCard[3] = $('expirationMonth').value;
69 creditCard[4] = $('expirationYear').value; 94 creditCard[4] = $('expirationYear').value;
70 95
96 if (this.hasEditedNumber_)
97 creditCard[2] = $('creditCardNumber').value;
98 else
99 creditCard[2] = this.storedCCNumber_;
100
71 chrome.send('setCreditCard', creditCard); 101 chrome.send('setCreditCard', creditCard);
72 }, 102 },
73 103
74 /** 104 /**
75 * Connects each input field to the inputFieldChanged_() method that enables 105 * Connects each input field to the inputFieldChanged_() method that enables
76 * or disables the 'Ok' button based on whether all the fields are empty or 106 * or disables the 'Ok' button based on whether all the fields are empty or
77 * not. 107 * not.
78 * @private 108 * @private
79 */ 109 */
80 connectInputEvents_: function() { 110 connectInputEvents_: function() {
81 var self = this; 111 var self = this;
82 $('nameOnCard').oninput = $('creditCardNumber').oninput = 112 $('nameOnCard').oninput = $('creditCardNumber').oninput =
83 $('expirationMonth').onchange = $('expirationYear').onchange = 113 $('expirationMonth').onchange = $('expirationYear').onchange =
84 // TODO(isherman): What should the indentation of this line be? 114 function(event) {
85 function(event) { 115 self.inputFieldChanged_();
86 self.inputFieldChanged_(); 116 }
87 }
88 }, 117 },
89 118
90 /** 119 /**
91 * Checks the values of each of the input fields and disables the 'Ok' 120 * Checks the values of each of the input fields and disables the 'Ok'
92 * button if all of the fields are empty. 121 * button if all of the fields are empty.
93 * @private 122 * @private
94 */ 123 */
95 inputFieldChanged_: function() { 124 inputFieldChanged_: function() {
96 var disabled = !$('nameOnCard').value && !$('creditCardNumber').value; 125 var disabled = !$('nameOnCard').value && !$('creditCardNumber').value;
97 $('autoFillEditCreditCardApplyButton').disabled = disabled; 126 $('autoFillEditCreditCardApplyButton').disabled = disabled;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 $('expirationMonth').selectedIndex = 0; 173 $('expirationMonth').selectedIndex = 0;
145 $('expirationYear').selectedIndex = 0; 174 $('expirationYear').selectedIndex = 0;
146 }, 175 },
147 176
148 /** 177 /**
149 * Sets the value of each input field according to |creditCard| 178 * Sets the value of each input field according to |creditCard|
150 * @private 179 * @private
151 */ 180 */
152 setInputFields_: function(creditCard) { 181 setInputFields_: function(creditCard) {
153 $('nameOnCard').value = creditCard['nameOnCard']; 182 $('nameOnCard').value = creditCard['nameOnCard'];
154 $('creditCardNumber').value = creditCard['creditCardNumber']; 183 $('creditCardNumber').value = creditCard['obfuscatedCardNumber'];
155 184
156 // The options for the year select control may be out-dated at this point, 185 // The options for the year select control may be out-dated at this point,
157 // e.g. the user opened the options page before midnight on New Year's Eve 186 // e.g. the user opened the options page before midnight on New Year's Eve
158 // and then loaded a credit card profile to edit in the new year, so 187 // and then loaded a credit card profile to edit in the new year, so
159 // reload the select options just to be safe. 188 // reload the select options just to be safe.
160 this.setDefaultSelectOptions_(); 189 this.setDefaultSelectOptions_();
161 190
162 var idx = parseInt(creditCard['expirationMonth'], 10); 191 var idx = parseInt(creditCard['expirationMonth'], 10);
163 $('expirationMonth').selectedIndex = idx - 1; 192 $('expirationMonth').selectedIndex = idx - 1;
164 193
165 expYear = creditCard['expirationYear']; 194 expYear = creditCard['expirationYear'];
166 var date = new Date(); 195 var date = new Date();
167 var year = parseInt(date.getFullYear()); 196 var year = parseInt(date.getFullYear());
168 for (var i = 0; i < 10; ++i) { 197 for (var i = 0; i < 10; ++i) {
169 var text = year + i; 198 var text = year + i;
170 if (expYear == String(text)) 199 if (expYear == String(text))
171 $('expirationYear').selectedIndex = i; 200 $('expirationYear').selectedIndex = i;
172 } 201 }
173 }, 202 },
174 203
175 /** 204 /**
176 * Loads the credit card data from |creditCard|, sets the input fields based 205 * Loads the credit card data from |creditCard|, sets the input fields based
177 * on this data and stores the GUID of the credit card. 206 * on this data and stores the GUID of the credit card.
178 * @private 207 * @private
179 */ 208 */
180 loadCreditCard_: function(creditCard) { 209 loadCreditCard_: function(creditCard) {
181 this.setInputFields_(creditCard); 210 this.setInputFields_(creditCard);
182 this.inputFieldChanged_(); 211 this.inputFieldChanged_();
183 this.guid = creditCard['guid']; 212 this.guid_ = creditCard['guid'];
213 this.storedCCNumber_ = creditCard['creditCardNumber'];
184 }, 214 },
185 }; 215 };
186 216
187 AutoFillEditCreditCardOverlay.clearInputFields = function(title) { 217 AutoFillEditCreditCardOverlay.clearInputFields = function(title) {
188 AutoFillEditCreditCardOverlay.getInstance().clearInputFields_(); 218 AutoFillEditCreditCardOverlay.getInstance().clearInputFields_();
189 }; 219 };
190 220
191 AutoFillEditCreditCardOverlay.loadCreditCard = function(creditCard) { 221 AutoFillEditCreditCardOverlay.loadCreditCard = function(creditCard) {
192 AutoFillEditCreditCardOverlay.getInstance().loadCreditCard_(creditCard); 222 AutoFillEditCreditCardOverlay.getInstance().loadCreditCard_(creditCard);
193 }; 223 };
194 224
195 AutoFillEditCreditCardOverlay.setTitle = function(title) { 225 AutoFillEditCreditCardOverlay.setTitle = function(title) {
196 $('autoFillCreditCardTitle').textContent = title; 226 $('autoFillCreditCardTitle').textContent = title;
197 }; 227 };
198 228
199 // Export 229 // Export
200 return { 230 return {
201 AutoFillEditCreditCardOverlay: AutoFillEditCreditCardOverlay 231 AutoFillEditCreditCardOverlay: AutoFillEditCreditCardOverlay
202 }; 232 };
203 233
204 }); 234 });
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/options/autofill_options_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698