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..57ef7c74aacbd7e2bcfffd499dc0dbfbcc0676c3 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 = 1, |
+ |
+ // 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); |
+} |
+ |
+} // namespace |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
+ |
namespace autofill { |
AutofillExternalDelegate::AutofillExternalDelegate(AutofillManager* manager, |
@@ -98,10 +124,12 @@ 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 |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
if (values.empty()) { |
// No suggestions, any popup currently showing is obsolete. |
@@ -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 |
@@ -200,7 +230,7 @@ void AutofillExternalDelegate::DidAcceptSuggestion(const base::string16& value, |
delay); |
#else |
NOTREACHED(); |
-#endif |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
} else { |
FillAutofillFormData(identifier, false); |
} |
@@ -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()); |
@@ -365,6 +395,6 @@ void AutofillExternalDelegate::InsertDataListValues( |
void AutofillExternalDelegate::PingRenderer() { |
driver_->PingRenderer(); |
} |
-#endif |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
} // namespace autofill |