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

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

Issue 2874393002: Automatically trigger Never-Translate in new translation infobar (Closed)
Patch Set: fix 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
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..689fd1c0bf21b698d0cdc31174bdd166dc4f439e 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
@@ -21,7 +21,7 @@ import org.chromium.chrome.browser.widget.TintedImageButton;
import org.chromium.ui.widget.Toast;
/**
- * Java version of the compcat translate infobar
+ * Java version of the compact translate infobar.
*/
class TranslateCompactInfoBar extends InfoBar
implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.TranslateMenuListener {
@@ -30,6 +30,15 @@ class TranslateCompactInfoBar extends InfoBar
private static final int SOURCE_TAB_INDEX = 0;
private static final int TARGET_TAB_INDEX = 1;
+ // Action ID for Snackbar.
+ // Actions performed by clicking on on the overflow menu.
+ public static final int ACTION_OVERFLOW_ALWAYS_TRANSLATE = 0;
+ public static final int ACTION_OVERFLOW_NEVER_SITE = 1;
+ public static final int ACTION_OVERFLOW_NEVER_LANGUAGE = 2;
+ // Actions triggered automatically (when translation or denied count reaches the threshold)
mdjones 2017/05/12 17:12:01 nit: punctuation.
Marti Wong 2017/05/14 04:30:47 Done.
+ public static final int ACTION_AUTO_ALWAYS_TRANSLATE = 3;
+ public static final int ACTION_AUTO_NEVER_LANGUAGE = 4;
+
private final int mInitialStep;
private final TranslateOptions mOptions;
@@ -45,21 +54,27 @@ class TranslateCompactInfoBar extends InfoBar
/** The controller for translate UI snackbars. */
class TranslateSnackbarController implements SnackbarController {
- private final int mMenuItemId;
+ private final int mActionId;
- public TranslateSnackbarController(int menuItemId) {
- mMenuItemId = menuItemId;
+ public TranslateSnackbarController(int actionId) {
+ mActionId = actionId;
}
@Override
public void onDismissNoAction(Object actionData) {
- handleTranslateOptionPostSnackbar(mMenuItemId);
+ handleTranslateOptionPostSnackbar(mActionId);
}
@Override
public void onAction(Object actionData) {
// TODO(ramyasharma): Add logging metric to track cancel actions.
// Do nothing.
+
+ // This snackbar is triggered automatically after a close button click. Need to dismiss
+ // the infobar even user cancels the "Never Translate".
mdjones 2017/05/12 17:12:00 nit: "even if the user"
Marti Wong 2017/05/14 04:30:47 Done.
+ if (mActionId == ACTION_AUTO_NEVER_LANGUAGE) {
+ performCloseButtonActionWithoutDeniedCheck();
+ }
}
};
@@ -171,7 +186,13 @@ class TranslateCompactInfoBar extends InfoBar
private void setAutoAlwaysTranslate() {
createAndShowSnackbar(getContext().getString(R.string.translate_snackbar_always_translate,
mOptions.sourceLanguageName(), mOptions.targetLanguageName()),
- Snackbar.UMA_TRANSLATE_ALWAYS, TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE);
+ Snackbar.UMA_TRANSLATE_ALWAYS, ACTION_AUTO_ALWAYS_TRANSLATE);
+ }
+
+ private void setAutoNeverTranslate() {
+ createAndShowSnackbar(getContext().getString(R.string.translate_snackbar_language_never,
+ mOptions.sourceLanguageName()),
+ Snackbar.UMA_TRANSLATE_NEVER, ACTION_AUTO_NEVER_LANGUAGE);
}
@Override
@@ -182,9 +203,26 @@ class TranslateCompactInfoBar extends InfoBar
@Override
public void onCloseButtonClicked() {
+ // If mUserInteracted is false, it is regarded as a translation denied.
if (!mUserInteracted) {
+ // This will increment the denied count.
onButtonClicked(ActionType.CANCEL);
+
+ // Check if it should trigger the auto "never translate".
+ if (!mOptions.neverTranslateLanguageState()
+ && nativeShouldAutoNeverTranslate(mNativeTranslateInfoBarPtr)) {
+ setAutoNeverTranslate();
+ // Postpone the infobar dismiss until the snackbar finished showing. Otherwise, the
+ // reference to the native infobar is killed and there is no way for the snackbar to
+ // perform the action.
+ return;
+ }
}
+ // This line will dismiss this infobar
+ performCloseButtonActionWithoutDeniedCheck();
+ }
+
+ private void performCloseButtonActionWithoutDeniedCheck() {
super.onCloseButtonClicked();
}
@@ -222,21 +260,21 @@ class TranslateCompactInfoBar extends InfoBar
createAndShowSnackbar(
getContext().getString(R.string.translate_snackbar_always_translate,
mOptions.sourceLanguageName(), mOptions.targetLanguageName()),
- Snackbar.UMA_TRANSLATE_ALWAYS, itemId);
+ Snackbar.UMA_TRANSLATE_ALWAYS, ACTION_OVERFLOW_ALWAYS_TRANSLATE);
} else {
- handleTranslateOptionPostSnackbar(itemId);
+ handleTranslateOptionPostSnackbar(ACTION_OVERFLOW_ALWAYS_TRANSLATE);
}
return;
case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
createAndShowSnackbar(
getContext().getString(R.string.translate_snackbar_language_never,
mOptions.sourceLanguageName()),
- Snackbar.UMA_TRANSLATE_NEVER, itemId);
+ Snackbar.UMA_TRANSLATE_NEVER, ACTION_OVERFLOW_NEVER_LANGUAGE);
return;
case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
createAndShowSnackbar(
getContext().getString(R.string.translate_snackbar_site_never),
- Snackbar.UMA_TRANSLATE_NEVER_SITE, itemId);
+ Snackbar.UMA_TRANSLATE_NEVER_SITE, ACTION_OVERFLOW_NEVER_SITE);
return;
case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE:
initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE);
@@ -287,17 +325,21 @@ class TranslateCompactInfoBar extends InfoBar
private void handleTranslateOptionPostSnackbar(int itemId) {
switch (itemId) {
- case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
+ case ACTION_OVERFLOW_ALWAYS_TRANSLATE:
+ case ACTION_AUTO_ALWAYS_TRANSLATE:
mOptions.toggleAlwaysTranslateLanguageState(
!mOptions.alwaysTranslateLanguageState());
nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr,
TranslateOption.ALWAYS_TRANSLATE, mOptions.alwaysTranslateLanguageState());
return;
- case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
+ case ACTION_OVERFLOW_NEVER_LANGUAGE:
+ case ACTION_AUTO_NEVER_LANGUAGE:
+ // after applying this option, the infobar will dismiss
mdjones 2017/05/12 17:12:00 nit: "after"->"After" and punctuation. Same for be
Marti Wong 2017/05/14 04:30:47 Done.
nativeApplyBoolTranslateOption(
mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE, true);
return;
- case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
+ case ACTION_OVERFLOW_NEVER_SITE:
+ // after applying this option, the infobar will dismiss
nativeApplyBoolTranslateOption(
mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE_SITE, true);
return;
@@ -308,4 +350,5 @@ class TranslateCompactInfoBar extends InfoBar
long nativeTranslateCompactInfoBar, int option, String value);
private native void nativeApplyBoolTranslateOption(
long nativeTranslateCompactInfoBar, int option, boolean value);
+ private native boolean nativeShouldAutoNeverTranslate(long nativeTranslateCompactInfoBar);
}

Powered by Google App Engine
This is Rietveld 408576698