Index: components/autofill/core/browser/autofill_manager.cc |
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc |
index 50ed127472e927b12890112e091a153ae308365a..370a8f02e4aeced484a49090925c117b1ca8e2c3 100644 |
--- a/components/autofill/core/browser/autofill_manager.cc |
+++ b/components/autofill/core/browser/autofill_manager.cc |
@@ -212,7 +212,7 @@ void AutofillManager::RegisterProfilePrefs( |
#endif // defined(OS_MACOSX) || defined(OS_ANDROID) |
#if defined(OS_MACOSX) |
registry->RegisterBooleanPref( |
- prefs::kAutofillAuxiliaryProfilesQueried, |
+ prefs::kAutofillMacAddressBookQueried, |
false, |
user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
#endif // defined(OS_MACOSX) |
@@ -224,7 +224,50 @@ void AutofillManager::RegisterProfilePrefs( |
prefs::kAutofillNegativeUploadRate, |
kAutofillNegativeUploadRateDefaultValue, |
user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+ |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+ registry->RegisterBooleanPref( |
+ prefs::kAutofillUseMacAddressBook, |
+ false, |
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
+} |
+ |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+void AutofillManager::MigrateUserPrefs(PrefService* prefs) { |
+ const PrefService::Preference* pref = |
+ prefs->FindPreference(prefs::kAutofillUseMacAddressBook); |
+ |
+ // If the pref is not its default value, then the migration has already been |
+ // performed. |
+ if (!pref->IsDefaultValue()) |
+ return; |
+ |
+ // Whether Chrome has already tried to access the user's Address Book. |
+ const PrefService::Preference* pref_accessed = |
+ prefs->FindPreference(prefs::kAutofillMacAddressBookQueried); |
+ // Whether the user wants to use the Address Book to populate Autofill. |
+ const PrefService::Preference* pref_enabled = |
+ prefs->FindPreference(prefs::kAutofillAuxiliaryProfilesEnabled); |
+ |
+ if (pref_accessed->IsDefaultValue() && pref_enabled->IsDefaultValue()) { |
+ // This is likely a new user. Reset the default value to prevent the |
+ // migration from happening again. |
+ prefs->SetBoolean(prefs::kAutofillUseMacAddressBook, |
+ prefs->GetBoolean(prefs::kAutofillUseMacAddressBook)); |
+ return; |
+ } |
+ |
+ bool accessed; |
+ bool enabled; |
+ bool success = pref_accessed->GetValue()->GetAsBoolean(&accessed); |
+ DCHECK(success); |
+ success = pref_enabled->GetValue()->GetAsBoolean(&enabled); |
+ DCHECK(success); |
+ |
+ prefs->SetBoolean(prefs::kAutofillUseMacAddressBook, accessed && enabled); |
} |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
void AutofillManager::SetExternalDelegate(AutofillExternalDelegate* delegate) { |
// TODO(jrg): consider passing delegate into the ctor. That won't |
@@ -238,6 +281,28 @@ void AutofillManager::ShowAutofillSettings() { |
client_->ShowAutofillSettings(); |
} |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+bool AutofillManager::ShouldShowAccessAddressBookSuggestion( |
+ const FormData& form, |
+ const FormFieldData& field) { |
+ if (!personal_data_) |
+ return false; |
+ FormStructure* form_structure = NULL; |
+ AutofillField* autofill_field = NULL; |
+ if (!GetCachedFormAndField(form, field, &form_structure, &autofill_field)) |
+ return false; |
+ |
+ return personal_data_->ShouldShowAccessAddressBookSuggestion( |
+ autofill_field->Type()); |
+} |
+ |
+bool AutofillManager::AccessAddressBook() { |
+ if (!personal_data_) |
+ return false; |
+ return personal_data_->AccessAddressBook(); |
+} |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
+ |
bool AutofillManager::OnFormSubmitted(const FormData& form, |
const TimeTicks& timestamp) { |
if (!IsValidFormData(form)) |