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)) |