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

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

Issue 2854243004: Moves translate snackbar functionality to Android side. (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/TranslateSnackbarController.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 d9aefd6b4cb78da5e524dd3aea1675cbe40ae5b5..fbadb25bc70471b8b5dda92911d99d2116fce09d 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
@@ -16,6 +16,7 @@ import org.chromium.chrome.browser.infobar.translate.TranslateMenu;
import org.chromium.chrome.browser.infobar.translate.TranslateMenuHelper;
import org.chromium.chrome.browser.infobar.translate.TranslateTabLayout;
import org.chromium.chrome.browser.snackbar.Snackbar;
+import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
import org.chromium.chrome.browser.widget.TintedImageButton;
import org.chromium.ui.widget.Toast;
@@ -42,6 +43,26 @@ class TranslateCompactInfoBar extends InfoBar
private TintedImageButton mMenuButton;
+ /** The controller for translate UI snackbars. */
+ class TranslateSnackbarController implements SnackbarController {
+ private final int mMenuItemId;
+
+ public TranslateSnackbarController(int menuItemId) {
+ mMenuItemId = menuItemId;
+ }
+
+ @Override
+ public void onDismissNoAction(Object actionData) {
+ handleTranslateOptionPostSnackbar(mMenuItemId);
+ }
+
+ @Override
+ public void onAction(Object actionData) {
+ // TODO(ramyasharma): Add logging metric to track cancel actions.
+ // Do nothing.
+ }
+ };
+
@CalledByNative
private static InfoBar create(int initialStep, String sourceLanguageCode,
String targetLanguageCode, boolean alwaysTranslate, boolean triggeredFromMenu,
@@ -178,24 +199,26 @@ class TranslateCompactInfoBar extends InfoBar
mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE);
return;
case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
- mOptions.toggleAlwaysTranslateLanguageState(
- !mOptions.alwaysTranslateLanguageState());
- nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr,
- TranslateOption.ALWAYS_TRANSLATE, mOptions.alwaysTranslateLanguageState());
// Only show snackbar when "Always Translate" is enabled.
- if (mOptions.alwaysTranslateLanguageState()) {
- showSnackbar(TranslateSnackbarType.ALWAYS_TRANSLATE);
+ if (!mOptions.alwaysTranslateLanguageState()) {
+ createAndShowSnackbar(
+ getContext().getString(R.string.translate_snackbar_always_translate,
+ mOptions.sourceLanguageName(), mOptions.targetLanguageName()),
+ Snackbar.UMA_TRANSLATE_ALWAYS, itemId);
+ } else {
+ handleTranslateOptionPostSnackbar(itemId);
}
return;
case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
- nativeApplyBoolTranslateOption(
- mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE, true);
- showSnackbar(TranslateSnackbarType.NEVER_TRANSLATE);
+ createAndShowSnackbar(
+ getContext().getString(R.string.translate_snackbar_language_never,
+ mOptions.sourceLanguageName()),
+ Snackbar.UMA_TRANSLATE_NEVER, itemId);
return;
case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
- nativeApplyBoolTranslateOption(
- mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE_SITE, true);
- showSnackbar(TranslateSnackbarType.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:
initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE);
@@ -230,29 +253,37 @@ class TranslateCompactInfoBar extends InfoBar
}
}
- private void showSnackbar(int snackbarType) {
- if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE) {
- createAndShowSnackbar(getContext().getString(R.string.translate_snackbar_language_never,
- mOptions.sourceLanguageName()),
- Snackbar.UMA_TRANSLATE_NEVER);
- } else if (snackbarType == TranslateSnackbarType.ALWAYS_TRANSLATE) {
- createAndShowSnackbar(
- getContext().getString(R.string.translate_snackbar_always_translate,
- mOptions.sourceLanguageName(), mOptions.targetLanguageName()),
- Snackbar.UMA_TRANSLATE_ALWAYS);
- } else if (snackbarType == TranslateSnackbarType.NEVER_TRANSLATE_SITE) {
- createAndShowSnackbar(getContext().getString(R.string.translate_snackbar_site_never),
- Snackbar.UMA_TRANSLATE_NEVER_SITE);
+ private void createAndShowSnackbar(String title, int umaType, int itemId) {
+ if (getSnackbarManager() == null) {
+ // Directly apply menu option, if snackbar system is not working.
+ handleTranslateOptionPostSnackbar(itemId);
+ return;
}
+ getSnackbarManager().showSnackbar(
+ Snackbar.make(title, new TranslateSnackbarController(itemId),
+ Snackbar.TYPE_NOTIFICATION, umaType)
+ .setSingleLine(false)
+ .setAction(
+ getContext().getString(R.string.translate_snackbar_cancel), null));
}
- private void createAndShowSnackbar(String title, int type) {
- if (getSnackbarManager() == null) {
- return;
+ private void handleTranslateOptionPostSnackbar(int itemId) {
+ switch (itemId) {
+ case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
+ mOptions.toggleAlwaysTranslateLanguageState(
+ !mOptions.alwaysTranslateLanguageState());
+ nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr,
+ TranslateOption.ALWAYS_TRANSLATE, mOptions.alwaysTranslateLanguageState());
+ return;
+ case TranslateMenu.ID_OVERFLOW_NEVER_LANGUAGE:
+ nativeApplyBoolTranslateOption(
+ mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE, true);
+ return;
+ case TranslateMenu.ID_OVERFLOW_NEVER_SITE:
+ nativeApplyBoolTranslateOption(
+ mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE_SITE, true);
+ return;
}
- getSnackbarManager().showSnackbar(Snackbar.make(title, new TranslateSnackbarController(),
- Snackbar.TYPE_NOTIFICATION, type)
- .setSingleLine(false));
}
private native void nativeApplyStringTranslateOption(
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateSnackbarController.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698