Commit b67d6fc1 authored by Milica Selakovic's avatar Milica Selakovic Committed by Commit Bot

[password manager] Suppress prompts while assistant is running

Autofill assistant can perform more than one successful login. Password
manager should not show prompts for any of them.

Bug: 1063347

Change-Id: Ic2b118192a285723bcf9e1d807cb1e62ba3ab30a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2252083
Commit-Queue: Milica Selakovic <selakovic@google.com>
Reviewed-by: default avatarMaxim Kolosovskiy <kolos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#781457}
parent bf9a2f9a
...@@ -887,9 +887,7 @@ void PasswordManager::OnPasswordFormsRendered( ...@@ -887,9 +887,7 @@ void PasswordManager::OnPasswordFormsRendered(
void PasswordManager::OnLoginSuccessful() { void PasswordManager::OnLoginSuccessful() {
if (autofill_assistant_mode_ == AutofillAssistantMode::kRunning) { if (autofill_assistant_mode_ == AutofillAssistantMode::kRunning) {
// Autofillassistan performs one login. Only one prompt should // Suppress prompts while Autofill Assistant is running.
// be suppressed.
SetAutofillAssistantMode(AutofillAssistantMode::kNotRunning);
return; return;
} }
......
...@@ -3646,20 +3646,24 @@ TEST_P(PasswordManagerTest, FormSubmittedOnIFrameMainFrameLoaded) { ...@@ -3646,20 +3646,24 @@ TEST_P(PasswordManagerTest, FormSubmittedOnIFrameMainFrameLoaded) {
TEST_P(PasswordManagerTest, NoPromptAutofillAssistantManuallyCuratedScript) { TEST_P(PasswordManagerTest, NoPromptAutofillAssistantManuallyCuratedScript) {
manager()->SetAutofillAssistantMode(AutofillAssistantMode::kRunning); manager()->SetAutofillAssistantMode(AutofillAssistantMode::kRunning);
PasswordForm form(MakeSimpleForm()); EXPECT_CALL(client_, IsSavingAndFillingEnabled(_))
EXPECT_CALL(client_, IsSavingAndFillingEnabled(form.url))
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
EXPECT_CALL(*store_, GetLogins) EXPECT_CALL(*store_, GetLogins)
.WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms(store_.get()))); .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms(store_.get())));
manager()->OnPasswordFormsParsed(&driver_, {form.form_data});
manager()->ShowManualFallbackForSaving(&driver_, form.form_data);
// Check that a save prompt is not shown. // Check that a save prompt is not shown.
EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr).Times(0); EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr).Times(0);
manager()->DidNavigateMainFrame(true /* form_may_be_submitted */); // Simulate multiple submissions.
manager()->OnPasswordFormsRendered(&driver_, {} /* observed */, for (size_t i = 0; i < 2; i++) {
true /* did stop loading */); PasswordForm form(MakeSimpleForm());
manager()->OnPasswordFormsParsed(&driver_, {form.form_data});
manager()->ShowManualFallbackForSaving(&driver_, form.form_data);
manager()->DidNavigateMainFrame(true /* form_may_be_submitted */);
manager()->OnPasswordFormsRendered(&driver_, {} /* observed */,
true /* did stop loading */);
}
} }
// Tests the following scenario: // Tests the following scenario:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment