summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 07:43:58 +0000
committerramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 07:43:58 +0000
commit9950d30500c78e006e75366031d4a96dc7184a13 (patch)
tree28ee8e1a266496889c28afa21b8461c8773370a6 /components
parent6e1363d1ebffd96b878531d82b6ccc671b6bc719 (diff)
downloadchromium_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.cc30
-rw-r--r--components/autofill/browser/autofill_type.h5
-rw-r--r--components/autofill/browser/form_structure.cc8
-rw-r--r--components/autofill/browser/wallet/wallet_address.cc2
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();