diff options
author | ramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-10 07:43:58 +0000 |
---|---|---|
committer | ramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-10 07:43:58 +0000 |
commit | 9950d30500c78e006e75366031d4a96dc7184a13 (patch) | |
tree | 28ee8e1a266496889c28afa21b8461c8773370a6 /components | |
parent | 6e1363d1ebffd96b878531d82b6ccc671b6bc719 (diff) | |
download | chromium_src-9950d30500c78e006e75366031d4a96dc7184a13.zip chromium_src-9950d30500c78e006e75366031d4a96dc7184a13.tar.gz chromium_src-9950d30500c78e006e75366031d4a96dc7184a13.tar.bz2 |
Autofill:requestAutocomplet: Take2 on making AutofillDialogController to return ADDRESS_BILLING_* autofill types
Per Ilya, this probably also handles the case of rAc dialog showing billing section when only shipping is asked.
BUG=228912
Review URL: https://chromiumcodereview.appspot.com/14734006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199414 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components')
-rw-r--r-- | components/autofill/browser/autofill_type.cc | 30 | ||||
-rw-r--r-- | components/autofill/browser/autofill_type.h | 5 | ||||
-rw-r--r-- | components/autofill/browser/form_structure.cc | 8 | ||||
-rw-r--r-- | components/autofill/browser/wallet/wallet_address.cc | 2 |
4 files changed, 43 insertions, 2 deletions
diff --git a/components/autofill/browser/autofill_type.cc b/components/autofill/browser/autofill_type.cc index c0d2f64..43f6450 100644 --- a/components/autofill/browser/autofill_type.cc +++ b/components/autofill/browser/autofill_type.cc @@ -124,6 +124,36 @@ AutofillFieldType AutofillType::GetEquivalentFieldType( } // static +AutofillFieldType AutofillType::GetEquivalentBillingFieldType( + AutofillFieldType field_type) { + switch (field_type) { + case ADDRESS_HOME_LINE1: + return ADDRESS_BILLING_LINE1; + + case ADDRESS_HOME_LINE2: + return ADDRESS_BILLING_LINE2; + + case ADDRESS_HOME_APT_NUM: + return ADDRESS_BILLING_APT_NUM; + + case ADDRESS_HOME_CITY: + return ADDRESS_BILLING_CITY; + + case ADDRESS_HOME_STATE: + return ADDRESS_BILLING_STATE; + + case ADDRESS_HOME_ZIP: + return ADDRESS_BILLING_ZIP; + + case ADDRESS_HOME_COUNTRY: + return ADDRESS_BILLING_COUNTRY; + + default: + return field_type; + } +} + +// static std::string AutofillType::FieldTypeToString(AutofillFieldType type) { switch (type) { case NO_SERVER_DATA: diff --git a/components/autofill/browser/autofill_type.h b/components/autofill/browser/autofill_type.h index 2ae0c6c..f235175 100644 --- a/components/autofill/browser/autofill_type.h +++ b/components/autofill/browser/autofill_type.h @@ -41,6 +41,11 @@ class AutofillType { // the returned field type as the first parameter). static AutofillFieldType GetEquivalentFieldType(AutofillFieldType field_type); + // Maps |field_type| to a field type from ADDRESS_BILLING FieldTypeGroup if + // field type is an Address type. + static AutofillFieldType GetEquivalentBillingFieldType( + AutofillFieldType field_type); + // Utilities for serializing and deserializing an |AutofillFieldType|. static std::string FieldTypeToString(AutofillFieldType field_type); static AutofillFieldType StringToFieldType(const std::string& str); diff --git a/components/autofill/browser/form_structure.cc b/components/autofill/browser/form_structure.cc index 995054c..cec92b0 100644 --- a/components/autofill/browser/form_structure.cc +++ b/components/autofill/browser/form_structure.cc @@ -56,6 +56,8 @@ const char kXMLElementFieldAssignments[] = "fieldassignments"; const char kXMLElementField[] = "field"; const char kXMLElementFields[] = "fields"; const char kXMLElementForm[] = "form"; +const char kBillingSection[] = "billing"; +const char kShippingSection[] = "shipping"; // Helper for |EncodeUploadRequest()| that creates a bit field corresponding to // |available_field_types| and returns the hex representation as a string. @@ -1114,7 +1116,11 @@ void FormStructure::ParseFieldTypesFromAutocompleteAttributes( DCHECK_EQ(kDefaultSection, field->section()); std::string section = field->section(); if (!tokens.empty() && - (tokens.back() == "shipping" || tokens.back() == "billing")) { + (tokens.back() == kShippingSection || + tokens.back() == kBillingSection)) { + // Set Autofill field type to billing if section is billing. + if (tokens.back() == kBillingSection) + field_type = AutofillType::GetEquivalentBillingFieldType(field_type); section = "-" + tokens.back(); tokens.pop_back(); } diff --git a/components/autofill/browser/wallet/wallet_address.cc b/components/autofill/browser/wallet/wallet_address.cc index 196b078..d15c7ac 100644 --- a/components/autofill/browser/wallet/wallet_address.cc +++ b/components/autofill/browser/wallet/wallet_address.cc @@ -236,7 +236,7 @@ string16 Address::DisplayNameDetail() const { string16 Address::GetInfo(AutofillFieldType type, const std::string& app_locale) const { - switch (type) { + switch (AutofillType::GetEquivalentFieldType(type)) { case NAME_FULL: return recipient_name(); |