| Index: components/password_manager/core/browser/password_form_manager.cc
|
| diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
|
| index 6ba4ba2248a03e2474246139561e1d6a7fb30930..1d5dd8386fcd5b25ee3eca7a5525a9bfd7683ff7 100644
|
| --- a/components/password_manager/core/browser/password_form_manager.cc
|
| +++ b/components/password_manager/core/browser/password_form_manager.cc
|
| @@ -113,7 +113,10 @@ PasswordFormManager::PasswordFormManager(
|
| user_action_(kUserActionNone),
|
| submit_result_(kSubmitResultNotSubmitted),
|
| form_type_(kFormTypeUnspecified) {
|
| - drivers_.push_back(driver);
|
| + DCHECK_EQ(observed_form.scheme == PasswordForm::SCHEME_HTML,
|
| + driver != nullptr);
|
| + if (driver)
|
| + drivers_.push_back(driver);
|
| }
|
|
|
| PasswordFormManager::~PasswordFormManager() {
|
| @@ -489,6 +492,7 @@ void PasswordFormManager::OnRequestDone(
|
|
|
| void PasswordFormManager::ProcessFrame(
|
| const base::WeakPtr<PasswordManagerDriver>& driver) {
|
| + DCHECK_EQ(PasswordForm::SCHEME_HTML, observed_form_.scheme);
|
| if (state_ == POST_MATCHING_PHASE)
|
| ProcessFrameInternal(driver);
|
|
|
| @@ -504,6 +508,7 @@ void PasswordFormManager::ProcessFrame(
|
|
|
| void PasswordFormManager::ProcessFrameInternal(
|
| const base::WeakPtr<PasswordManagerDriver>& driver) {
|
| + DCHECK_EQ(PasswordForm::SCHEME_HTML, observed_form_.scheme);
|
| if (!driver || manager_action_ == kManagerActionBlacklisted)
|
| return;
|
|
|
| @@ -536,6 +541,15 @@ void PasswordFormManager::ProcessFrameInternal(
|
| *preferred_match_, wait_for_username);
|
| }
|
|
|
| +void PasswordFormManager::ProcessLoginPrompt() {
|
| + DCHECK_NE(PasswordForm::SCHEME_HTML, observed_form_.scheme);
|
| + if (!preferred_match_)
|
| + return;
|
| +
|
| + manager_action_ = kManagerActionAutofilled;
|
| + password_manager_->AutofillHttpAuth(best_matches_, *preferred_match_);
|
| +}
|
| +
|
| void PasswordFormManager::OnGetPasswordStoreResults(
|
| ScopedVector<PasswordForm> results) {
|
| DCHECK_EQ(state_, MATCHING_PHASE);
|
| @@ -567,6 +581,8 @@ void PasswordFormManager::OnGetPasswordStoreResults(
|
| if (manager_action_ != kManagerActionBlacklisted) {
|
| for (auto const& driver : drivers_)
|
| ProcessFrameInternal(driver);
|
| + if (observed_form_.scheme != PasswordForm::SCHEME_HTML)
|
| + ProcessLoginPrompt();
|
| }
|
| }
|
|
|
|
|