Chromium Code Reviews| Index: components/password_manager/core/browser/password_generation_manager.cc |
| diff --git a/components/password_manager/core/browser/password_generation_manager.cc b/components/password_manager/core/browser/password_generation_manager.cc |
| index d97054a4f6af98987428d5a1e6a5bfd096a9baa4..cc41c97657291e74bd9807f485ce82f9191a6950 100644 |
| --- a/components/password_manager/core/browser/password_generation_manager.cc |
| +++ b/components/password_manager/core/browser/password_generation_manager.cc |
| @@ -4,6 +4,7 @@ |
| #include "components/password_manager/core/browser/password_generation_manager.h" |
| +#include "base/optional.h" |
| #include "components/autofill/core/browser/autofill_field.h" |
| #include "components/autofill/core/browser/field_types.h" |
| #include "components/autofill/core/browser/form_structure.h" |
| @@ -12,6 +13,11 @@ |
| #include "components/password_manager/core/browser/password_manager_client.h" |
| #include "components/password_manager/core/browser/password_manager_driver.h" |
| +using autofill::AutofillField; |
| +using autofill::FieldSignature; |
| +using autofill::FormSignature; |
| +using autofill::FormStructure; |
| + |
| namespace password_manager { |
| PasswordGenerationManager::PasswordGenerationManager( |
| @@ -31,16 +37,26 @@ void PasswordGenerationManager::DetectFormsEligibleForGeneration( |
| std::vector<autofill::PasswordFormGenerationData> |
| forms_eligible_for_generation; |
| for (auto form_it = forms.begin(); form_it != forms.end(); ++form_it) { |
| - autofill::FormStructure* form = *form_it; |
| + FormStructure* form = *form_it; |
| + AutofillField* generation_field = nullptr; |
| + AutofillField* confirmation_field = nullptr; |
| for (auto field_it = form->begin(); field_it != form->end(); ++field_it) { |
| - autofill::AutofillField* field = field_it->get(); |
| + AutofillField* field = field_it->get(); |
| if (field->server_type() == autofill::ACCOUNT_CREATION_PASSWORD || |
| field->server_type() == autofill::NEW_PASSWORD) { |
| - forms_eligible_for_generation.push_back( |
| - autofill::PasswordFormGenerationData{form->form_signature(), |
| - field->GetFieldSignature()}); |
| - break; |
| + generation_field = field; |
| + } else if (field->server_type() == autofill::CONFIRMATION_PASSWORD) { |
| + confirmation_field = field; |
| + } |
| + } |
| + if (generation_field) { |
| + autofill::PasswordFormGenerationData data( |
| + form->form_signature(), generation_field->GetFieldSignature()); |
| + if (confirmation_field != nullptr) { |
| + data.confirmation_field_signature = base::Optional<FieldSignature>( |
|
dcheng
2017/03/07 21:42:26
Simpler to write:
data.confirmation_field_signatur
kolos1
2017/03/08 07:43:50
Done.
|
| + confirmation_field->GetFieldSignature()); |
| } |
| + forms_eligible_for_generation.push_back(data); |
| } |
| } |
| if (!forms_eligible_for_generation.empty()) |