Index: third_party/libaddressinput/chromium/chrome_address_validator.cc |
diff --git a/third_party/libaddressinput/chromium/chrome_address_validator.cc b/third_party/libaddressinput/chromium/chrome_address_validator.cc |
index b0bd189d8f0542de34bc185ab102e1cee1d2b28d..12118d4bac927206b28a7af3a154eba5351c5f8f 100644 |
--- a/third_party/libaddressinput/chromium/chrome_address_validator.cc |
+++ b/third_party/libaddressinput/chromium/chrome_address_validator.cc |
@@ -17,6 +17,7 @@ |
#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_normalizer.h" |
#include "third_party/libaddressinput/src/cpp/include/libaddressinput/source.h" |
#include "third_party/libaddressinput/src/cpp/include/libaddressinput/storage.h" |
+#include "third_party/libaddressinput/src/cpp/src/rule.h" |
namespace autofill { |
namespace { |
@@ -27,6 +28,7 @@ using ::i18n::addressinput::AddressNormalizer; |
using ::i18n::addressinput::BuildCallback; |
using ::i18n::addressinput::FieldProblemMap; |
using ::i18n::addressinput::PreloadSupplier; |
+using ::i18n::addressinput::Rule; |
using ::i18n::addressinput::Source; |
using ::i18n::addressinput::Storage; |
@@ -58,6 +60,23 @@ void AddressValidator::LoadRules(const std::string& region_code) { |
supplier_->LoadRules(region_code, *rules_loaded_); |
} |
+std::vector<std::string> AddressValidator::GetRegionSubKeys( |
+ const std::string& region_code) { |
+ if (!AreRulesLoadedForRegion(region_code)) |
+ return std::vector<std::string>(); |
+ |
+ auto rules = supplier_->GetRulesForRegion(region_code); |
+ auto rule_iterator = rules.find("data/" + region_code); |
+ |
+ if (rule_iterator != rules.end()) { |
+ if (rule_iterator->second) |
+ return (rule_iterator->second)->GetSubKeys(); |
+ return std::vector<std::string>(); |
+ } else { |
+ return std::vector<std::string>(); |
+ } |
+} |
+ |
AddressValidator::Status AddressValidator::ValidateAddress( |
const AddressData& address, |
const FieldProblemMap* filter, |
@@ -140,8 +159,9 @@ void AddressValidator::Validated(bool success, |
void AddressValidator::RulesLoaded(bool success, |
const std::string& region_code, |
int) { |
- if (load_rules_listener_) |
- load_rules_listener_->OnAddressValidationRulesLoaded(region_code, success); |
+ if (load_rules_listener_) { |
sebsg
2017/02/28 16:14:00
no need for brackets.
Parastoo
2017/03/21 14:30:44
Done.
|
+ load_rules_listener_->OnAddressRulesLoaded(region_code, success); |
+ } |
// Count the first failed attempt to load rules as well. |
if (success || attempts_number_[region_code] + 1 >= kMaxAttemptsNumber) |