Chromium Code Reviews| Index: third_party/libaddressinput/chromium/chrome_address_validator.h |
| diff --git a/third_party/libaddressinput/chromium/preload_address_validator.h b/third_party/libaddressinput/chromium/chrome_address_validator.h |
| similarity index 62% |
| rename from third_party/libaddressinput/chromium/preload_address_validator.h |
| rename to third_party/libaddressinput/chromium/chrome_address_validator.h |
| index 8b22040b912a95e5bbb60569bb6f160855d0a039..2528563ee820484087e305dd91cee742acdeb240 100644 |
| --- a/third_party/libaddressinput/chromium/preload_address_validator.h |
| +++ b/third_party/libaddressinput/chromium/chrome_address_validator.h |
| @@ -2,8 +2,8 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_PRELOAD_ADDRESS_VALIDATOR_H_ |
| -#define THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_PRELOAD_ADDRESS_VALIDATOR_H_ |
| +#ifndef THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_CHROME_ADDRESS_VALIDATOR_H_ |
| +#define THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_CHROME_ADDRESS_VALIDATOR_H_ |
| #include <cstddef> |
| #include <string> |
| @@ -14,28 +14,33 @@ |
| #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_field.h" |
| #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_validator.h" |
| #include "third_party/libaddressinput/src/cpp/include/libaddressinput/callback.h" |
| +#include "third_party/libaddressinput/src/cpp/include/libaddressinput/preload_supplier.h" |
| namespace i18n { |
| namespace addressinput { |
| - |
| +class AddressNormalizer; |
| class Downloader; |
| -class PreloadSupplier; |
| class Storage; |
| -class Synonyms; |
| struct AddressData; |
| - |
| -} // namespace addressinput |
| -} // namespace i18n |
| +} |
| +} |
| namespace autofill { |
| -class Suggestions; |
| - |
| -// Interface to the libaddressinput AddressValidator for Chromium Autofill. |
| -class PreloadAddressValidator { |
| +class InputSuggester; |
| +class LoadRulesListener; |
|
Evan Stade
2014/07/07 21:59:07
you can define LoadRulesListener in this file
please use gerrit instead
2014/07/08 22:47:58
Done.
|
| + |
| +// Interface to the libaddressinput AddressValidator for Chromium Autofill. The |
| +// class is named AddressValidator to simplify switching between libaddressinput |
| +// and this version. |
| +// |
| +// It's not possible to name this file address_validator.h because some |
| +// compilers do not handle multiple files with the same name (although in |
| +// different directories) gracefully. This class is a shim between upstream |
| +// libaddressinput API and the API that Chrome expects, hence the file name |
| +// chrome_address_validator.h. |
| +class AddressValidator { |
| public: |
| - typedef ::i18n::addressinput::Callback<std::string, int> Callback; |
| - |
| // The status of address validation. |
| enum Status { |
| // Address validation completed successfully. Check |problems| to see if any |
| @@ -51,15 +56,15 @@ class PreloadAddressValidator { |
| }; |
| // Takes ownership of |downloader| and |storage|. |
| - PreloadAddressValidator( |
| - const std::string& validation_data_url, |
| - scoped_ptr< ::i18n::addressinput::Downloader> downloader, |
| - scoped_ptr< ::i18n::addressinput::Storage> storage); |
| + AddressValidator(const std::string& validation_data_url, |
| + scoped_ptr< ::i18n::addressinput::Downloader> downloader, |
| + scoped_ptr< ::i18n::addressinput::Storage> storage, |
| + LoadRulesListener* load_rules_listener); |
| - virtual ~PreloadAddressValidator(); |
| + virtual ~AddressValidator(); |
| // Loads the generic validation rules for |region_code| and specific rules |
| - // for the regions's administrative areas, localities, and dependent |
| + // for the region's administrative areas, localities, and dependent |
| // localities. A typical data size is 10KB. The largest is 250KB. If a region |
| // has language-specific validation rules, then these are also loaded. |
| // |
| @@ -67,9 +72,8 @@ class PreloadAddressValidator { |
| // https://i18napis.appspot.com/ssl-aggregate-address/data/US |
| // |
| // If the rules are already in progress of being loaded, it does nothing. |
| - // Calls |loaded| when the loading has finished. |
| - virtual void LoadRules(const std::string& region_code, |
| - const Callback& loaded); |
| + // Invokes |load_rules_listener| when the loading has finished. |
| + virtual void LoadRules(const std::string& region_code); |
| // Validates the |address| and populates |problems| with the validation |
| // problems, filtered according to the |filter| parameter. |
| @@ -77,7 +81,7 @@ class PreloadAddressValidator { |
| // If the |filter| is empty, then all discovered validation problems are |
| // returned. If the |filter| contains problem elements, then only the problems |
| // in the |filter| may be returned. |
| - virtual Status Validate( |
| + virtual Status ValidateAddress( |
| const ::i18n::addressinput::AddressData& address, |
| const ::i18n::addressinput::FieldProblemMap* filter, |
| ::i18n::addressinput::FieldProblemMap* problems) const; |
| @@ -119,23 +123,48 @@ class PreloadAddressValidator { |
| ::i18n::addressinput::AddressData* address) const; |
| private: |
| + friend class MockAddressValidator; |
| + |
| + // Constructor used only for MockAddressValidator. |
| + AddressValidator(); |
| + |
| + // Verifies that |validator_| succeeded. Invoked by |validated_| callback. |
| void Validated(bool success, |
| const ::i18n::addressinput::AddressData&, |
| const ::i18n::addressinput::FieldProblemMap&); |
| + // Invokes the |load_rules_listener_|, if it's not NULL. Called by |
| + // |rules_loaded_| callback. |
| + void RulesLoaded(bool success, const std::string& country_code, int); |
| + |
| + // Loads and stores aggregate rules at COUNTRY level. |
| const scoped_ptr< ::i18n::addressinput::PreloadSupplier> supplier_; |
| - const scoped_ptr<Suggestions> suggestions_; |
| - const scoped_ptr< ::i18n::addressinput::Synonyms> synonyms_; |
| + |
| + // Suggests addresses based on user input. |
| + const scoped_ptr<InputSuggester> input_suggester_; |
| + |
| + // Normalizes addresses into a canonical form. |
| + const scoped_ptr< ::i18n::addressinput::AddressNormalizer> normalizer_; |
| + |
| + // Validates addresses. |
| const scoped_ptr<const ::i18n::addressinput::AddressValidator> validator_; |
| + |
| + // The callback that |validator_| invokes when it finished validating an |
| + // address. |
| const scoped_ptr<const ::i18n::addressinput::AddressValidator::Callback> |
| validated_; |
| - friend class MockAddressValidator; |
| - PreloadAddressValidator(); |
| + // The callback that |supplier_| invokes when it finished loading rules. |
| + const scoped_ptr<const ::i18n::addressinput::PreloadSupplier::Callback> |
| + rules_loaded_; |
| + |
| + // Not owned delegate to invoke when |suppler_| finished loading rules. Can be |
| + // NULL. |
| + LoadRulesListener* const load_rules_listener_; |
| - DISALLOW_COPY_AND_ASSIGN(PreloadAddressValidator); |
| + DISALLOW_COPY_AND_ASSIGN(AddressValidator); |
| }; |
| } // namespace autofill |
| -#endif // THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_PRELOAD_ADDRESS_VALIDATOR_H_ |
| +#endif // THIRD_PARTY_LIBADDRESSINPUT_CHROMIUM_CHROME_ADDRESS_VALIDATOR_H_ |