Chromium Code Reviews| 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( |