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

Side by Side Diff: components/autofill/core/browser/autofill_manager.cc

Issue 397233002: Use language-specific street address line separators (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Android compile. Created 6 years, 5 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/core/browser/autofill_manager.h" 5 #include "components/autofill/core/browser/autofill_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <map> 10 #include <map>
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 unique_id, &data_model, &variant, &is_credit_card) || 543 unique_id, &data_model, &variant, &is_credit_card) ||
544 !GetCachedFormAndField(form, field, &form_structure, &autofill_field)) 544 !GetCachedFormAndField(form, field, &form_structure, &autofill_field))
545 return; 545 return;
546 546
547 DCHECK(form_structure); 547 DCHECK(form_structure);
548 DCHECK(autofill_field); 548 DCHECK(autofill_field);
549 549
550 FormData result = form; 550 FormData result = form;
551 551
552 base::string16 profile_full_name; 552 base::string16 profile_full_name;
553 std::string profile_language_code;
553 if (!is_credit_card) { 554 if (!is_credit_card) {
554 profile_full_name = data_model->GetInfo( 555 profile_full_name = data_model->GetInfo(
555 AutofillType(NAME_FULL), app_locale_); 556 AutofillType(NAME_FULL), app_locale_);
557 profile_language_code =
558 static_cast<const AutofillProfile*>(data_model)->language_code();
556 } 559 }
557 560
558 // If the relevant section is auto-filled, we should fill |field| but not the 561 // If the relevant section is auto-filled, we should fill |field| but not the
559 // rest of the form. 562 // rest of the form.
560 if (SectionIsAutofilled(*form_structure, form, autofill_field->section())) { 563 if (SectionIsAutofilled(*form_structure, form, autofill_field->section())) {
561 for (std::vector<FormFieldData>::iterator iter = result.fields.begin(); 564 for (std::vector<FormFieldData>::iterator iter = result.fields.begin();
562 iter != result.fields.end(); ++iter) { 565 iter != result.fields.end(); ++iter) {
563 if ((*iter) == field) { 566 if ((*iter) == field) {
564 base::string16 value = data_model->GetInfoForVariant( 567 base::string16 value = data_model->GetInfoForVariant(
565 autofill_field->Type(), variant, app_locale_); 568 autofill_field->Type(), variant, app_locale_);
566 if (AutofillField::FillFormField( 569 if (AutofillField::FillFormField(*autofill_field,
567 *autofill_field, value, app_locale_, &(*iter))) { 570 value,
571 profile_language_code,
572 app_locale_,
573 &(*iter))) {
568 // Mark the cached field as autofilled, so that we can detect when a 574 // Mark the cached field as autofilled, so that we can detect when a
569 // user edits an autofilled field (for metrics). 575 // user edits an autofilled field (for metrics).
570 autofill_field->is_autofilled = true; 576 autofill_field->is_autofilled = true;
571 577
572 // Mark the field as autofilled when a non-empty value is assigned to 578 // Mark the field as autofilled when a non-empty value is assigned to
573 // it. This allows the renderer to distinguish autofilled fields from 579 // it. This allows the renderer to distinguish autofilled fields from
574 // fields with non-empty values, such as select-one fields. 580 // fields with non-empty values, such as select-one fields.
575 iter->is_autofilled = true; 581 iter->is_autofilled = true;
576 582
577 if (!is_credit_card && !value.empty()) 583 if (!is_credit_card && !value.empty())
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 // Must match ForEachMatchingFormField() in form_autofill_util.cc. 619 // Must match ForEachMatchingFormField() in form_autofill_util.cc.
614 // Only notify autofilling of empty fields and the field that initiated 620 // Only notify autofilling of empty fields and the field that initiated
615 // the filling (note that "select-one" controls may not be empty but will 621 // the filling (note that "select-one" controls may not be empty but will
616 // still be autofilled). 622 // still be autofilled).
617 bool should_notify = 623 bool should_notify =
618 !is_credit_card && 624 !is_credit_card &&
619 !value.empty() && 625 !value.empty() &&
620 (result.fields[i] == field || 626 (result.fields[i] == field ||
621 result.fields[i].form_control_type == "select-one" || 627 result.fields[i].form_control_type == "select-one" ||
622 result.fields[i].value.empty()); 628 result.fields[i].value.empty());
623 if (AutofillField::FillFormField( 629 if (AutofillField::FillFormField(*cached_field,
624 *cached_field, value, app_locale_, &result.fields[i])) { 630 value,
631 profile_language_code,
632 app_locale_,
633 &result.fields[i])) {
625 // Mark the cached field as autofilled, so that we can detect when a 634 // Mark the cached field as autofilled, so that we can detect when a
626 // user edits an autofilled field (for metrics). 635 // user edits an autofilled field (for metrics).
627 form_structure->field(i)->is_autofilled = true; 636 form_structure->field(i)->is_autofilled = true;
628 637
629 // Mark the field as autofilled when a non-empty value is assigned to 638 // Mark the field as autofilled when a non-empty value is assigned to
630 // it. This allows the renderer to distinguish autofilled fields from 639 // it. This allows the renderer to distinguish autofilled fields from
631 // fields with non-empty values, such as select-one fields. 640 // fields with non-empty values, such as select-one fields.
632 result.fields[i].is_autofilled = true; 641 result.fields[i].is_autofilled = true;
633 642
634 if (should_notify) 643 if (should_notify)
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
1211 return false; 1220 return false;
1212 1221
1213 // Disregard forms that we wouldn't ever autofill in the first place. 1222 // Disregard forms that we wouldn't ever autofill in the first place.
1214 if (!form.ShouldBeParsed()) 1223 if (!form.ShouldBeParsed())
1215 return false; 1224 return false;
1216 1225
1217 return true; 1226 return true;
1218 } 1227 }
1219 1228
1220 } // namespace autofill 1229 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_field_unittest.cc ('k') | components/autofill/core/browser/form_structure.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698