| Index: components/autofill/browser/autofill_manager_unittest.cc
|
| diff --git a/components/autofill/browser/autofill_manager_unittest.cc b/components/autofill/browser/autofill_manager_unittest.cc
|
| index e88906bd3def330699d20291aabd5124640ac079..db72605c4fb4f7c26bdc326b510cc8ea3a50f060 100644
|
| --- a/components/autofill/browser/autofill_manager_unittest.cc
|
| +++ b/components/autofill/browser/autofill_manager_unittest.cc
|
| @@ -37,6 +37,7 @@
|
| #include "components/autofill/common/autofill_messages.h"
|
| #include "components/autofill/common/form_data.h"
|
| #include "components/autofill/common/form_field_data.h"
|
| +#include "components/autofill/common/forms_seen_param.h"
|
| #include "components/user_prefs/user_prefs.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/test/mock_render_process_host.h"
|
| @@ -740,11 +741,23 @@ class AutofillManagerTest : public ChromeRenderViewHostTestHarness {
|
| }
|
|
|
| void FormsSeen(const std::vector<FormData>& forms) {
|
| - autofill_manager_->OnFormsSeen(forms, base::TimeTicks(), false);
|
| + autofill_manager_->OnFormsSeen(forms, base::TimeTicks(),
|
| + autofill::NO_SPECIAL_FORMS_SEEN);
|
| }
|
|
|
| void PartialFormsSeen(const std::vector<FormData>& forms) {
|
| - autofill_manager_->OnFormsSeen(forms, base::TimeTicks(), true);
|
| + autofill_manager_->OnFormsSeen(forms, base::TimeTicks(),
|
| + autofill::PARTIAL_FORMS_SEEN);
|
| + }
|
| +
|
| + void DynamicFormsSeen(const std::vector<FormData>& forms) {
|
| + autofill_manager_->OnFormsSeen(forms, base::TimeTicks(),
|
| + autofill::DYNAMIC_FORMS_SEEN);
|
| + }
|
| +
|
| + void PartialDynamicFormsSeen(const std::vector<FormData>& forms) {
|
| + autofill_manager_->OnFormsSeen(forms, base::TimeTicks(),
|
| + autofill::PARTIAL_AND_DYNAMIC_FORMS_SEEN);
|
| }
|
|
|
| void FormSubmitted(const FormData& form) {
|
| @@ -884,6 +897,20 @@ TEST_F(AutofillManagerTest, GetAllForms) {
|
| ASSERT_TRUE(HasSeenAutofillGetAllFormsMessage());
|
| }
|
|
|
| +// Test that browser asks for all forms after DOM changes when
|
| +// Autocheckout is enabled.
|
| +TEST_F(AutofillManagerTest, GetAllDynamicForms) {
|
| + FormData form;
|
| + CreateTestAddressFormData(&form);
|
| + std::vector<FormData> forms(1, form);
|
| + // Enable autocheckout.
|
| + autofill_manager_->set_autocheckout_url_prefix("test-prefix");
|
| +
|
| + PartialDynamicFormsSeen(forms);
|
| +
|
| + EXPECT_TRUE(HasSeenAutofillGetAllFormsMessage());
|
| +}
|
| +
|
| // Test that we return all address profile suggestions when all form fields are
|
| // empty.
|
| TEST_F(AutofillManagerTest, GetProfileSuggestionsEmptyValue) {
|
| @@ -963,6 +990,42 @@ TEST_F(AutofillManagerTest, AutocheckoutFormsSeen) {
|
| EXPECT_EQ("/form.html", form_structures[2]->source_url().path());
|
| }
|
|
|
| +// Test that in the case of Autocheckout, forms seen are in order supplied.
|
| +TEST_F(AutofillManagerTest, DynamicFormsSeen) {
|
| + FormData shipping_options;
|
| + CreateTestShippingOptionsFormData(&shipping_options);
|
| + FormData user_supplied;
|
| + CreateTestFormWithAutocompleteAttribute(&user_supplied);
|
| + FormData address;
|
| + CreateTestAddressFormData(&address);
|
| +
|
| + autofill_manager_->set_autocheckout_url_prefix("test-prefix");
|
| + // Push user_supplied only
|
| + std::vector<FormData> forms;
|
| + forms.push_back(user_supplied);
|
| +
|
| + // Make sure normal form is handled correctly.
|
| + FormsSeen(forms);
|
| + std::vector<FormStructure*> form_structures;
|
| + form_structures = autofill_manager_->GetFormStructures();
|
| + ASSERT_EQ(1U, form_structures.size());
|
| + EXPECT_EQ("/userspecified.html", form_structures[0]->source_url().path());
|
| +
|
| + // Push other forms
|
| + forms.push_back(shipping_options);
|
| + forms.push_back(address);
|
| +
|
| + // FormStructure should contain three and only three forms. Otherwise, it
|
| + // would indicate that the manager didn't reset upon being notified of
|
| + // the new forms;
|
| + DynamicFormsSeen(forms);
|
| + form_structures = autofill_manager_->GetFormStructures();
|
| + ASSERT_EQ(3U, form_structures.size());
|
| + EXPECT_EQ("/userspecified.html", form_structures[0]->source_url().path());
|
| + EXPECT_EQ("/shipping.html", form_structures[1]->source_url().path());
|
| + EXPECT_EQ("/form.html", form_structures[2]->source_url().path());
|
| +}
|
| +
|
| // Test that we return only matching address profile suggestions when the
|
| // selected form field has been partially filled out.
|
| TEST_F(AutofillManagerTest, GetProfileSuggestionsMatchCharacter) {
|
|
|