| Index: components/autofill/core/browser/autofill_manager_unittest.cc
|
| diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
|
| index 3fe7cebe1e9381ab8d10640544de12f72e96e58b..6f9fc2cfdcfcc1e2861df2d8964bf5dffe91b8b3 100644
|
| --- a/components/autofill/core/browser/autofill_manager_unittest.cc
|
| +++ b/components/autofill/core/browser/autofill_manager_unittest.cc
|
| @@ -21,6 +21,7 @@
|
| #include "base/thread_task_runner_handle.h"
|
| #include "base/time/time.h"
|
| #include "components/autofill/core/browser/autocomplete_history_manager.h"
|
| +#include "components/autofill/core/browser/autofill_download_manager.h"
|
| #include "components/autofill/core/browser/autofill_manager.h"
|
| #include "components/autofill/core/browser/autofill_profile.h"
|
| #include "components/autofill/core/browser/autofill_test_utils.h"
|
| @@ -208,6 +209,32 @@ class TestPersonalDataManager : public PersonalDataManager {
|
| DISALLOW_COPY_AND_ASSIGN(TestPersonalDataManager);
|
| };
|
|
|
| +class TestAutofillDownloadManager : public AutofillDownloadManager {
|
| + public:
|
| + TestAutofillDownloadManager(AutofillDriver* driver,
|
| + PrefService* pref_service,
|
| + AutofillDownloadManager::Observer* observer)
|
| + : AutofillDownloadManager(driver, pref_service, observer) {}
|
| +
|
| + bool StartQueryRequest(const std::vector<FormStructure*>& forms) override {
|
| + last_queried_forms_ = forms;
|
| + return true;
|
| + }
|
| +
|
| + // Verify that the last queried forms equal |expected_forms|.
|
| + void VerifyLastQueriedForms(const std::vector<FormData>& expected_forms) {
|
| + ASSERT_EQ(expected_forms.size(), last_queried_forms_.size());
|
| + for (size_t i = 0; i < expected_forms.size(); ++i) {
|
| + EXPECT_EQ(*last_queried_forms_[i], expected_forms[i]);
|
| + }
|
| + }
|
| +
|
| + private:
|
| + std::vector<FormStructure*> last_queried_forms_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestAutofillDownloadManager);
|
| +};
|
| +
|
| void ExpectFilledField(const char* expected_label,
|
| const char* expected_name,
|
| const char* expected_value,
|
| @@ -604,7 +631,11 @@ class AutofillManagerTest : public testing::Test {
|
| autofill_driver_->SetURLRequestContext(request_context_.get());
|
| autofill_manager_.reset(new TestAutofillManager(
|
| autofill_driver_.get(), &autofill_client_, &personal_data_));
|
| -
|
| + download_manager_ = new TestAutofillDownloadManager(
|
| + autofill_driver_.get(), autofill_client_.GetPrefs(),
|
| + autofill_manager_.get());
|
| + // AutofillManager takes ownership of |download_manager_|.
|
| + autofill_manager_->set_download_manager(download_manager_);
|
| external_delegate_.reset(new TestAutofillExternalDelegate(
|
| autofill_manager_.get(),
|
| autofill_driver_.get()));
|
| @@ -781,6 +812,7 @@ class AutofillManagerTest : public testing::Test {
|
| scoped_ptr<TestAutofillManager> autofill_manager_;
|
| scoped_ptr<TestAutofillExternalDelegate> external_delegate_;
|
| scoped_refptr<net::TestURLRequestContextGetter> request_context_;
|
| + TestAutofillDownloadManager* download_manager_;
|
| TestPersonalDataManager personal_data_;
|
| };
|
|
|
| @@ -824,11 +856,47 @@ TEST_F(AutofillManagerTest, OnFormsSeen_Empty) {
|
| "Autofill.UserHappiness", 0 /* FORMS_LOADED */, 1);
|
|
|
| // No more forms, metric is not logged.
|
| - FormsSeen(std::vector<FormData>{});
|
| + forms.clear();
|
| + FormsSeen(forms);
|
| histogram_tester.ExpectUniqueSample(
|
| "Autofill.UserHappiness", 0 /* FORMS_LOADED */, 1);
|
| }
|
|
|
| +// Test that calling OnFormsSeen consecutively with a different set of forms
|
| +// will query for each separately.
|
| +TEST_F(AutofillManagerTest, OnFormsSeen_DifferentFormStructures) {
|
| + // Set up our form data.
|
| + FormData form;
|
| + test::CreateTestAddressFormData(&form);
|
| + std::vector<FormData> forms(1, form);
|
| +
|
| + base::HistogramTester histogram_tester;
|
| + FormsSeen(forms);
|
| + histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
|
| + 0 /* FORMS_LOADED */, 1);
|
| + download_manager_->VerifyLastQueriedForms(forms);
|
| +
|
| + // Different form structure.
|
| + FormData form2;
|
| + form2.name = ASCIIToUTF16("MyForm");
|
| + form2.origin = GURL("https://myform.com/form.html");
|
| + form2.action = GURL("https://myform.com/submit.html");
|
| + FormFieldData field;
|
| + test::CreateTestFormField("First Name", "firstname", "", "text", &field);
|
| + form2.fields.push_back(field);
|
| + test::CreateTestFormField("Last Name", "lastname", "", "text", &field);
|
| + form2.fields.push_back(field);
|
| + test::CreateTestFormField("Email", "email", "", "text", &field);
|
| + form2.fields.push_back(field);
|
| +
|
| + forms.clear();
|
| + forms.push_back(form2);
|
| + FormsSeen(forms);
|
| + histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
|
| + 0 /* FORMS_LOADED */, 2);
|
| + download_manager_->VerifyLastQueriedForms(forms);
|
| +}
|
| +
|
| // Test that we return all address profile suggestions when all form fields are
|
| // empty.
|
| TEST_F(AutofillManagerTest, GetProfileSuggestionsEmptyValue) {
|
|
|