Index: third_party/libaddressinput/chromium/cpp/src/address_data.cc |
diff --git a/third_party/libaddressinput/chromium/cpp/src/address_data.cc b/third_party/libaddressinput/chromium/cpp/src/address_data.cc |
index 08da6ca153507e543ff5af83d100f3008bc052ee..444db413b4f354a67c22cf9031fe418e6dcba59d 100644 |
--- a/third_party/libaddressinput/chromium/cpp/src/address_data.cc |
+++ b/third_party/libaddressinput/chromium/cpp/src/address_data.cc |
@@ -50,10 +50,12 @@ const std::string* GetMemberForField(const AddressData& address, |
return &address.organization; |
case RECIPIENT: |
return &address.recipient; |
- default: |
- assert(false); |
- return NULL; |
+ case STREET_ADDRESS: |
+ break; |
} |
+ |
+ assert(false); |
+ return NULL; |
} |
} // namespace |
@@ -117,5 +119,32 @@ void AddressData::SetFieldValue(AddressField field, const std::string& value) { |
} |
} |
+bool AddressData::HasAllRequiredFields() const { |
+ if (country_code.empty()) |
+ return false; |
+ |
+ Rule rule; |
+ rule.CopyFrom(Rule::GetDefault()); |
+ if (!rule.ParseSerializedRule( |
+ RegionDataConstants::GetRegionData(country_code))) { |
+ return false; |
+ } |
+ |
+ std::vector< ::i18n::addressinput::AddressField> required_fields = |
+ rule.GetRequired(); |
+ for (size_t i = 0; i < required_fields.size(); ++i) { |
+ if (required_fields[i] == STREET_ADDRESS && |
+ (address_lines.empty() || address_lines[0].empty())) { |
please use gerrit instead
2014/05/09 23:38:55
Please avoid hitting GetFieldValue(STREET_ADDRESS)
|
+ return false; |
+ } |
+ |
+ if (GetFieldValue(required_fields[i]).empty()) { |
+ return false; |
+ } |
+ } |
+ |
+ return true; |
+} |
+ |
} // namespace addressinput |
} // namespace i18n |