| Index: components/autofill/browser/autofill_merge_unittest.cc
|
| diff --git a/components/autofill/browser/autofill_merge_unittest.cc b/components/autofill/browser/autofill_merge_unittest.cc
|
| deleted file mode 100644
|
| index 48d54a06d875c35c42e907b4dde1993febfb7c55..0000000000000000000000000000000000000000
|
| --- a/components/autofill/browser/autofill_merge_unittest.cc
|
| +++ /dev/null
|
| @@ -1,223 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "components/autofill/browser/autofill_common_test.h"
|
| -#include "components/autofill/browser/autofill_type.h"
|
| -#include "components/autofill/browser/data_driven_test.h"
|
| -#include "components/autofill/browser/form_structure.h"
|
| -#include "components/autofill/browser/personal_data_manager.h"
|
| -#include "components/autofill/core/common/form_data.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h"
|
| -
|
| -namespace autofill {
|
| -
|
| -namespace {
|
| -
|
| -const base::FilePath::CharType kTestName[] = FILE_PATH_LITERAL("merge");
|
| -const base::FilePath::CharType kFileNamePattern[] = FILE_PATH_LITERAL("*.in");
|
| -
|
| -const char kFieldSeparator[] = ": ";
|
| -const char kProfileSeparator[] = "---";
|
| -const size_t kFieldOffset = arraysize(kFieldSeparator) - 1;
|
| -
|
| -const AutofillFieldType kProfileFieldTypes[] = {
|
| - NAME_FIRST,
|
| - NAME_MIDDLE,
|
| - NAME_LAST,
|
| - EMAIL_ADDRESS,
|
| - COMPANY_NAME,
|
| - ADDRESS_HOME_LINE1,
|
| - ADDRESS_HOME_LINE2,
|
| - ADDRESS_HOME_CITY,
|
| - ADDRESS_HOME_STATE,
|
| - ADDRESS_HOME_ZIP,
|
| - ADDRESS_HOME_COUNTRY,
|
| - PHONE_HOME_WHOLE_NUMBER
|
| -};
|
| -
|
| -// Serializes the |profiles| into a string.
|
| -std::string SerializeProfiles(const std::vector<AutofillProfile*>& profiles) {
|
| - std::string result;
|
| - for (size_t i = 0; i < profiles.size(); ++i) {
|
| - result += kProfileSeparator;
|
| - result += "\n";
|
| - for (size_t j = 0; j < arraysize(kProfileFieldTypes); ++j) {
|
| - AutofillFieldType type = kProfileFieldTypes[j];
|
| - std::vector<base::string16> values;
|
| - profiles[i]->GetRawMultiInfo(type, &values);
|
| - for (size_t k = 0; k < values.size(); ++k) {
|
| - result += AutofillType::FieldTypeToString(type);
|
| - result += kFieldSeparator;
|
| - result += UTF16ToUTF8(values[k]);
|
| - result += "\n";
|
| - }
|
| - }
|
| - }
|
| -
|
| - return result;
|
| -}
|
| -
|
| -class PersonalDataManagerMock : public PersonalDataManager {
|
| - public:
|
| - PersonalDataManagerMock();
|
| - virtual ~PersonalDataManagerMock();
|
| -
|
| - // Reset the saved profiles.
|
| - void Reset();
|
| -
|
| - // PersonalDataManager:
|
| - virtual void SaveImportedProfile(const AutofillProfile& profile) OVERRIDE;
|
| - virtual const std::vector<AutofillProfile*>& web_profiles() const OVERRIDE;
|
| -
|
| - private:
|
| - ScopedVector<AutofillProfile> profiles_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PersonalDataManagerMock);
|
| -};
|
| -
|
| -PersonalDataManagerMock::PersonalDataManagerMock()
|
| - : PersonalDataManager("en-US") {
|
| -}
|
| -
|
| -PersonalDataManagerMock::~PersonalDataManagerMock() {
|
| -}
|
| -
|
| -void PersonalDataManagerMock::Reset() {
|
| - profiles_.clear();
|
| -}
|
| -
|
| -void PersonalDataManagerMock::SaveImportedProfile(
|
| - const AutofillProfile& profile) {
|
| - std::vector<AutofillProfile> profiles;
|
| - if (!MergeProfile(profile, profiles_.get(), "en-US", &profiles))
|
| - profiles_.push_back(new AutofillProfile(profile));
|
| -}
|
| -
|
| -const std::vector<AutofillProfile*>& PersonalDataManagerMock::web_profiles()
|
| - const {
|
| - return profiles_.get();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// A data-driven test for verifying merging of Autofill profiles. Each input is
|
| -// a structured dump of a set of implicitly detected autofill profiles. The
|
| -// corresponding output file is a dump of the saved profiles that result from
|
| -// importing the input profiles. The output file format is identical to the
|
| -// input format.
|
| -class AutofillMergeTest : public testing::Test,
|
| - public DataDrivenTest {
|
| - protected:
|
| - AutofillMergeTest();
|
| - virtual ~AutofillMergeTest();
|
| -
|
| - // testing::Test:
|
| - virtual void SetUp();
|
| -
|
| - // DataDrivenTest:
|
| - virtual void GenerateResults(const std::string& input,
|
| - std::string* output) OVERRIDE;
|
| -
|
| - // Deserializes a set of Autofill profiles from |profiles|, imports each
|
| - // sequentially, and fills |merged_profiles| with the serialized result.
|
| - void MergeProfiles(const std::string& profiles, std::string* merged_profiles);
|
| -
|
| - PersonalDataManagerMock personal_data_;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(AutofillMergeTest);
|
| -};
|
| -
|
| -AutofillMergeTest::AutofillMergeTest() : DataDrivenTest() {
|
| -}
|
| -
|
| -AutofillMergeTest::~AutofillMergeTest() {
|
| -}
|
| -
|
| -void AutofillMergeTest::SetUp() {
|
| - test::DisableSystemServices(NULL);
|
| -}
|
| -
|
| -void AutofillMergeTest::GenerateResults(const std::string& input,
|
| - std::string* output) {
|
| - MergeProfiles(input, output);
|
| -}
|
| -
|
| -void AutofillMergeTest::MergeProfiles(const std::string& profiles,
|
| - std::string* merged_profiles) {
|
| - // Start with no saved profiles.
|
| - personal_data_.Reset();
|
| -
|
| - // Create a test form.
|
| - FormData form;
|
| - form.name = ASCIIToUTF16("MyTestForm");
|
| - form.method = ASCIIToUTF16("POST");
|
| - form.origin = GURL("https://www.example.com/origin.html");
|
| - form.action = GURL("https://www.example.com/action.html");
|
| - form.user_submitted = true;
|
| -
|
| - // Parse the input line by line.
|
| - std::vector<std::string> lines;
|
| - Tokenize(profiles, "\n", &lines);
|
| - for (size_t i = 0; i < lines.size(); ++i) {
|
| - std::string line = lines[i];
|
| -
|
| - if (line != kProfileSeparator) {
|
| - // Add a field to the current profile.
|
| - size_t separator_pos = line.find(kFieldSeparator);
|
| - ASSERT_NE(std::string::npos, separator_pos);
|
| - base::string16 field_type = UTF8ToUTF16(line.substr(0, separator_pos));
|
| - base::string16 value =
|
| - UTF8ToUTF16(line.substr(separator_pos + kFieldOffset));
|
| -
|
| - FormFieldData field;
|
| - field.label = field_type;
|
| - field.name = field_type;
|
| - field.value = value;
|
| - field.form_control_type = "text";
|
| - form.fields.push_back(field);
|
| - }
|
| -
|
| - // The first line is always a profile separator, and the last profile is not
|
| - // followed by an explicit separator.
|
| - if ((i > 0 && line == kProfileSeparator) || i == lines.size() - 1) {
|
| - // Reached the end of a profile. Try to import it.
|
| - FormStructure form_structure(form, std::string());
|
| - for (size_t i = 0; i < form_structure.field_count(); ++i) {
|
| - // Set the heuristic type for each field, which is currently serialized
|
| - // into the field's name.
|
| - AutofillField* field =
|
| - const_cast<AutofillField*>(form_structure.field(i));
|
| - AutofillFieldType type =
|
| - AutofillType::StringToFieldType(UTF16ToUTF8(field->name));
|
| - field->set_heuristic_type(type);
|
| - }
|
| -
|
| - // Import the profile.
|
| - const CreditCard* imported_credit_card;
|
| - personal_data_.ImportFormData(form_structure, &imported_credit_card);
|
| - EXPECT_EQ(static_cast<const CreditCard*>(NULL), imported_credit_card);
|
| -
|
| - // Clear the |form| to start a new profile.
|
| - form.fields.clear();
|
| - }
|
| - }
|
| -
|
| - *merged_profiles = SerializeProfiles(personal_data_.web_profiles());
|
| -}
|
| -
|
| -TEST_F(AutofillMergeTest, DataDrivenMergeProfiles) {
|
| - RunDataDrivenTest(GetInputDirectory(kTestName), GetOutputDirectory(kTestName),
|
| - kFileNamePattern);
|
| -}
|
| -
|
| -} // namespace autofill
|
|
|