summaryrefslogtreecommitdiff
path: root/chromium/chrome/renderer/autofill
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/chrome/renderer/autofill
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/renderer/autofill')
-rw-r--r--chromium/chrome/renderer/autofill/autofill_renderer_browsertest.cc3
-rw-r--r--chromium/chrome/renderer/autofill/form_autocomplete_browsertest.cc7
-rw-r--r--chromium/chrome/renderer/autofill/password_autofill_agent_browsertest.cc79
3 files changed, 51 insertions, 38 deletions
diff --git a/chromium/chrome/renderer/autofill/autofill_renderer_browsertest.cc b/chromium/chrome/renderer/autofill/autofill_renderer_browsertest.cc
index f83951ee485..41fba40e3b5 100644
--- a/chromium/chrome/renderer/autofill/autofill_renderer_browsertest.cc
+++ b/chromium/chrome/renderer/autofill/autofill_renderer_browsertest.cc
@@ -119,9 +119,6 @@ class FakeContentAutofillDriver : public mojom::AutofillDriver {
void DidEndTextFieldEditing() override {}
- void SetDataList(const std::vector<base::string16>& values,
- const std::vector<base::string16>& labels) override {}
-
void SelectFieldOptionsDidChange(const autofill::FormData& form) override {}
// Records whether TextFieldDidChange() get called.
diff --git a/chromium/chrome/renderer/autofill/form_autocomplete_browsertest.cc b/chromium/chrome/renderer/autofill/form_autocomplete_browsertest.cc
index 4e49269be5d..56033d8077d 100644
--- a/chromium/chrome/renderer/autofill/form_autocomplete_browsertest.cc
+++ b/chromium/chrome/renderer/autofill/form_autocomplete_browsertest.cc
@@ -109,9 +109,6 @@ class FakeContentAutofillDriver : public mojom::AutofillDriver {
void DidEndTextFieldEditing() override {}
- void SetDataList(const std::vector<base::string16>& values,
- const std::vector<base::string16>& labels) override {}
-
void SelectFieldOptionsDidChange(const autofill::FormData& form) override {}
// Records whether FocusNoLongerOnForm() get called.
@@ -966,8 +963,8 @@ TEST_F(FormAutocompleteTest, FormSubmittedBySameDocumentNavigation) {
ExecuteJavaScriptForTests(hide_elements.c_str());
// Simulate same document navigation.
- autofill_agent_->form_tracker_for_testing()->DidCommitProvisionalLoad(
- true /*is_same_document_navigation*/, ui::PAGE_TRANSITION_LINK);
+ autofill_agent_->form_tracker_for_testing()
+ ->DidFinishSameDocumentNavigation();
base::RunLoop().RunUntilIdle();
VerifyReceivedAddressRendererMessages(
diff --git a/chromium/chrome/renderer/autofill/password_autofill_agent_browsertest.cc b/chromium/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
index 006032ba871..92de649dd28 100644
--- a/chromium/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
+++ b/chromium/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
@@ -381,7 +381,7 @@ class PasswordAutofillAgentTest : public ChromeRenderViewTest {
// We need to set the origin so it matches the frame URL and the action so
// it matches the form action, otherwise we won't autocomplete.
- UpdateOriginForHTML(kFormHTML);
+ UpdateUrlForHTML(kFormHTML);
fill_data_.action = GURL("http://www.bidule.com");
LoadHTML(kFormHTML);
@@ -441,9 +441,9 @@ class PasswordAutofillAgentTest : public ChromeRenderViewTest {
switches::kShowAutofillSignatures);
}
- void UpdateOriginForHTML(const std::string& html) {
- std::string origin = "data:text/html;charset=utf-8," + html;
- fill_data_.origin = GURL(origin);
+ void UpdateUrlForHTML(const std::string& html) {
+ std::string url = "data:text/html;charset=utf-8," + html;
+ fill_data_.url = GURL(url);
}
void UpdateRendererIDs() {
@@ -769,10 +769,10 @@ class PasswordAutofillAgentTest : public ChromeRenderViewTest {
tracker->AjaxSucceeded();
}
- void FireDidCommitProvisionalLoad() {
+ void FireDidFinishSameDocumentNavigation() {
FormTracker* tracker = autofill_agent_->form_tracker_for_testing();
static_cast<content::RenderFrameObserver*>(tracker)
- ->DidCommitProvisionalLoad(true, ui::PAGE_TRANSITION_LINK);
+ ->DidFinishSameDocumentNavigation();
}
void ClearField(FormFieldData* field) {
@@ -832,7 +832,7 @@ TEST_F(PasswordAutofillAgentTest, InitialAutocompleteForEmptyAction) {
UpdateUsernameAndPasswordElements();
// Set the expected form origin and action URLs.
- UpdateOriginForHTML(kEmptyActionFormHTML);
+ UpdateUrlForHTML(kEmptyActionFormHTML);
fill_data_.action = GURL();
// Simulate the browser sending back the login info, it triggers the
@@ -1327,7 +1327,7 @@ TEST_F(PasswordAutofillAgentTest,
CreateScriptToRegisterListeners(kPasswordName, &password_event_checkers);
std::string html = std::string(kFormHTML) + events_registration_script;
LoadHTML(html.c_str());
- UpdateOriginForHTML(html);
+ UpdateUrlForHTML(html);
UpdateUsernameAndPasswordElements();
// Simulate the browser sending back the login info, it triggers the
@@ -1364,7 +1364,7 @@ TEST_F(PasswordAutofillAgentTest,
CreateScriptToRegisterListeners(kPasswordName, &event_checkers);
std::string html = std::string(kFormHTML) + events_registration_script;
LoadHTML(html.c_str());
- UpdateOriginForHTML(html);
+ UpdateUrlForHTML(html);
UpdateUsernameAndPasswordElements();
// Simulate the browser sending back the login info, it triggers the
@@ -1834,7 +1834,7 @@ TEST_F(PasswordAutofillAgentTest, TouchToFillClosed) {
// Reload the page and simulate fill.
LoadHTML(kFormHTML);
- UpdateOriginForHTML(kFormHTML);
+ UpdateUrlForHTML(kFormHTML);
UpdateUsernameAndPasswordElements();
SimulateOnFillPasswordForm(fill_data_);
@@ -1985,16 +1985,33 @@ TEST_F(PasswordAutofillAgentTest, ClickAndSelect) {
CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true);
}
+TEST_F(PasswordAutofillAgentTest,
+ NoPopupOnPasswordFieldWithoutSuggestionsByDefault) {
+ ClearUsernameAndPasswordFields();
+ UpdateRendererIDs();
+
+ // A call to InformNoSavedCredentials(should_show_popup_without_passwords) is
+ // what informs the agent whether it should show the popup even without
+ // suggestions. In this test, that call hasn't happened yet, so the popup
+ // should NOT show up without suggestions.
+
+ SimulateElementClick(kPasswordName);
+
+ EXPECT_CALL(fake_driver_, ShowPasswordSuggestions).Times(0);
+ base::RunLoop().RunUntilIdle();
+}
// With butter, passwords fields should always trigger the popup so the user can
// unlock account-stored suggestions from there.
TEST_F(PasswordAutofillAgentTest, ShowPopupOnPasswordFieldWithoutSuggestions) {
- base::test::ScopedFeatureList scoped_feature_list;
- scoped_feature_list.InitAndEnableFeature(
- password_manager::features::kEnablePasswordsAccountStorage);
ClearUsernameAndPasswordFields();
UpdateRendererIDs();
+ // InformNoSavedCredentials(should_show_popup_without_passwords) tells the
+ // agent to show the popup even without suggestions.
+ password_autofill_agent_->InformNoSavedCredentials(
+ /*should_show_popup_without_passwords=*/true);
+
SimulateElementClick(kPasswordName);
EXPECT_CALL(fake_driver_, ShowPasswordSuggestions);
@@ -2004,12 +2021,14 @@ TEST_F(PasswordAutofillAgentTest, ShowPopupOnPasswordFieldWithoutSuggestions) {
// Before butter, passwords fields should never trigger the popup on password
// passwords fields without suggestions since it would not be helpful.
TEST_F(PasswordAutofillAgentTest, NoPopupOnPasswordFieldWithoutSuggestions) {
- base::test::ScopedFeatureList scoped_feature_list;
- scoped_feature_list.InitAndDisableFeature(
- password_manager::features::kEnablePasswordsAccountStorage);
ClearUsernameAndPasswordFields();
UpdateRendererIDs();
+ // InformNoSavedCredentials(should_show_popup_without_passwords) tells the
+ // agent NOT to show the popup without suggestions.
+ password_autofill_agent_->InformNoSavedCredentials(
+ /*should_show_popup_without_passwords=*/false);
+
SimulateElementClick(kPasswordName);
EXPECT_CALL(fake_driver_, ShowPasswordSuggestions).Times(0);
@@ -2454,7 +2473,7 @@ TEST_F(PasswordAutofillAgentTest, ShowPopupOnEmptyPasswordField) {
LoadHTML(kVisibleFormWithNoUsernameHTML);
UpdateOnlyPasswordElement();
fill_data_.username_field = FormFieldData();
- UpdateOriginForHTML(kVisibleFormWithNoUsernameHTML);
+ UpdateUrlForHTML(kVisibleFormWithNoUsernameHTML);
fill_data_.additional_logins.clear();
password_element_.SetValue("");
@@ -2479,7 +2498,7 @@ TEST_F(PasswordAutofillAgentTest, ShowPopupOnAutofilledPasswordField) {
LoadHTML(kVisibleFormWithNoUsernameHTML);
UpdateOnlyPasswordElement();
fill_data_.username_field = FormFieldData();
- UpdateOriginForHTML(kVisibleFormWithNoUsernameHTML);
+ UpdateUrlForHTML(kVisibleFormWithNoUsernameHTML);
fill_data_.additional_logins.clear();
password_element_.SetValue("");
@@ -2504,7 +2523,7 @@ TEST_F(PasswordAutofillAgentTest, NotShowPopupPasswordField) {
LoadHTML(kVisibleFormWithNoUsernameHTML);
UpdateOnlyPasswordElement();
fill_data_.username_field = FormFieldData();
- UpdateOriginForHTML(kVisibleFormWithNoUsernameHTML);
+ UpdateUrlForHTML(kVisibleFormWithNoUsernameHTML);
fill_data_.additional_logins.clear();
password_element_.SetValue("");
@@ -2669,7 +2688,7 @@ TEST_F(PasswordAutofillAgentTest, PasswordGenerationSupersedesAutofill) {
fill_data_.wait_for_username = true;
fill_data_.username_field = FormFieldData();
fill_data_.password_field.name = ASCIIToUTF16("new_password");
- UpdateOriginForHTML(kSignupFormHTML);
+ UpdateUrlForHTML(kSignupFormHTML);
SimulateOnFillPasswordForm(fill_data_);
// Simulate generation triggering.
@@ -2697,7 +2716,7 @@ TEST_F(PasswordAutofillAgentTest, PasswordGenerationSupersedesAutofill) {
// password.
TEST_F(PasswordAutofillAgentTest, FillSuggestionPasswordChangeForms) {
LoadHTML(kPasswordChangeFormHTML);
- UpdateOriginForHTML(kPasswordChangeFormHTML);
+ UpdateUrlForHTML(kPasswordChangeFormHTML);
UpdateUsernameAndPasswordElements();
// Simulate the browser sending the login info, but set |wait_for_username|
// to prevent the form from being immediately filled.
@@ -2722,7 +2741,7 @@ TEST_F(PasswordAutofillAgentTest, FillSuggestionPasswordChangeForms) {
TEST_F(PasswordAutofillAgentTest,
SuggestionsOnUsernameFieldOfChangePasswordForm) {
LoadHTML(kPasswordChangeFormHTML);
- UpdateOriginForHTML(kPasswordChangeFormHTML);
+ UpdateUrlForHTML(kPasswordChangeFormHTML);
UpdateUsernameAndPasswordElements();
ClearUsernameAndPasswordFields();
@@ -2739,7 +2758,7 @@ TEST_F(PasswordAutofillAgentTest,
TEST_F(PasswordAutofillAgentTest,
SuggestionsOnPasswordFieldOfChangePasswordForm) {
LoadHTML(kPasswordChangeFormHTML);
- UpdateOriginForHTML(kPasswordChangeFormHTML);
+ UpdateUrlForHTML(kPasswordChangeFormHTML);
UpdateUsernameAndPasswordElements();
ClearUsernameAndPasswordFields();
@@ -3193,7 +3212,7 @@ TEST_F(PasswordAutofillAgentTest,
password_element_ = control_elements[0].To<WebInputElement>();
}
- UpdateOriginForHTML(test_case.html_form);
+ UpdateUrlForHTML(test_case.html_form);
if (test_case.does_trigger_autocomplete_on_fill) {
// Prepare |fill_data_| to trigger autocomplete.
fill_data_.username_field.name =
@@ -3247,7 +3266,7 @@ TEST_F(PasswordAutofillAgentTest, ShowSuggestionForNonUsernameFieldForms) {
LoadHTML(kTwoNoUsernameFormsHTML);
fill_data_.username_field.name.clear();
fill_data_.username_field.value.clear();
- UpdateOriginForHTML(kTwoNoUsernameFormsHTML);
+ UpdateUrlForHTML(kTwoNoUsernameFormsHTML);
SimulateOnFillPasswordForm(fill_data_);
SimulateElementClick("password1");
@@ -3354,7 +3373,7 @@ TEST_F(PasswordAutofillAgentTest, SuggestPasswordFieldSignInForm) {
// only on this field.
TEST_F(PasswordAutofillAgentTest, SuggestMultiplePasswordFields) {
LoadHTML(kPasswordChangeFormHTML);
- UpdateOriginForHTML(kPasswordChangeFormHTML);
+ UpdateUrlForHTML(kPasswordChangeFormHTML);
UpdateUsernameAndPasswordElements();
// Simulate the browser sending back the login info.
@@ -3455,7 +3474,7 @@ TEST_F(PasswordAutofillAgentTest,
"form.parentNode.removeChild(form);";
ExecuteJavaScriptForTests(remove_form.c_str());
- FireDidCommitProvisionalLoad();
+ FireDidFinishSameDocumentNavigation();
ExpectSameDocumentNavigationWithUsernameAndPasswords(
renderer_id, std::string(), "random", std::string(),
@@ -3501,7 +3520,7 @@ TEST_F(PasswordAutofillAgentTest,
// between discovering a form and receving credentials from the browser process.
TEST_F(PasswordAutofillAgentTest, AutocompleteWhenPageUrlIsChanged) {
// Simulate that JavaScript changes url.
- fill_data_.origin = GURL(fill_data_.origin.possibly_invalid_spec() + "/path");
+ fill_data_.url = GURL(fill_data_.url.possibly_invalid_spec() + "/path");
SimulateOnFillPasswordForm(fill_data_);
@@ -3574,7 +3593,7 @@ TEST_F(PasswordAutofillAgentTest, ManualFallbackForSaving) {
TEST_F(PasswordAutofillAgentTest, ManualFallbackForSaving_PasswordChangeForm) {
LoadHTML(kPasswordChangeFormHTML);
- UpdateOriginForHTML(kPasswordChangeFormHTML);
+ UpdateUrlForHTML(kPasswordChangeFormHTML);
UpdateUsernameAndPasswordElements();
// No password to save yet - no fallback.
@@ -3686,7 +3705,7 @@ TEST_F(PasswordAutofillAgentTest, PSLMatchedPasswordIsNotAutofill) {
UpdateUsernameAndPasswordElements();
// Set the expected form origin and action URLs.
- UpdateOriginForHTML(kFormWithPrefilledUsernameHTML);
+ UpdateUrlForHTML(kFormWithPrefilledUsernameHTML);
// Add PSL matched credentials with username equal to prefilled one.
PasswordAndMetadata psl_credentials;