Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2534)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java

Issue 2873103003: Implements logging in the new compact translate UI. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 0389b7f0fbc1b7b468f98c37dd2d8af3314c876d..199ad2cba091ee96f33fe3bd5d3b560ae0c8ca49 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,44 @@ class TranslateCompactInfoBar extends InfoBar
private long mNativeTranslateInfoBarPtr;
private TranslateTabLayout mTabLayout;
+ private static final String INFOBAR_HISTOGRAM_TRANSLATE_LANGUAGE =
+ "Translate.CompactInfobar.Language.Translate";
+ private static final String INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE =
+ "Translate.CompactInfobar.Language.MoreLanguages";
+ private static final String INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE =
+ "Translate.CompactInfobar.Language.PageNotIn";
+ private static final String INFOBAR_HISTOGRAM_ALWAYS_TRANSLATE_LANGUAGE =
+ "Translate.CompactInfobar.Language.AlwaysTranslate";
+ private static final String INFOBAR_HISTOGRAM_NEVER_TRANSLATE_LANGUAGE =
+ "Translate.CompactInfobar.Language.NeverTranslate";
+ private static final String INFOBAR_HISTOGRAM = "Translate.CompactInfobar.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 int INFOBAR_IMPRESSION = 0;
+ private static final int INFOBAR_TRANSLATE = 1;
+ private static final int INFOBAR_DECLINE = 2;
+ private static final int INFOBAR_OPTIONS = 3;
+ private static final int INFOBAR_MORE_LANGUAGES = 4;
+ private static final int INFOBAR_MORE_LANGUAGES_TRANSLATE = 5;
+ private static final int INFOBAR_PAGE_NOT_IN = 6;
+ private static final int INFOBAR_ALWAYS_TRANSLATE = 7;
+ private static final int INFOBAR_NEVER_TRANSLATE = 8;
+ private static final int INFOBAR_NEVER_TRANSLATE_SITE = 9;
+ private static final int INFOBAR_SCROLL_HIDE = 10;
+ private static final int INFOBAR_SCROLL_SHOW = 11;
+ private static final int INFOBAR_REVERT = 12;
+ private static final int INFOBAR_SNACKBAR_ALWAYS_TRANSLATE_IMPRESSION = 13;
+ private static final int INFOBAR_SNACKBAR_NEVER_TRANSLATE_IMPRESSION = 14;
+ private static final int INFOBAR_SNACKBAR_NEVER_TRANSLATE_SITE_IMPRESSION = 15;
+ private static final int INFOBAR_SNACKBAR_CANCEL_ALWAYS = 16;
+ private static final int INFOBAR_SNACKBAR_CANCEL_NEVER_SITE = 17;
+ private static final int INFOBAR_SNACKBAR_CANCEL_NEVER = 18;
+ private static final int INFOBAR_HISTOGRAM_BOUNDARY = 19;
+
// 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,26 +97,40 @@ 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;
+ default:
+ assert false : "Unsupported Menu Item Id, when handling snackbar action";
+ return;
+ }
}
};
@CalledByNative
private static InfoBar create(int initialStep, String sourceLanguageCode,
String targetLanguageCode, boolean alwaysTranslate, boolean triggeredFromMenu,
- String[] languages, String[] codes) {
+ String[] languages, String[] languageCodes, int[] hashCodes) {
+ recordInfobarAction(INFOBAR_IMPRESSION);
return new TranslateCompactInfoBar(initialStep, sourceLanguageCode, targetLanguageCode,
- alwaysTranslate, triggeredFromMenu, languages, codes);
+ alwaysTranslate, triggeredFromMenu, languages, languageCodes, hashCodes);
}
TranslateCompactInfoBar(int initialStep, String sourceLanguageCode, String targetLanguageCode,
boolean alwaysTranslate, boolean triggeredFromMenu, String[] languages,
- String[] codes) {
+ String[] languageCodes, int[] hashCodes) {
super(R.drawable.infobar_translate_compact, null, null);
+
mInitialStep = initialStep;
- mOptions = TranslateOptions.create(sourceLanguageCode, targetLanguageCode, languages, codes,
- alwaysTranslate, triggeredFromMenu);
+ mOptions = TranslateOptions.create(sourceLanguageCode, targetLanguageCode, languages,
+ languageCodes, alwaysTranslate, triggeredFromMenu, hashCodes);
}
@Override
@@ -107,6 +160,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);
}
@@ -192,9 +246,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);
+ recordInfobarLanguageData(
+ INFOBAR_HISTOGRAM_TRANSLATE_LANGUAGE, mOptions.targetLanguageCode());
startTranslating(TARGET_TAB_INDEX);
return;
default:
@@ -213,10 +271,14 @@ class TranslateCompactInfoBar extends InfoBar
mUserInteracted = true;
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);
+ recordInfobarLanguageData(
+ INFOBAR_HISTOGRAM_ALWAYS_TRANSLATE_LANGUAGE, mOptions.sourceLanguageCode());
// Only show snackbar when "Always Translate" is enabled.
if (!mOptions.alwaysTranslateLanguageState()) {
createAndShowSnackbar(
@@ -228,17 +290,22 @@ class TranslateCompactInfoBar extends InfoBar
}
return;
case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
+ recordInfobarAction(INFOBAR_NEVER_TRANSLATE);
+ recordInfobarLanguageData(
+ INFOBAR_HISTOGRAM_NEVER_TRANSLATE_LANGUAGE, mOptions.sourceLanguageCode());
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;
@@ -251,6 +318,8 @@ class TranslateCompactInfoBar extends InfoBar
public void onTargetMenuItemClicked(String code) {
// Reset target code in both UI and native.
if (mOptions.setTargetLanguage(code)) {
+ recordInfobarLanguageData(
+ INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE, mOptions.targetLanguageCode());
nativeApplyStringTranslateOption(
mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, code);
// Adjust UI.
@@ -263,6 +332,8 @@ class TranslateCompactInfoBar extends InfoBar
public void onSourceMenuItemClicked(String code) {
// Reset source code in both UI and native.
if (mOptions.setSourceLanguage(code)) {
+ recordInfobarLanguageData(
+ INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE, mOptions.sourceLanguageCode());
nativeApplyStringTranslateOption(
mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, code);
// Adjust UI.
@@ -277,6 +348,20 @@ class TranslateCompactInfoBar extends InfoBar
handleTranslateOptionPostSnackbar(itemId);
return;
}
+ switch (itemId) {
+ case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
+ recordInfobarAction(INFOBAR_SNACKBAR_ALWAYS_TRANSLATE_IMPRESSION);
+ break;
+ case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
+ recordInfobarAction(INFOBAR_SNACKBAR_NEVER_TRANSLATE_IMPRESSION);
+ break;
+ case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
+ recordInfobarAction(INFOBAR_SNACKBAR_NEVER_TRANSLATE_SITE_IMPRESSION);
+ break;
+ default:
+ assert false : "Unsupported Menu Item Id, to show snackbar.";
+ }
+
getSnackbarManager().showSnackbar(
Snackbar.make(title, new TranslateSnackbarController(itemId),
Snackbar.TYPE_NOTIFICATION, umaType)
@@ -301,6 +386,20 @@ class TranslateCompactInfoBar extends InfoBar
nativeApplyBoolTranslateOption(
mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE_SITE, true);
return;
+ default:
+ assert false : "Unsupported Menu Item Id, in handle post snackbar";
+ }
+ }
+
+ private static void recordInfobarAction(int action) {
+ RecordHistogram.recordEnumeratedHistogram(
+ INFOBAR_HISTOGRAM, action, INFOBAR_HISTOGRAM_BOUNDARY);
+ }
+
+ private void recordInfobarLanguageData(String histogram, String langCode) {
+ Integer hashCode = mOptions.getUMAHashCodeFromCode(langCode);
+ if (hashCode != null) {
+ RecordHistogram.recordSparseSlowlyHistogram(histogram, hashCode);
}
}
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698