| 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 2a6c15b02a03acf230040b3db0b656341aa07fc8..0b07b2bd505434bb5ab46c5723f98f1aad071d8d 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() {
|
| @@ -497,6 +500,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);
|
|
|
| @@ -512,6 +516,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;
|
|
|
| @@ -544,6 +549,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);
|
| @@ -575,6 +589,8 @@ void PasswordFormManager::OnGetPasswordStoreResults(
|
| if (manager_action_ != kManagerActionBlacklisted) {
|
| for (auto const& driver : drivers_)
|
| ProcessFrameInternal(driver);
|
| + if (observed_form_.scheme != PasswordForm::SCHEME_HTML)
|
| + ProcessLoginPrompt();
|
| }
|
| }
|
|
|
|
|