Chromium Code Reviews| Index: components/autofill/core/browser/autofill_external_delegate.cc |
| diff --git a/components/autofill/core/browser/autofill_external_delegate.cc b/components/autofill/core/browser/autofill_external_delegate.cc |
| index b8e4a066ec1ac94a3cf072cae6b38c8297e964e1..c39eb3b7e9fbd272e291f46474d8d7e317cacb3e 100644 |
| --- a/components/autofill/core/browser/autofill_external_delegate.cc |
| +++ b/components/autofill/core/browser/autofill_external_delegate.cc |
| @@ -5,6 +5,7 @@ |
| #include "components/autofill/core/browser/autofill_external_delegate.h" |
| #include "base/message_loop/message_loop.h" |
| +#include "base/metrics/histogram.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "components/autofill/core/browser/autocomplete_history_manager.h" |
| #include "components/autofill/core/browser/autofill_driver.h" |
| @@ -13,6 +14,31 @@ |
| #include "grit/components_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| +#if defined(OS_MACOSX) && !defined(OS_IOS) |
| +namespace { |
| + |
| +enum AccessAddressBookEventType { |
| + // An Autofill entry was shown that prompts the user to give Chrome access to |
| + // the user's Address Book. |
| + SHOWED_ACCESS_ADDRESS_BOOK_ENTRY = 0, |
| + |
| + // The user selected the Autofill entry which prompts Chrome to access the |
| + // user's Address Book. |
| + SELECTED_ACCESS_ADDRESS_BOOK_ENTRY, |
| + |
| + // Always keep this at the end. |
| + ACCESS_ADDRESS_BOOK_ENTRY_MAX, |
| +}; |
| + |
| +// Emits an entry for the histogram. |
| +void EmitHistogram(AccessAddressBookEventType type) { |
| + UMA_HISTOGRAM_ENUMERATION( |
| + "Autofill.MacAddressBook", type, ACCESS_ADDRESS_BOOK_ENTRY_MAX); |
|
Ilya Sherman
2014/06/03 23:48:59
Please add this histogram to histograms.xml.
erikchen
2014/06/04 01:51:25
Done.
|
| +} |
| + |
| +} // namespace |
| +#endif |
| + |
| namespace autofill { |
| AutofillExternalDelegate::AutofillExternalDelegate(AutofillManager* manager, |
| @@ -98,8 +124,10 @@ void AutofillExternalDelegate::OnSuggestionsReturned( |
| values.push_back( |
| l10n_util::GetStringUTF16(IDS_AUTOFILL_ACCESS_MAC_CONTACTS)); |
| labels.push_back(base::string16()); |
| - icons.push_back(base::string16()); |
| + icons.push_back(base::ASCIIToUTF16("macContactsIcon")); |
| ids.push_back(POPUP_ITEM_ID_MAC_ACCESS_CONTACTS); |
| + |
| + EmitHistogram(SHOWED_ACCESS_ADDRESS_BOOK_ENTRY); |
| } |
| #endif |
| @@ -171,6 +199,8 @@ void AutofillExternalDelegate::DidAcceptSuggestion(const base::string16& value, |
| driver_->RendererShouldFillFieldWithValue(value); |
| } else if (identifier == POPUP_ITEM_ID_MAC_ACCESS_CONTACTS) { |
| #if defined(OS_MACOSX) && !defined(OS_IOS) |
| + EmitHistogram(SELECTED_ACCESS_ADDRESS_BOOK_ENTRY); |
| + |
| // User wants to give Chrome access to user's address book. |
| manager_->AccessAddressBook(); |
| @@ -184,7 +214,7 @@ void AutofillExternalDelegate::DidAcceptSuggestion(const base::string16& value, |
| // NSRunLoop which will cause all windows to lose focus. When the NSEvent |
| // is processed, it will be sent to the renderer which will cause the text |
| // field to lose focus. This returns an IPC to Chrome which will dismiss |
| - // the autofill popup. We post a task which we expect to run after the |
| + // the Autofill popup. We post a task which we expect to run after the |
| // NSEvent has been processed by the NSRunLoop. It pings the renderer, |
| // which returns an IPC acknowledging the ping. At that time, redisplay |
| // the popup. FIFO processing of IPCs ensures that all side effects of the |
| @@ -231,7 +261,7 @@ void AutofillExternalDelegate::Reset() { |
| } |
| void AutofillExternalDelegate::OnPingAck() { |
| - // Reissue the most recent query, which will reopen the autofill popup. |
| + // Reissue the most recent query, which will reopen the Autofill popup. |
| manager_->OnQueryFormFieldAutofill(query_id_, |
| query_form_, |
| query_field_, |
| @@ -272,7 +302,7 @@ void AutofillExternalDelegate::ApplyAutofillWarnings( |
| // suggestions to show, show a warning instead. Otherwise, clear out the |
| // list of suggestions. |
| if (!unique_ids->empty() && (*unique_ids)[0] > 0) { |
| - // If autofill is disabled and we had suggestions, show a warning instead. |
| + // If Autofill is disabled and we had suggestions, show a warning instead. |
| values->assign( |
| 1, l10n_util::GetStringUTF16(IDS_AUTOFILL_WARNING_FORM_DISABLED)); |
| labels->assign(1, base::string16()); |
| @@ -286,8 +316,8 @@ void AutofillExternalDelegate::ApplyAutofillWarnings( |
| } |
| } else if (unique_ids->size() > 1 && |
| (*unique_ids)[0] == POPUP_ITEM_ID_WARNING_MESSAGE) { |
| - // If we received a warning instead of suggestions from autofill but regular |
| - // suggestions from autocomplete, don't show the autofill warning. |
| + // If we received a warning instead of suggestions from Autofill but regular |
| + // suggestions from autocomplete, don't show the Autofill warning. |
| values->erase(values->begin()); |
| labels->erase(labels->begin()); |
| icons->erase(icons->begin()); |