Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java |
index fbadb25bc70471b8b5dda92911d99d2116fce09d..7d5af884373f3304046fc1af192ffe005d4a2c03 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java |
@@ -11,6 +11,7 @@ import android.view.View.OnClickListener; |
import android.widget.LinearLayout; |
import org.chromium.base.annotations.CalledByNative; |
+import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.infobar.translate.TranslateMenu; |
import org.chromium.chrome.browser.infobar.translate.TranslateMenuHelper; |
@@ -36,6 +37,41 @@ class TranslateCompactInfoBar extends InfoBar |
private long mNativeTranslateInfoBarPtr; |
private TranslateTabLayout mTabLayout; |
+ private static final String INFOBAR_HISTOGRAM_TRANSLATE_LANGUAGE = |
+ "Translate.Compact.Infobar.TranslateLanguage"; |
+ private static final String INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE = |
+ "Translate.Compact.Infobar.MoreLanguagesTranslateLang"; |
+ private static final String INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE = |
+ "Translate.Compact.Infobar.PageNotInLang"; |
+ private static final String INFOBAR_HISTOGRAM_ALWAYS_TRANSLATE_LANGUAGE = |
+ "Translate.Compact.Infobar.AlwaysTranslateLang"; |
+ private static final String INFOBAR_HISTOGRAM_NEVER_TRANSLATE_LANGUAGE = |
+ "Translate.Compact.Infobar.NeverTranslateLang"; |
+ private static final String INFOBAR_HISTOGRAM = "Translate.Compact.Infobar.Event"; |
+ |
+ /** |
+ * This is used to back a UMA histogram, so it should be treated as |
+ * append-only. The values should not be changed or reused, and |
+ * INFOBAR_HISTOGRAM_BOUNDARY should be the last. |
+ */ |
+ private static final Integer INFOBAR_IMPRESSION = 0; |
+ private static final Integer INFOBAR_TRANSLATE = 1; |
+ private static final Integer INFOBAR_DECLINE = 2; |
+ private static final Integer INFOBAR_OPTIONS = 3; |
+ private static final Integer INFOBAR_MORE_LANGUAGES = 4; |
+ private static final Integer INFOBAR_MORE_LANGUAGES_TRANSLATE = 5; |
+ private static final Integer INFOBAR_PAGE_NOT_IN = 6; |
+ private static final Integer INFOBAR_ALWAYS_TRANSLATE = 7; |
+ private static final Integer INFOBAR_NEVER_TRANSLATE = 8; |
+ private static final Integer INFOBAR_NEVER_TRANSLATE_SITE = 9; |
+ private static final Integer INFOBAR_SCROLL_HIDE = 10; |
+ private static final Integer INFOBAR_SCROLL_SHOW = 11; |
+ private static final Integer INFOBAR_REVERT = 12; |
+ private static final Integer INFOBAR_SNACKBAR_CANCEL_ALWAYS = 13; |
+ private static final Integer INFOBAR_SNACKBAR_CANCEL_NEVER_SITE = 14; |
+ private static final Integer INFOBAR_SNACKBAR_CANCEL_NEVER = 15; |
+ private static final Integer INFOBAR_HISTOGRAM_BOUNDARY = 16; |
+ |
// Need 2 instances of TranslateMenuHelper to prevent a race condition bug which happens when |
// showing language menu after dismissing overflow menu. |
private TranslateMenuHelper mOverflowMenuHelper; |
@@ -58,8 +94,17 @@ class TranslateCompactInfoBar extends InfoBar |
@Override |
public void onAction(Object actionData) { |
- // TODO(ramyasharma): Add logging metric to track cancel actions. |
- // Do nothing. |
+ switch (mMenuItemId) { |
+ case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE: |
+ recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_ALWAYS); |
+ return; |
+ case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE: |
+ recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_NEVER); |
+ return; |
+ case TranslateMenu.ID_OVERFLOW_NEVER_SITE: |
+ recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_NEVER_SITE); |
+ return; |
+ } |
} |
}; |
@@ -67,6 +112,7 @@ class TranslateCompactInfoBar extends InfoBar |
private static InfoBar create(int initialStep, String sourceLanguageCode, |
String targetLanguageCode, boolean alwaysTranslate, boolean triggeredFromMenu, |
String[] languages, String[] codes) { |
+ recordInfobarAction(INFOBAR_IMPRESSION); |
return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targetLanguageCode, |
alwaysTranslate, triggeredFromMenu, languages, codes); |
} |
@@ -106,6 +152,7 @@ class TranslateCompactInfoBar extends InfoBar |
mMenuButton.setOnClickListener(new OnClickListener() { |
@Override |
public void onClick(View v) { |
+ recordInfobarAction(INFOBAR_OPTIONS); |
initMenuHelper(TranslateMenu.MENU_OVERFLOW); |
mOverflowMenuHelper.show(TranslateMenu.MENU_OVERFLOW); |
} |
@@ -175,9 +222,13 @@ class TranslateCompactInfoBar extends InfoBar |
public void onTabSelected(TabLayout.Tab tab) { |
switch (tab.getPosition()) { |
case SOURCE_TAB_INDEX: |
+ recordInfobarAction(INFOBAR_REVERT); |
onButtonClicked(ActionType.TRANSLATE_SHOW_ORIGINAL); |
return; |
case TARGET_TAB_INDEX: |
+ recordInfobarAction(INFOBAR_TRANSLATE); |
+ RecordHistogram.recordSparseSlowlyHistogram( |
+ INFOBAR_HISTOGRAM_TRANSLATE_LANGUAGE, mOptions.targetLanguage.hashCode()); |
startTranslating(TARGET_TAB_INDEX); |
return; |
default: |
@@ -195,10 +246,15 @@ class TranslateCompactInfoBar extends InfoBar |
public void onOverflowMenuItemClicked(int itemId) { |
switch (itemId) { |
case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE: |
+ recordInfobarAction(INFOBAR_MORE_LANGUAGES); |
initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE); |
mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE); |
return; |
case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE: |
+ recordInfobarAction(INFOBAR_ALWAYS_TRANSLATE); |
+ RecordHistogram.recordSparseSlowlyHistogram( |
+ INFOBAR_HISTOGRAM_ALWAYS_TRANSLATE_LANGUAGE, |
+ mOptions.sourceLanguageCode().hashCode()); |
// Only show snackbar when "Always Translate" is enabled. |
if (!mOptions.alwaysTranslateLanguageState()) { |
createAndShowSnackbar( |
@@ -210,17 +266,23 @@ class TranslateCompactInfoBar extends InfoBar |
} |
return; |
case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE: |
+ recordInfobarAction(INFOBAR_NEVER_TRANSLATE); |
+ RecordHistogram.recordSparseSlowlyHistogram( |
+ INFOBAR_HISTOGRAM_NEVER_TRANSLATE_LANGUAGE, |
+ mOptions.sourceLanguageCode().hashCode()); |
createAndShowSnackbar( |
getContext().getString(R.string.translate_snackbar_language_never, |
mOptions.sourceLanguageName()), |
Snackbar.UMA_TRANSLATE_NEVER, itemId); |
return; |
case TranslateMenu.ID_OVERFLOW_NEVER_SITE: |
+ recordInfobarAction(INFOBAR_NEVER_TRANSLATE_SITE); |
createAndShowSnackbar( |
getContext().getString(R.string.translate_snackbar_site_never), |
Snackbar.UMA_TRANSLATE_NEVER_SITE, itemId); |
return; |
case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE: |
+ recordInfobarAction(INFOBAR_PAGE_NOT_IN); |
initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE); |
mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE); |
return; |
@@ -233,6 +295,8 @@ class TranslateCompactInfoBar extends InfoBar |
public void onTargetMenuItemClicked(String code) { |
// Reset target code in both UI and native. |
if (mOptions.setTargetLanguage(code)) { |
+ RecordHistogram.recordSparseSlowlyHistogram(INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE, |
+ mOptions.targetLanguageCode().hashCode()); |
nativeApplyStringTranslateOption( |
mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, code); |
// Adjust UI. |
@@ -245,6 +309,8 @@ class TranslateCompactInfoBar extends InfoBar |
public void onSourceMenuItemClicked(String code) { |
// Reset source code in both UI and native. |
if (mOptions.setSourceLanguage(code)) { |
+ RecordHistogram.recordSparseSlowlyHistogram(INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE, |
+ mOptions.sourceLanguageCode().hashCode()); |
nativeApplyStringTranslateOption( |
mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, code); |
// Adjust UI. |
@@ -286,6 +352,11 @@ class TranslateCompactInfoBar extends InfoBar |
} |
} |
+ private void recordInfobarAction(int action) { |
Leo
2017/05/11 00:58:50
static
ramyasharma
2017/05/11 09:27:42
Done.
|
+ RecordHistogram.recordEnumeratedHistogram( |
+ INFOBAR_HISTOGRAM, action, INFOBAR_HISTOGRAM_BOUNDARY); |
+ } |
+ |
private native void nativeApplyStringTranslateOption( |
long nativeTranslateCompactInfoBar, int option, String value); |
private native void nativeApplyBoolTranslateOption( |