Log events in the Explicit Language Ask prompt to UMA

Bug: 891307
Change-Id: I9b3c2429dc9ebe96d3f06e904aaddfdb034c83f7
Reviewed-on: https://chromium-review.googlesource.com/c/1296809
Reviewed-by: Theresa <twellington@chromium.org>
Reviewed-by: Jesse Doherty <jwd@chromium.org>
Commit-Queue: anthonyvd <anthonyvd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#603219}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/language/LanguageAskPrompt.java b/chrome/android/java/src/org/chromium/chrome/browser/language/LanguageAskPrompt.java
index 2e99fb31..2b4d617 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/language/LanguageAskPrompt.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/language/LanguageAskPrompt.java
@@ -17,6 +17,7 @@
 import android.widget.TextView;
 
 import org.chromium.base.LocaleUtils;
+import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ChromeFeatureList;
@@ -40,6 +41,17 @@
  * once at browser startup when no other promo or modals are shown.
  */
 public class LanguageAskPrompt implements ModalDialogView.Controller {
+    // Enum values for the Translate.ExplicitLanguageAsk.Event histogram.
+    private static final int PROMPT_EVENT_SHOWN = 0;
+    private static final int PROMPT_EVENT_SAVED = 1;
+    private static final int PROMPT_EVENT_CANCELLED = 2;
+    private static final int PROMPT_EVENT_MAX = PROMPT_EVENT_CANCELLED;
+
+    private void recordPromptEvent(int event) {
+        RecordHistogram.recordEnumeratedHistogram(
+                "Translate.ExplicitLanguageAsk.Event", event, PROMPT_EVENT_MAX);
+    }
+
     private class SeparatorViewHolder extends ViewHolder {
         SeparatorViewHolder(View view) {
             super(view);
@@ -246,6 +258,8 @@
     public void show(ChromeActivity activity) {
         if (activity == null) return;
 
+        recordPromptEvent(PROMPT_EVENT_SHOWN);
+
         List<String> userAcceptLanguagesList =
                 PrefServiceBridge.getInstance().getUserLanguageCodes();
         mInitialLanguages = new HashSet<String>();
@@ -316,5 +330,11 @@
     }
 
     @Override
-    public void onDismiss(@DialogDismissalCause int dismissalCause) {}
+    public void onDismiss(@DialogDismissalCause int dismissalCause) {
+        if (dismissalCause == DialogDismissalCause.POSITIVE_BUTTON_CLICKED) {
+            recordPromptEvent(PROMPT_EVENT_SAVED);
+        } else {
+            recordPromptEvent(PROMPT_EVENT_CANCELLED);
+        }
+    }
 }
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index fc2a0de..04e2cd2e 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -49740,6 +49740,12 @@
   <int value="6" label="Translation error"/>
 </enum>
 
+<enum name="TranslateExplicitAskPromptEventType">
+  <int value="0" label="Shown"/>
+  <int value="1" label="Saved"/>
+  <int value="2" label="Cancelled"/>
+</enum>
+
 <enum name="TranslateInitiationStatus">
   <int value="0" label="Completely disabled by prefs"/>
   <int value="1" label="Completely disabled by switch"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 3146ec4..9acf8d6 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -111682,6 +111682,16 @@
   </summary>
 </histogram>
 
+<histogram name="Translate.ExplicitLanguageAsk.Event"
+    enum="TranslateExplicitAskPromptEventType">
+  <owner>yyushkina@google.com</owner>
+  <owner>anthonyvd@google.com</owner>
+  <summary>
+    The events (shown, saved, cancelled) happening in the Explicit Language Ask
+    prompt.
+  </summary>
+</histogram>
+
 <histogram name="Translate.ExplicitLanguageAsk.LanguageAdded"
     enum="CLD3LanguageCode">
   <owner>yyushkina@google.com</owner>