summaryrefslogtreecommitdiffstats
path: root/third_party
diff options
context:
space:
mode:
authorrouslan@chromium.org <rouslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-26 18:11:22 +0000
committerrouslan@chromium.org <rouslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-26 18:11:22 +0000
commit00dde4c3d606d2d989df81d73b996ce0a1fe1f73 (patch)
tree83f7533bb4dc069b40fd900a3bb0f991a3c34f9f /third_party
parent48e0f635b43dc7920479271c154f4121e6db9f40 (diff)
downloadchromium_src-00dde4c3d606d2d989df81d73b996ce0a1fe1f73.zip
chromium_src-00dde4c3d606d2d989df81d73b996ce0a1fe1f73.tar.gz
chromium_src-00dde4c3d606d2d989df81d73b996ce0a1fe1f73.tar.bz2
Do not suggest completions for name and street address.
Libaddressinput should not provide address suggestions if the focused field is not postal code or one of the levels of administrative areas. BUG=356357 TEST=AddressValidatorTest.SuggestOnlyForAdministrativeAreasAndPostalCode Review URL: https://codereview.chromium.org/211513004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@259630 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party')
-rw-r--r--third_party/libaddressinput/chromium/cpp/src/address_validator.cc22
-rw-r--r--third_party/libaddressinput/chromium/cpp/test/address_validator_test.cc35
2 files changed, 52 insertions, 5 deletions
diff --git a/third_party/libaddressinput/chromium/cpp/src/address_validator.cc b/third_party/libaddressinput/chromium/cpp/src/address_validator.cc
index 3241d47..435f75d 100644
--- a/third_party/libaddressinput/chromium/cpp/src/address_validator.cc
+++ b/third_party/libaddressinput/chromium/cpp/src/address_validator.cc
@@ -271,14 +271,16 @@ class AddressValidatorImpl : public AddressValidator {
assert(ruleset_it->second != NULL);
- // Do not suggest anything if the user input is empty.
- if (user_input.GetFieldValue(focused_field).empty()) {
+ // Do not suggest anything if the user is typing in the field for which
+ // there's no validation data.
+ if (focused_field != POSTAL_CODE &&
+ (focused_field < ADMIN_AREA || focused_field > DEPENDENT_LOCALITY)) {
return SUCCESS;
}
- // Initialize the prefix search index lazily.
- if (!ruleset_it->second->prefix_search_index_ready()) {
- ruleset_it->second->BuildPrefixSearchIndex();
+ // Do not suggest anything if the user input is empty.
+ if (user_input.GetFieldValue(focused_field).empty()) {
+ return SUCCESS;
}
const Ruleset& country_ruleset = *ruleset_it->second;
@@ -295,6 +297,16 @@ class AddressValidatorImpl : public AddressValidator {
return SUCCESS;
}
+ // Initialize the prefix search index lazily.
+ if (!ruleset_it->second->prefix_search_index_ready()) {
+ ruleset_it->second->BuildPrefixSearchIndex();
+ }
+
+ if (focused_field != POSTAL_CODE &&
+ focused_field > country_ruleset.deepest_ruleset_level()) {
+ return SUCCESS;
+ }
+
// Determine the most specific address field that can be suggested.
AddressField suggestion_field = focused_field != POSTAL_CODE
? focused_field : DEPENDENT_LOCALITY;
diff --git a/third_party/libaddressinput/chromium/cpp/test/address_validator_test.cc b/third_party/libaddressinput/chromium/cpp/test/address_validator_test.cc
index cf68ec0..f0d2095 100644
--- a/third_party/libaddressinput/chromium/cpp/test/address_validator_test.cc
+++ b/third_party/libaddressinput/chromium/cpp/test/address_validator_test.cc
@@ -521,5 +521,40 @@ TEST_F(AddressValidatorTest, SuggestionIncludesCountry) {
EXPECT_EQ("US", suggestions[0].country_code);
}
+TEST_F(AddressValidatorTest, SuggestOnlyForAdministrativeAreasAndPostalCode) {
+ AddressData address;
+ address.country_code = "US";
+ address.administrative_area = "CA";
+ address.locality = "Los Angeles";
+ address.dependent_locality = "Venice";
+ address.postal_code = "90291";
+ address.sorting_code = "123";
+ address.address_lines.push_back("123 Main St");
+ address.organization = "Google";
+ address.recipient = "Jon Smith";
+
+ // Fields that should not have suggestions in US.
+ static const AddressField kNoSugestFields[] = {
+ COUNTRY,
+ LOCALITY,
+ DEPENDENT_LOCALITY,
+ SORTING_CODE,
+ STREET_ADDRESS,
+ ORGANIZATION,
+ RECIPIENT
+ };
+
+ static const size_t kNumNoSuggestFields =
+ sizeof kNoSugestFields / sizeof (AddressField);
+
+ for (size_t i = 0; i < kNumNoSuggestFields; ++i) {
+ std::vector<AddressData> suggestions;
+ EXPECT_EQ(AddressValidator::SUCCESS,
+ validator_->GetSuggestions(
+ address, kNoSugestFields[i], 999, &suggestions));
+ EXPECT_TRUE(suggestions.empty());
+ }
+}
+
} // namespace addressinput
} // namespace i18n