Commit bd385752 authored by Matthias Körber's avatar Matthias Körber Committed by Commit Bot

[Autofill][Slimshady] Adapt data driven merge test to structured names.

Copying the input data fits the structure of the test setup.

Change-Id: I822ee962aaaaed433494bad604e59f69a2583eea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2343266
Commit-Queue: Matthias Körber <koerber@google.com>
Reviewed-by: default avatarDominic Battré <battre@chromium.org>
Cr-Commit-Position: refs/heads/master@{#796186}
parent 159fe2d6
......@@ -8,6 +8,7 @@
#include <memory>
#include <vector>
#include "base/feature_list.h"
#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/macros.h"
......@@ -26,6 +27,7 @@
#include "components/autofill/core/browser/geo/country_names.h"
#include "components/autofill/core/browser/personal_data_manager.h"
#include "components/autofill/core/browser/test_autofill_client.h"
#include "components/autofill/core/common/autofill_features.h"
#include "components/autofill/core/common/form_data.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
......@@ -39,6 +41,8 @@ namespace autofill {
namespace {
const base::FilePath::CharType kTestName[] = FILE_PATH_LITERAL("merge");
const base::FilePath::CharType kTestNameStructuredNames[] =
FILE_PATH_LITERAL("merge_structured_names");
const base::FilePath::CharType kFileNamePattern[] = FILE_PATH_LITERAL("*.in");
const char kFieldSeparator[] = ":";
......@@ -70,7 +74,12 @@ const base::FilePath& GetTestDataDir() {
const std::vector<base::FilePath> GetTestFiles() {
base::FilePath dir = GetTestDataDir();
dir = dir.AppendASCII("autofill").AppendASCII("merge").AppendASCII("input");
bool structured_names = base::FeatureList::IsEnabled(
features::kAutofillEnableSupportForMoreStructureInNames);
dir =
dir.AppendASCII("autofill")
.AppendASCII(structured_names ? "merge_structured_names" : "merge")
.AppendASCII("input");
base::FileEnumerator input_files(dir, false, base::FileEnumerator::FILES,
kFileNamePattern);
std::vector<base::FilePath> files;
......@@ -303,8 +312,17 @@ ServerFieldType AutofillMergeTest::StringToFieldType(const std::string& str) {
TEST_P(AutofillMergeTest, DataDrivenMergeProfiles) {
const bool kIsExpectedToPass = true;
RunOneDataDrivenTest(GetParam(), GetOutputDirectory(kTestName),
kIsExpectedToPass);
// TODO(crbug.com/1103421): Clean legacy implementation once structured names
// are fully launched.
if (base::FeatureList::IsEnabled(
features::kAutofillEnableSupportForMoreStructureInNames)) {
RunOneDataDrivenTest(GetParam(),
GetOutputDirectory(kTestNameStructuredNames),
kIsExpectedToPass);
} else {
RunOneDataDrivenTest(GetParam(), GetOutputDirectory(kTestName),
kIsExpectedToPass);
}
}
INSTANTIATE_TEST_SUITE_P(All,
......
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_LINE1: 1600 Amphitheatre Parkway
ADDRESS_HOME_LINE2: (Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_LINE1: 1600 Amphitheatre Parkway (Bldg. 1950)
ADDRESS_HOME_LINE2:
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_LINE1: 1600 Amphitheatre Parkway (Bldg. 1950)
ADDRESS_HOME_LINE2:
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_LINE1: 1600 Amphitheatre Parkway
ADDRESS_HOME_LINE2: (Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_FIRST: James
NAME_MIDDLE: Kilgore
NAME_MIDDLE:
NAME_LAST: Doe
NAME_LAST:
NAME_FULL:
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
EMAIL_ADDRESS: x.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
PHONE_HOME_WHOLE_NUMBER: 6505559999
PHONE_HOME_WHOLE_NUMBER: 6505559999
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: john
NAME_MIDDLE: kilgore
NAME_LAST: doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: testCo
ADDRESS_HOME_STREET_ADDRESS: 1600 amphitheatre parkway\n(bldg. 1950)
ADDRESS_HOME_CITY: mountain view
ADDRESS_HOME_STATE: ca
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: united states
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: j@x.com
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: j@x.com
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1601 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: j@x.com
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1602 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: j@x.com
ADDRESS_HOME_STREET_ADDRESS: 1603 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: j@x.com\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1604 Amphitheatre Parkway\nj@x.com
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1605 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: j@x.com
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1606 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: j@x.com
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1607 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: j@x.com
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1608 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: j@x.com
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1609 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: j@x.com
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME:
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER:
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: john
NAME_MIDDLE:
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: Alice
NAME_MIDDLE: Anne
NAME_LAST: Akins
NAME_FULL:
EMAIL_ADDRESS: aa@a.com
COMPANY_NAME: Acme
ADDRESS_HOME_STREET_ADDRESS: 1 Main Street\nApt 1
ADDRESS_HOME_CITY: San Francisco
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94102
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 16502101111
---
NAME_FIRST: Billy
NAME_MIDDLE: Bob
NAME_LAST: Bruner
NAME_FULL:
EMAIL_ADDRESS: bb@b.com
COMPANY_NAME: Acme
ADDRESS_HOME_STREET_ADDRESS: 1 MAIN STREET\nApt 1
ADDRESS_HOME_CITY: SAN FRANCISCO
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94102
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6502343333
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600, Amphitheatre Parkway.\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: Alice
NAME_MIDDLE: Anne
NAME_LAST: Akins
NAME_FULL:
EMAIL_ADDRESS: aa@a.com
COMPANY_NAME: Acme
ADDRESS_HOME_STREET_ADDRESS: 1 Main Street\nApt 1
ADDRESS_HOME_CITY: San Francisco
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94102
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 16502101111
---
NAME_FIRST: Alice
NAME_MIDDLE: Anne
NAME_LAST: Akins
NAME_FULL:
EMAIL_ADDRESS: aa@a.com
COMPANY_NAME: Box Co
ADDRESS_HOME_STREET_ADDRESS: 1 Main Street\nApt 2
ADDRESS_HOME_CITY: San Francisco
ADDRESS_HOME_STATE: NY
ADDRESS_HOME_ZIP: 11001
ADDRESS_HOME_COUNTRY: Canada
PHONE_HOME_WHOLE_NUMBER: 16502101111
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_LINE1: 1600 Amphitheatre Parkway (Bldg. 1950)
ADDRESS_HOME_LINE2:
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_LINE1: 1600 Amphitheatre Parkway(Bldg. 1950)
ADDRESS_HOME_LINE2:
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_LINE1: 1600 Amphitheatre Parkway
ADDRESS_HOME_LINE2: (Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_LAST: Doe
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: Jim
NAME_LAST: Smith
NAME_FULL:
EMAIL_ADDRESS: john.doe@example.com
ADDRESS_HOME_STREET_ADDRESS: \nApt 2
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
---
NAME_FIRST: David
NAME_LAST: Smith
NAME_FULL:
EMAIL_ADDRESS: bademail
ADDRESS_HOME_STREET_ADDRESS: 4 Main Street
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
---
NAME_FIRST: Jane
NAME_LAST: Smith
NAME_FULL:
EMAIL_ADDRESS: jane.smith@example.com
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: Bad Country
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: Joe
NAME_LAST: Jones
NAME_FULL:
EMAIL_ADDRESS: joejones@example.com
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: BadState
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: Jim
NAME_LAST: Jones
NAME_FULL:
EMAIL_ADDRESS: jimjones@example.com
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway\n(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: bogus
ADDRESS_HOME_COUNTRY: United States
PHONE_HOME_WHOLE_NUMBER: 6505558888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: john
NAME_MIDDLE: kilgore
NAME_LAST: doe
NAME_FULL: john kilgore doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: testCo
ADDRESS_HOME_STREET_ADDRESS: 1600 amphitheatre parkway
(bldg. 1950)
ADDRESS_HOME_CITY: mountain view
ADDRESS_HOME_STATE: ca
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: j@x.com
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1604 Amphitheatre Parkway
j@x.com
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: Alice
NAME_MIDDLE: Anne
NAME_LAST: Akins
NAME_FULL: Alice Anne Akins
EMAIL_ADDRESS: aa@a.com
COMPANY_NAME: Acme
ADDRESS_HOME_STREET_ADDRESS: 1 Main Street
Apt 1
ADDRESS_HOME_CITY: San Francisco
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94102
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: 1 650-210-1111
---
NAME_FIRST: Billy
NAME_MIDDLE: Bob
NAME_LAST: Bruner
NAME_FULL: Billy Bob Bruner
EMAIL_ADDRESS: bb@b.com
COMPANY_NAME: Acme
ADDRESS_HOME_STREET_ADDRESS: 1 MAIN STREET
Apt 1
ADDRESS_HOME_CITY: SAN FRANCISCO
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94102
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 234-3333
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600, Amphitheatre Parkway.
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: Alice
NAME_MIDDLE: Anne
NAME_LAST: Akins
NAME_FULL: Alice Anne Akins
EMAIL_ADDRESS: aa@a.com
COMPANY_NAME: Acme
ADDRESS_HOME_STREET_ADDRESS: 1 Main Street
Apt 1
ADDRESS_HOME_CITY: San Francisco
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94102
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: 1 650-210-1111
---
NAME_FIRST: Alice
NAME_MIDDLE: Anne
NAME_LAST: Akins
NAME_FULL: Alice Anne Akins
EMAIL_ADDRESS: aa@a.com
COMPANY_NAME: Box Co
ADDRESS_HOME_STREET_ADDRESS: 1 Main Street
Apt 2
ADDRESS_HOME_CITY: San Francisco
ADDRESS_HOME_STATE: NY
ADDRESS_HOME_ZIP: 11001
ADDRESS_HOME_COUNTRY: CA
PHONE_HOME_WHOLE_NUMBER: 1 650-210-1111
---
NAME_FIRST: John
NAME_MIDDLE: Kilgore
NAME_LAST: Doe
NAME_FULL: John Kilgore Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: John
NAME_MIDDLE:
NAME_LAST: Doe
NAME_FULL: John Doe
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME: TestCo
ADDRESS_HOME_STREET_ADDRESS: 1600 Amphitheatre Parkway
(Bldg. 1950)
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY: US
PHONE_HOME_WHOLE_NUMBER: (650) 555-8888
---
NAME_FIRST: Jim
NAME_MIDDLE:
NAME_LAST: Smith
NAME_FULL: Jim Smith
EMAIL_ADDRESS: john.doe@example.com
COMPANY_NAME:
ADDRESS_HOME_STREET_ADDRESS: Apt 2
ADDRESS_HOME_CITY: Mountain View
ADDRESS_HOME_STATE: CA
ADDRESS_HOME_ZIP: 94043
ADDRESS_HOME_COUNTRY:
PHONE_HOME_WHOLE_NUMBER:
# Copyright 2013 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.
class UnknownColumnNameException(Exception):
"""Exception type raised when encountering an unknown column name."""
def __init__(self, column_name):
self.column_name = column_name
def __str__(self):
return repr(self.column_name)
def SerializeProfiles(profiles):
"""Returns a serialized string for the given |profiles|.
|profiles| should be a list of (field_type, value) string pairs.
"""
lines = []
for profile in profiles:
# Include a fixed string to separate profiles.
lines.append("---")
for (field_type, value) in profile:
if field_type == "ignored":
continue;
lines.append("%s:%s%s" % (field_type, (' ' if value else ''), value))
return '\n'.join(lines)
def ColumnNameToFieldType(column_name):
"""Converts the given |column_name| to the corresponding AutofillField type.
|column_name| should be a string drawn from the column names of the
autofill_profiles table in the Chromium "Web Data" database.
"""
column_name = column_name.lower()
field_type = "unknown"
if column_name in ["guid", "label", "country", "date_modified", "origin",
"language_code", "use_count", "use_date", "sorting_code",
"dependent_locality"]:
field_type = "ignored"
elif column_name == "first_name":
field_type = "NAME_FIRST"
elif column_name == "middle_name":
field_type = "NAME_MIDDLE"
elif column_name == "last_name":
field_type = "NAME_LAST"
elif column_name == "full_name":
field_type = "NAME_FULL"
elif column_name == "email":
field_type = "EMAIL_ADDRESS"
elif column_name == "company_name":
field_type = "COMPANY_NAME"
elif column_name == "address_line_1":
field_type = "ADDRESS_HOME_LINE1"
elif column_name == "address_line_2":
field_type = "ADDRESS_HOME_LINE2"
elif column_name == "street_address":
field_type = "ADDRESS_HOME_STREET_ADDRESS"
elif column_name == "city":
field_type = "ADDRESS_HOME_CITY"
elif column_name == "state":
field_type = "ADDRESS_HOME_STATE"
elif column_name == "zipcode":
field_type = "ADDRESS_HOME_ZIP"
elif column_name == "country_code":
field_type = "ADDRESS_HOME_COUNTRY"
elif column_name == "phone":
field_type = "PHONE_HOME_WHOLE_NUMBER"
else:
raise UnknownColumnNameException(column_name)
return field_type
#!/usr/bin/env python
# Copyright 2013 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.
import sys
def main():
"""Converts a vertical serialization into a compact, horizontal serialization.
"""
COLUMNS = ['First name', 'Middle name', 'Last name', 'Email', 'Company name',
'Address line 1', 'Address line 2', 'City', 'State', 'ZIP code',
'Country', 'Phone']
if len(sys.argv) != 2:
print "Usage: python flatten.py <path/to/serialized_profiles>"
return
profiles = [COLUMNS]
with open(sys.argv[1], 'r') as serialized_profiles:
profile = []
previous_field_type = ''
for line in serialized_profiles:
# Trim the newline if present.
if line[-1] == '\n':
line = line[:-1]
if line == "---":
if len(profile):
# Reached the end of a profile.
# Save the current profile and prepare to build up the next one.
profiles.append(profile)
profile = []
else:
# Append the current field's value to the current profile.
line_parts = line.split(': ', 1)
field_type = line_parts[0]
field_value = line_parts[1]
if field_type != previous_field_type:
profile.append("'%s'" % field_value)
else:
# This is a non-primary value for a multi-valued field.
profile[-1] += ", '%s'" % field_value
previous_field_type = field_type
if len(profile):
profiles.append(profile)
# Prepare format strings so that we can align the contents of each column.
transposed = zip(*profiles)
column_widths = []
for column in transposed:
widths = [len(value) for value in column]
column_widths.append(max(widths))
column_formats = ["{0:<" + str(width) + "}" for width in column_widths]
for profile in profiles:
profile_format = zip(column_formats, profile)
profile = [format_.format(value) for (format_, value) in profile_format]
print " | ".join(profile)
return 0
if __name__ == '__main__':
sys.exit(main())
#!/usr/bin/env python
# Copyright 2013 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.
import sys
from autofill_merge_common import SerializeProfiles, ColumnNameToFieldType
def main():
"""Serializes the output of the query 'SELECT * from autofill_profiles;'.
"""
COLUMNS = ['GUID', 'LABEL', 'FIRST_NAME', 'MIDDLE_NAME', 'LAST_NAME', 'EMAIL',
'COMPANY_NAME', 'ADDRESS_LINE_1', 'ADDRESS_LINE_2', 'CITY',
'STATE', 'ZIPCODE', 'COUNTRY', 'PHONE', 'DATE_MODIFIED']
if len(sys.argv) != 2:
print ("Usage: python reserialize_profiles_from_query.py "
"<path/to/serialized_profiles>")
return
types = [ColumnNameToFieldType(column_name) for column_name in COLUMNS]
profiles = []
with open(sys.argv[1], 'r') as serialized_profiles:
for line in serialized_profiles:
# trim the newline if present
if line[-1] == '\n':
line = line[:-1]
values = line.split("|")
profiles.append(zip(types, values))
print SerializeProfiles(profiles)
return 0
if __name__ == '__main__':
sys.exit(main())
#!/usr/bin/env python
# Copyright 2013 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.
import os.path
import sqlite3
import sys
from autofill_merge_common import SerializeProfiles, ColumnNameToFieldType
def main():
"""Serializes the autofill_profiles table from the specified database."""
if len(sys.argv) != 2:
print "Usage: python serialize_profiles.py <path/to/database>"
return 1
database = sys.argv[1]
if not os.path.isfile(database):
print "Cannot read database at \"%s\"" % database
return 1
# Read the autofill_profile_names table.
try:
connection = sqlite3.connect(database, 0)
cursor = connection.cursor()
cursor.execute("SELECT * from autofill_profile_names;")
except sqlite3.OperationalError:
print ("Failed to read the autofill_profile_names table from \"%s\"" %
database)
raise
# For backward-compatibility, the result of |cursor.description| is a list of
# 7-tuples, in which the first item is the column name, and the remaining
# items are 'None'.
types = [ColumnNameToFieldType(item[0]) for item in cursor.description]
profiles = {}
for profile in cursor:
guid = profile[0]
profiles[guid] = zip(types, profile)
# Read the autofill_profile_emails table.
try:
cursor.execute("SELECT * from autofill_profile_emails;")
except sqlite3.OperationalError:
print ("Failed to read the autofill_profile_emails table from \"%s\"" %
database)
raise
types = [ColumnNameToFieldType(item[0]) for item in cursor.description]
for profile in cursor:
guid = profile[0]
profiles[guid].extend(zip(types, profile))
# Read the autofill_profiles table.
try:
cursor.execute("SELECT * from autofill_profiles;")
except sqlite3.OperationalError:
print "Failed to read the autofill_profiles table from \"%s\"" % database
raise
types = [ColumnNameToFieldType(item[0]) for item in cursor.description]
for profile in cursor:
guid = profile[0]
profiles[guid].extend(zip(types, profile))
# Read the autofill_profile_phones table.
try:
cursor.execute("SELECT * from autofill_profile_phones;")
except sqlite3.OperationalError:
print ("Failed to read the autofill_profile_phones table from \"%s\"" %
database)
raise
for profile in cursor:
guid = profile[0]
profiles[guid].append(("PHONE_HOME_WHOLE_NUMBER", profile[1]))
print SerializeProfiles(profiles.values())
return 0
if __name__ == '__main__':
sys.exit(main())
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment