| Index: components/password_manager/core/browser/password_manager.cc
|
| diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
|
| index 107ce1e8bed13772209c7acd4296619f58ebea77..0316343fd4f9407714cdf335971583a3e3398fd2 100644
|
| --- a/components/password_manager/core/browser/password_manager.cc
|
| +++ b/components/password_manager/core/browser/password_manager.cc
|
| @@ -11,7 +11,9 @@
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/threading/platform_thread.h"
|
| +#include "components/autofill/core/common/autofill_data_validation.h"
|
| #include "components/autofill/core/common/password_autofill_util.h"
|
| +#include "components/password_manager/core/browser/password_autofill_manager.h"
|
| #include "components/password_manager/core/browser/password_form_manager.h"
|
| #include "components/password_manager/core/browser/password_manager_client.h"
|
| #include "components/password_manager/core/browser/password_manager_driver.h"
|
| @@ -226,8 +228,10 @@ void PasswordManager::RemoveObserver(LoginModelObserver* observer) {
|
| void PasswordManager::DidNavigateMainFrame(bool is_in_page) {
|
| // Clear data after main frame navigation if the navigation was to a
|
| // different page.
|
| - if (!is_in_page)
|
| + if (!is_in_page) {
|
| pending_login_managers_.clear();
|
| + driver_->GetPasswordAutofillManager()->Reset();
|
| + }
|
| }
|
|
|
| void PasswordManager::OnPasswordFormSubmitted(
|
| @@ -310,6 +314,31 @@ void PasswordManager::OnPasswordFormsRendered(
|
| }
|
| }
|
|
|
| +void PasswordManager::OnAddPasswordFormMapping(
|
| + const autofill::FormFieldData& username_field,
|
| + const autofill::PasswordFormFillData& fill_data) {
|
| + if (!autofill::IsValidFormFieldData(username_field) ||
|
| + !autofill::IsValidPasswordFormFillData(fill_data))
|
| + return;
|
| +
|
| + driver_->GetPasswordAutofillManager()->AddPasswordFormMapping(
|
| + username_field, fill_data);
|
| +}
|
| +
|
| +void PasswordManager::OnShowPasswordSuggestions(
|
| + const autofill::FormFieldData& field,
|
| + const gfx::RectF& bounds,
|
| + const std::vector<base::string16>& suggestions,
|
| + const std::vector<base::string16>& realms) {
|
| + if (!autofill::IsValidString16Vector(suggestions) ||
|
| + !autofill::IsValidString16Vector(realms) ||
|
| + suggestions.size() != realms.size())
|
| + return;
|
| +
|
| + driver_->GetPasswordAutofillManager()->ShowPasswordSuggestions(
|
| + field, bounds, suggestions, realms);
|
| +}
|
| +
|
| void PasswordManager::PossiblyInitializeUsernamesExperiment(
|
| const PasswordFormMap& best_matches) const {
|
| if (base::FieldTrialList::Find(kOtherPossibleUsernamesExperiment))
|
|
|