OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 #include "components/autofill/browser/form_group.h" | 5 #include "components/autofill/browser/form_group.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <iterator> | 8 #include <iterator> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 | 251 |
252 bool FormGroup::SetInfo(AutofillFieldType type, | 252 bool FormGroup::SetInfo(AutofillFieldType type, |
253 const string16& value, | 253 const string16& value, |
254 const std::string& app_locale) { | 254 const std::string& app_locale) { |
255 SetRawInfo(type, value); | 255 SetRawInfo(type, value); |
256 return true; | 256 return true; |
257 } | 257 } |
258 | 258 |
259 void FormGroup::FillFormField(const AutofillField& field, | 259 void FormGroup::FillFormField(const AutofillField& field, |
260 size_t variant, | 260 size_t variant, |
| 261 const std::string& app_locale, |
261 FormFieldData* field_data) const { | 262 FormFieldData* field_data) const { |
262 NOTREACHED(); | 263 NOTREACHED(); |
263 } | 264 } |
264 | 265 |
265 void FormGroup::FillSelectControl(AutofillFieldType type, | 266 void FormGroup::FillSelectControl(AutofillFieldType type, |
| 267 const std::string& app_locale, |
266 FormFieldData* field) const { | 268 FormFieldData* field) const { |
267 DCHECK(field); | 269 DCHECK(field); |
268 DCHECK_EQ("select-one", field->form_control_type); | 270 DCHECK_EQ("select-one", field->form_control_type); |
269 DCHECK_EQ(field->option_values.size(), field->option_contents.size()); | 271 DCHECK_EQ(field->option_values.size(), field->option_contents.size()); |
270 | 272 |
271 const std::string app_locale = AutofillCountry::ApplicationLocale(); | |
272 string16 field_text = GetInfo(type, app_locale); | 273 string16 field_text = GetInfo(type, app_locale); |
273 string16 field_text_lower = StringToLowerASCII(field_text); | 274 string16 field_text_lower = StringToLowerASCII(field_text); |
274 if (field_text.empty()) | 275 if (field_text.empty()) |
275 return; | 276 return; |
276 | 277 |
277 string16 value; | 278 string16 value; |
278 for (size_t i = 0; i < field->option_values.size(); ++i) { | 279 for (size_t i = 0; i < field->option_values.size(); ++i) { |
279 if (field_text == field->option_values[i] || | 280 if (field_text == field->option_values[i] || |
280 field_text == field->option_contents[i]) { | 281 field_text == field->option_contents[i]) { |
281 // An exact match, use it. | 282 // An exact match, use it. |
(...skipping 10 matching lines...) Expand all Loading... |
292 } | 293 } |
293 | 294 |
294 if (!value.empty()) { | 295 if (!value.empty()) { |
295 field->value = value; | 296 field->value = value; |
296 return; | 297 return; |
297 } | 298 } |
298 | 299 |
299 if (type == ADDRESS_HOME_STATE || type == ADDRESS_BILLING_STATE) { | 300 if (type == ADDRESS_HOME_STATE || type == ADDRESS_BILLING_STATE) { |
300 FillStateSelectControl(field_text, field); | 301 FillStateSelectControl(field_text, field); |
301 } else if (type == ADDRESS_HOME_COUNTRY || type == ADDRESS_BILLING_COUNTRY) { | 302 } else if (type == ADDRESS_HOME_COUNTRY || type == ADDRESS_BILLING_COUNTRY) { |
302 FillCountrySelectControl(field); | 303 FillCountrySelectControl(app_locale, field); |
303 } else if (type == CREDIT_CARD_EXP_MONTH) { | 304 } else if (type == CREDIT_CARD_EXP_MONTH) { |
304 FillExpirationMonthSelectControl(field_text, field); | 305 FillExpirationMonthSelectControl(field_text, field); |
305 } else if (type == CREDIT_CARD_EXP_4_DIGIT_YEAR) { | 306 } else if (type == CREDIT_CARD_EXP_4_DIGIT_YEAR) { |
306 // Attempt to fill the year as a 2-digit year. This compensates for the | 307 // Attempt to fill the year as a 2-digit year. This compensates for the |
307 // fact that our heuristics do not always correctly detect when a website | 308 // fact that our heuristics do not always correctly detect when a website |
308 // requests a 2-digit rather than a 4-digit year. | 309 // requests a 2-digit rather than a 4-digit year. |
309 FillSelectControl(CREDIT_CARD_EXP_2_DIGIT_YEAR, field); | 310 FillSelectControl(CREDIT_CARD_EXP_2_DIGIT_YEAR, app_locale, field); |
310 } else if (type == CREDIT_CARD_TYPE) { | 311 } else if (type == CREDIT_CARD_TYPE) { |
311 FillCreditCardTypeSelectControl(field_text, field); | 312 FillCreditCardTypeSelectControl(field_text, field); |
312 } | 313 } |
313 } | 314 } |
314 | 315 |
315 bool FormGroup::FillCountrySelectControl(FormFieldData* field_data) const { | 316 bool FormGroup::FillCountrySelectControl(const std::string& app_locale, |
| 317 FormFieldData* field_data) const { |
316 return false; | 318 return false; |
317 } | 319 } |
318 | 320 |
319 // static | 321 // static |
320 bool FormGroup::IsValidState(const string16& value) { | 322 bool FormGroup::IsValidState(const string16& value) { |
321 return !State::Abbreviation(value).empty() || !State::FullName(value).empty(); | 323 return !State::Abbreviation(value).empty() || !State::FullName(value).empty(); |
322 } | 324 } |
OLD | NEW |