diff options
author | dhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-09 16:28:36 +0000 |
---|---|---|
committer | dhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-09 16:28:36 +0000 |
commit | 2222b4a947305aaa5bc724e55dbb3ce2794954ea (patch) | |
tree | 9f3cac97e8fdd9856860038d166da16ba412045c /chrome/browser | |
parent | 1bf14bcd62453cb53e21097a61fcefb0c5cc213b (diff) | |
download | chromium_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.mm | 75 |
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 |