OLD | NEW |
---|---|
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 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
551 | 551 |
552 base::string16 profile_full_name; | 552 base::string16 profile_full_name; |
553 if (!is_credit_card) { | 553 if (!is_credit_card) { |
554 profile_full_name = data_model->GetInfo( | 554 profile_full_name = data_model->GetInfo( |
555 AutofillType(NAME_FULL), app_locale_); | 555 AutofillType(NAME_FULL), app_locale_); |
556 } | 556 } |
557 | 557 |
558 // If the relevant section is auto-filled, we should fill |field| but not the | 558 // If the relevant section is auto-filled, we should fill |field| but not the |
559 // rest of the form. | 559 // rest of the form. |
560 if (SectionIsAutofilled(*form_structure, form, autofill_field->section())) { | 560 if (SectionIsAutofilled(*form_structure, form, autofill_field->section())) { |
561 size_t i = 0; | |
561 for (std::vector<FormFieldData>::iterator iter = result.fields.begin(); | 562 for (std::vector<FormFieldData>::iterator iter = result.fields.begin(); |
562 iter != result.fields.end(); ++iter) { | 563 iter != result.fields.end(); ++iter) { |
563 if ((*iter) == field) { | 564 if ((*iter) == field) { |
564 base::string16 value = data_model->GetInfoForVariant( | 565 base::string16 value = data_model->GetInfoForVariant( |
565 autofill_field->Type(), variant, app_locale_); | 566 autofill_field->Type(), variant, app_locale_); |
566 if (AutofillField::FillFormField( | 567 if (AutofillField::FillFormField( |
567 *autofill_field, value, app_locale_, &(*iter))) { | 568 *autofill_field, value, app_locale_, &(*iter))) { |
568 // Mark the cached field as autofilled, so that we can detect when a | 569 // Mark the cached field as autofilled, so that we can detect when a |
569 // user edits an autofilled field (for metrics). | 570 // user edits an autofilled field (for metrics). |
570 autofill_field->is_autofilled = true; | 571 autofill_field->is_autofilled = true; |
571 | 572 |
573 // Mark the field as autofilled when a non-empty value is assigned to | |
574 // it. This allows the renderer to distinguish autofilled fields from | |
575 // fields with non-empty values, such as select-one fields. | |
576 result.fields[i].is_autofilled = true; | |
Ilya Sherman
2014/06/25 20:08:29
Can you use (*iter) here, rather than adding an ex
| |
577 | |
572 if (!is_credit_card && !value.empty()) | 578 if (!is_credit_card && !value.empty()) |
573 client_->DidFillOrPreviewField(value, profile_full_name); | 579 client_->DidFillOrPreviewField(value, profile_full_name); |
574 } | 580 } |
575 break; | 581 break; |
576 } | 582 } |
583 ++i; | |
577 } | 584 } |
578 | 585 |
579 driver_->SendFormDataToRenderer(query_id, action, result); | 586 driver_->SendFormDataToRenderer(query_id, action, result); |
580 return; | 587 return; |
581 } | 588 } |
582 | 589 |
583 // Cache the field type for the field from which the user initiated autofill. | 590 // Cache the field type for the field from which the user initiated autofill. |
584 FieldTypeGroup initiating_group_type = autofill_field->Type().group(); | 591 FieldTypeGroup initiating_group_type = autofill_field->Type().group(); |
585 DCHECK_EQ(form_structure->field_count(), form.fields.size()); | 592 DCHECK_EQ(form_structure->field_count(), form.fields.size()); |
586 for (size_t i = 0; i < form_structure->field_count(); ++i) { | 593 for (size_t i = 0; i < form_structure->field_count(); ++i) { |
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1206 return false; | 1213 return false; |
1207 | 1214 |
1208 // Disregard forms that we wouldn't ever autofill in the first place. | 1215 // Disregard forms that we wouldn't ever autofill in the first place. |
1209 if (!form.ShouldBeParsed(true)) | 1216 if (!form.ShouldBeParsed(true)) |
1210 return false; | 1217 return false; |
1211 | 1218 |
1212 return true; | 1219 return true; |
1213 } | 1220 } |
1214 | 1221 |
1215 } // namespace autofill | 1222 } // namespace autofill |
OLD | NEW |