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

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

Issue 2899893004: Code cleanup for Translate Compact Infobar. (Closed)
Patch Set: Merge branch 'master' into code-cleanup-5 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/browser/ui/android/infobars/translate_compact_infobar.h » ('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 d8c720999d6614d4569b563f406632ca2e665162..3d6e37304e1d6cdc47a319f4eb806c7d105e66e6 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
@@ -8,6 +8,7 @@ import android.support.design.widget.TabLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.View.OnLayoutChangeListener;
import android.widget.LinearLayout;
import org.chromium.base.annotations.CalledByNative;
@@ -24,9 +25,8 @@ import org.chromium.ui.widget.Toast;
/**
* Java version of the compact translate infobar.
*/
-class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelectedListener,
- TranslateMenuHelper.TranslateMenuListener,
- View.OnLayoutChangeListener {
+class TranslateCompactInfoBar extends InfoBar
+ implements TabLayout.OnTabSelectedListener, TranslateMenuHelper.TranslateMenuListener {
public static final int TRANSLATING_INFOBAR = 1;
private static final int SOURCE_TAB_INDEX = 0;
@@ -102,7 +102,8 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
private TranslateMenuHelper mOverflowMenuHelper;
private TranslateMenuHelper mLanguageMenuHelper;
private TintedImageButton mMenuButton;
- private boolean mUserInteracted;
+
+ private boolean mMenuExpanded;
/** The controller for translate UI snackbars. */
class TranslateSnackbarController implements SnackbarController {
@@ -133,7 +134,7 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_AUTO_NEVER);
// This snackbar is triggered automatically after a close button click. Need to
// dismiss the infobar even if the user cancels the "Never Translate".
- performCloseButtonActionWithoutDeniedCheck();
+ closeInfobar(false);
return;
case ACTION_OVERFLOW_NEVER_SITE:
recordInfobarAction(INFOBAR_SNACKBAR_CANCEL_NEVER_SITE);
@@ -176,18 +177,25 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
.inflate(R.layout.infobar_translate_compact_content, parent, false);
mTabLayout = (TranslateTabLayout) content.findViewById(R.id.translate_infobar_tabs);
- mTabLayout.addOnLayoutChangeListener(this);
mTabLayout.addTabs(mOptions.sourceLanguageName(), mOptions.targetLanguageName());
// Set translating status in the beginning for pages translated automatically.
if (mInitialStep == TRANSLATING_INFOBAR) {
mTabLayout.getTabAt(TARGET_TAB_INDEX).select();
mTabLayout.showProgressBarOnTab(TARGET_TAB_INDEX);
- mUserInteracted = true;
}
mTabLayout.addOnTabSelectedListener(this);
+ // Dismiss all menus when there is layout changed. (which will cause menu misplacement.)
+ mTabLayout.addOnLayoutChangeListener(new OnLayoutChangeListener() {
+ @Override
+ public void onLayoutChange(View v, int left, int top, int right, int bottom,
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
+ dismissMenus();
+ }
+ });
+
mMenuButton = (TintedImageButton) content.findViewById(R.id.translate_infobar_menu_button);
mMenuButton.setOnClickListener(new OnClickListener() {
@Override
@@ -195,6 +203,7 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
recordInfobarAction(INFOBAR_OPTIONS);
initMenuHelper(TranslateMenu.MENU_OVERFLOW);
mOverflowMenuHelper.show(TranslateMenu.MENU_OVERFLOW);
+ mMenuExpanded = true;
}
});
@@ -226,7 +235,6 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
// Already on the target tab.
mTabLayout.showProgressBarOnTab(TARGET_TAB_INDEX);
onButtonClicked(ActionType.TRANSLATE);
- mUserInteracted = true;
} else {
mTabLayout.getTabAt(TARGET_TAB_INDEX).select();
}
@@ -261,43 +269,32 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
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
protected void onNativeDestroyed() {
mNativeTranslateInfoBarPtr = 0;
super.onNativeDestroyed();
}
- @Override
- public void onCloseButtonClicked() {
- // If mUserInteracted is false, it is regarded as a translation denied.
- if (!mUserInteracted) {
- recordInfobarAction(INFOBAR_DECLINE);
- // 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;
- }
+ private void closeInfobar(boolean explicitly) {
+ // Check if we should trigger the auto "never translate" if infobar is closed explicitly.
+ if (explicitly
+ && nativeShouldAutoNeverTranslate(mNativeTranslateInfoBarPtr, mMenuExpanded)) {
+ createAndShowSnackbar(getContext().getString(R.string.translate_snackbar_language_never,
+ mOptions.sourceLanguageName()),
+ Snackbar.UMA_TRANSLATE_NEVER, ACTION_AUTO_NEVER_LANGUAGE);
+ // 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;
}
recordInfobarAction(INFOBAR_CLOSE);
// This line will dismiss this infobar.
- performCloseButtonActionWithoutDeniedCheck();
+ super.onCloseButtonClicked();
}
- private void performCloseButtonActionWithoutDeniedCheck() {
- super.onCloseButtonClicked();
+ @Override
+ public void onCloseButtonClicked() {
+ closeInfobar(true);
}
@Override
@@ -327,7 +324,6 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
@Override
public void onOverflowMenuItemClicked(int itemId) {
- mUserInteracted = true;
switch (itemId) {
case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE:
recordInfobarAction(INFOBAR_MORE_LANGUAGES);
@@ -402,13 +398,6 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
}
}
- @Override
- public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
- int oldTop, int oldRight, int oldBottom) {
- // Dismiss all menus when there is layout changed. (which will cause menu misplacement.)
- dismissMenus();
- }
-
// Dismiss all overflow menus that remains open.
// This is called when infobar started hiding or layout changed.
private void dismissMenus() {
@@ -514,5 +503,6 @@ class TranslateCompactInfoBar extends InfoBar implements TabLayout.OnTabSelected
long nativeTranslateCompactInfoBar, int option, String value);
private native void nativeApplyBoolTranslateOption(
long nativeTranslateCompactInfoBar, int option, boolean value);
- private native boolean nativeShouldAutoNeverTranslate(long nativeTranslateCompactInfoBar);
+ private native boolean nativeShouldAutoNeverTranslate(
+ long nativeTranslateCompactInfoBar, boolean menuExpanded);
}
« no previous file with comments | « no previous file | chrome/browser/ui/android/infobars/translate_compact_infobar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698