Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (C) 2013 Google Inc. | 1 // Copyright (C) 2013 Google Inc. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 72 } | 72 } |
| 73 return true; | 73 return true; |
| 74 } | 74 } |
| 75 | 75 |
| 76 // Validates AddressData structure. | 76 // Validates AddressData structure. |
| 77 class AddressValidatorImpl : public AddressValidator { | 77 class AddressValidatorImpl : public AddressValidator { |
| 78 public: | 78 public: |
| 79 // Takes ownership of |downloader| and |storage|. Does not take ownership of | 79 // Takes ownership of |downloader| and |storage|. Does not take ownership of |
| 80 // |load_rules_delegate|. | 80 // |load_rules_delegate|. |
| 81 AddressValidatorImpl(scoped_ptr<Downloader> downloader, | 81 AddressValidatorImpl(scoped_ptr<Downloader> downloader, |
| 82 scoped_ptr<Storage> storage, | 82 Storage* storage, |
| 83 LoadRulesDelegate* load_rules_delegate) | 83 LoadRulesDelegate* load_rules_delegate) |
| 84 : aggregator_(scoped_ptr<Retriever>(new Retriever( | 84 : aggregator_(scoped_ptr<Retriever>( |
| 85 VALIDATION_DATA_URL, | 85 new Retriever(VALIDATION_DATA_URL, downloader.Pass(), storage))), |
| 86 downloader.Pass(), | |
| 87 storage.Pass()))), | |
| 88 load_rules_delegate_(load_rules_delegate), | 86 load_rules_delegate_(load_rules_delegate), |
| 89 loading_rules_(), | 87 loading_rules_(), |
| 90 rules_() {} | 88 rules_() {} |
| 91 | 89 |
| 92 virtual ~AddressValidatorImpl() { | 90 virtual ~AddressValidatorImpl() { |
| 93 STLDeleteValues(&rules_); | 91 STLDeleteValues(&rules_); |
| 94 } | 92 } |
| 95 | 93 |
| 96 // AddressValidator implementation. | 94 // AddressValidator implementation. |
| 97 virtual void LoadRules(const std::string& country_code) { | 95 virtual void LoadRules(const std::string& country_code) { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 176 | 174 |
| 177 // Validate sub-region specific postal code format. A sub-region specifies | 175 // Validate sub-region specific postal code format. A sub-region specifies |
| 178 // the regular expression for a prefix of the postal code. | 176 // the regular expression for a prefix of the postal code. |
| 179 int match_position = -1; | 177 int match_position = -1; |
| 180 if (ruleset->field() > COUNTRY && | 178 if (ruleset->field() > COUNTRY && |
| 181 !address.postal_code.empty() && | 179 !address.postal_code.empty() && |
| 182 !rule.GetPostalCodeFormat().empty() && | 180 !rule.GetPostalCodeFormat().empty() && |
| 183 FilterAllows(filter, | 181 FilterAllows(filter, |
| 184 POSTAL_CODE, | 182 POSTAL_CODE, |
| 185 AddressProblem::MISMATCHING_VALUE) && | 183 AddressProblem::MISMATCHING_VALUE) && |
| 186 (!RE2::PartialMatch(address.postal_code, | 184 !RE2::FullMatch(address.postal_code, |
| 187 rule.GetPostalCodeFormat(), | 185 "^(" + rule.GetPostalCodeFormat() + ").*")) { |
|
Evan Stade
2014/01/27 23:11:15
this should be a separate cl
Dan Beam
2014/01/28 02:22:36
Done.
| |
| 188 &match_position) || | |
| 189 match_position != 0)) { | |
| 190 problems->push_back(AddressProblem( | 186 problems->push_back(AddressProblem( |
| 191 POSTAL_CODE, | 187 POSTAL_CODE, |
| 192 AddressProblem::MISMATCHING_VALUE, | 188 AddressProblem::MISMATCHING_VALUE, |
| 193 country_rule.GetInvalidPostalCodeMessageId())); | 189 country_rule.GetInvalidPostalCodeMessageId())); |
| 194 } | 190 } |
| 195 | 191 |
| 196 ruleset = ruleset->GetSubRegionRuleset(sub_field); | 192 ruleset = ruleset->GetSubRegionRuleset(sub_field); |
| 197 } | 193 } |
| 198 | 194 |
| 199 return SUCCESS; | 195 return SUCCESS; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 233 DISALLOW_COPY_AND_ASSIGN(AddressValidatorImpl); | 229 DISALLOW_COPY_AND_ASSIGN(AddressValidatorImpl); |
| 234 }; | 230 }; |
| 235 | 231 |
| 236 } // namespace | 232 } // namespace |
| 237 | 233 |
| 238 AddressValidator::~AddressValidator() {} | 234 AddressValidator::~AddressValidator() {} |
| 239 | 235 |
| 240 // static | 236 // static |
| 241 scoped_ptr<AddressValidator> AddressValidator::Build( | 237 scoped_ptr<AddressValidator> AddressValidator::Build( |
| 242 scoped_ptr<Downloader> downloader, | 238 scoped_ptr<Downloader> downloader, |
| 243 scoped_ptr<Storage> storage, | 239 Storage* storage, |
| 244 LoadRulesDelegate* load_rules_delegate) { | 240 LoadRulesDelegate* load_rules_delegate) { |
| 245 return scoped_ptr<AddressValidator>(new AddressValidatorImpl( | 241 return scoped_ptr<AddressValidator>(new AddressValidatorImpl( |
| 246 downloader.Pass(), storage.Pass(), load_rules_delegate)); | 242 downloader.Pass(), storage, load_rules_delegate)); |
| 247 } | 243 } |
| 248 | 244 |
| 249 } // namespace addressinput | 245 } // namespace addressinput |
| 250 } // namespace i18n | 246 } // namespace i18n |
| OLD | NEW |