summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authordhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-09 16:28:36 +0000
committerdhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-09 16:28:36 +0000
commit2222b4a947305aaa5bc724e55dbb3ce2794954ea (patch)
tree9f3cac97e8fdd9856860038d166da16ba412045c /chrome/browser
parent1bf14bcd62453cb53e21097a61fcefb0c5cc213b (diff)
downloadchromium_src-2222b4a947305aaa5bc724e55dbb3ce2794954ea.zip
chromium_src-2222b4a947305aaa5bc724e55dbb3ce2794954ea.tar.gz
chromium_src-2222b4a947305aaa5bc724e55dbb3ce2794954ea.tar.bz2
AutoFill DCHECK in AuxiliaryProfilesImpl::GetAddressBookAddresses
Fixes issue with Mac AddressBook "me" profiles where nil address returned was causing DCHECK. BUG=48629 TEST=Manual, create AddressBook "me" card address with empty address fields but valid country, relaunch debug version of Chrome. Review URL: http://codereview.chromium.org/2904007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51968 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/autofill/personal_data_manager_mac.mm75
1 files changed, 39 insertions, 36 deletions
diff --git a/chrome/browser/autofill/personal_data_manager_mac.mm b/chrome/browser/autofill/personal_data_manager_mac.mm
index 8387431..ff199af 100644
--- a/chrome/browser/autofill/personal_data_manager_mac.mm
+++ b/chrome/browser/autofill/personal_data_manager_mac.mm
@@ -125,44 +125,47 @@ void AuxiliaryProfilesImpl::GetAddressBookNames(
void AuxiliaryProfilesImpl::GetAddressBookAddresses(
NSDictionary* address,
AutoFillProfile* profile) {
- NSString* addressField;
- addressField = [address objectForKey:kABAddressStreetKey];
-
- // If there are newlines in the address, split into two lines.
- if ([addressField rangeOfCharacterFromSet:
- [NSCharacterSet newlineCharacterSet]].location != NSNotFound) {
- NSArray *chunks = [addressField componentsSeparatedByCharactersInSet:
- [NSCharacterSet newlineCharacterSet]];
- DCHECK([chunks count] > 1);
-
- NSString* separator = l10n_util::GetNSString(
- IDS_AUTOFILL_MAC_ADDRESS_LINE_SEPARATOR);
-
- NSString* addressField1 = [chunks objectAtIndex:0];
- NSString* addressField2 =
- [[chunks subarrayWithRange:NSMakeRange(1, [chunks count] - 1)]
- componentsJoinedByString:separator];
- profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE1),
- base::SysNSStringToUTF16(addressField1));
- profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE2),
- base::SysNSStringToUTF16(addressField2));
- } else {
- profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE1),
- base::SysNSStringToUTF16(addressField));
+ if (NSString* addressField = [address objectForKey:kABAddressStreetKey]) {
+ // If there are newlines in the address, split into two lines.
+ if ([addressField rangeOfCharacterFromSet:
+ [NSCharacterSet newlineCharacterSet]].location != NSNotFound) {
+ NSArray* chunks = [addressField componentsSeparatedByCharactersInSet:
+ [NSCharacterSet newlineCharacterSet]];
+ DCHECK([chunks count] > 1);
+
+ NSString* separator = l10n_util::GetNSString(
+ IDS_AUTOFILL_MAC_ADDRESS_LINE_SEPARATOR);
+
+ NSString* addressField1 = [chunks objectAtIndex:0];
+ NSString* addressField2 =
+ [[chunks subarrayWithRange:NSMakeRange(1, [chunks count] - 1)]
+ componentsJoinedByString:separator];
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE1),
+ base::SysNSStringToUTF16(addressField1));
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE2),
+ base::SysNSStringToUTF16(addressField2));
+ } else {
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_LINE1),
+ base::SysNSStringToUTF16(addressField));
+ }
}
- addressField = [address objectForKey:kABAddressCityKey];
- profile->SetInfo(AutoFillType(ADDRESS_HOME_CITY),
- base::SysNSStringToUTF16(addressField));
- addressField = [address objectForKey:kABAddressStateKey];
- profile->SetInfo(AutoFillType(ADDRESS_HOME_STATE),
- base::SysNSStringToUTF16(addressField));
- addressField = [address objectForKey:kABAddressZIPKey];
- profile->SetInfo(AutoFillType(ADDRESS_HOME_ZIP),
- base::SysNSStringToUTF16(addressField));
- addressField = [address objectForKey:kABAddressCountryKey];
- profile->SetInfo(AutoFillType(ADDRESS_HOME_COUNTRY),
- base::SysNSStringToUTF16(addressField));
+ if (NSString* city = [address objectForKey:kABAddressCityKey]) {
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_CITY),
+ base::SysNSStringToUTF16(city));
+ }
+ if (NSString* state = [address objectForKey:kABAddressStateKey]) {
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_STATE),
+ base::SysNSStringToUTF16(state));
+ }
+ if (NSString* zip = [address objectForKey:kABAddressZIPKey]) {
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_ZIP),
+ base::SysNSStringToUTF16(zip));
+ }
+ if (NSString* country = [address objectForKey:kABAddressCountryKey]) {
+ profile->SetInfo(AutoFillType(ADDRESS_HOME_COUNTRY),
+ base::SysNSStringToUTF16(country));
+ }
}
// Fills in email address matching current address label. Note that there may