diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/chrome/renderer/autofill | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-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')
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; |