summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autofill
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-20 06:39:27 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-20 06:39:27 +0000
commitcb0d6fbebbad064a6fdc51e8c22ed24aff623878 (patch)
treefc2c1790ebc981293b400f5bb60a59c9f123e57d /chrome/browser/autofill
parentf3e73f6708b2be38cdd17dd0127e01d449ae96aa (diff)
downloadchromium_src-cb0d6fbebbad064a6fdc51e8c22ed24aff623878.zip
chromium_src-cb0d6fbebbad064a6fdc51e8c22ed24aff623878.tar.gz
chromium_src-cb0d6fbebbad064a6fdc51e8c22ed24aff623878.tar.bz2
Avoid crashing if the AddressBook is broken.
BUG=129022 TEST=watch crash server Review URL: https://chromiumcodereview.appspot.com/11175020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163162 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill')
-rw-r--r--chrome/browser/autofill/personal_data_manager_mac.mm9
1 files changed, 8 insertions, 1 deletions
diff --git a/chrome/browser/autofill/personal_data_manager_mac.mm b/chrome/browser/autofill/personal_data_manager_mac.mm
index b0b12f5a..8a15e99 100644
--- a/chrome/browser/autofill/personal_data_manager_mac.mm
+++ b/chrome/browser/autofill/personal_data_manager_mac.mm
@@ -11,6 +11,7 @@
#include "base/format_macros.h"
#include "base/guid.h"
#include "base/logging.h"
+#import "base/mac/scoped_nsexception_enabler.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "base/stringprintf.h"
@@ -68,7 +69,13 @@ class AuxiliaryProfilesImpl {
void AuxiliaryProfilesImpl::GetAddressBookMeCard() {
profiles_.clear();
- ABAddressBook* addressBook = [ABAddressBook sharedAddressBook];
+ // +[ABAddressBook sharedAddressBook] throws an exception internally in
+ // circumstances that aren't clear. The exceptions are only observed in crash
+ // reports, so it is unknown whether they would be caught by AppKit and nil
+ // returned, or if they would take down the app. In either case, avoid
+ // crashing. http://crbug.com/129022
+ ABAddressBook* addressBook = base::mac::PerformSelectorIgnoringExceptions(
+ NSClassFromString(@"ABAddressBook"), @selector(sharedAddressBook));
ABPerson* me = [addressBook me];
if (!me)
return;