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

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

Issue 2824083003: Allow to use measured width in translate overflow menu (Closed)
Patch Set: sync Created 3 years, 8 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 7429eb3689974cf9af7e753a5706dc20d912218a..13d2b931dff1d3af690de31d8a9179ccc2bc3cbc 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
@@ -15,6 +15,7 @@ import org.chromium.chrome.R;
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.widget.TintedImageButton;
import org.chromium.ui.widget.Toast;
/**
@@ -33,7 +34,12 @@ class TranslateCompactInfoBar extends InfoBar
private long mNativeTranslateInfoBarPtr;
private TranslateTabLayout mTabLayout;
- private TranslateMenuHelper mMenuHelper;
+ // Need 2 instances of TranslateMenuHelper to prevent a race condition bug which happens when
+ // showing language menu after dismissing overflow menu.
+ private TranslateMenuHelper mOverflowMenuHelper;
+ private TranslateMenuHelper mLanguageMenuHelper;
+
+ private TintedImageButton mMenuButton;
@CalledByNative
private static InfoBar create(int initialStep, String sourceLanguageCode,
@@ -74,21 +80,35 @@ class TranslateCompactInfoBar extends InfoBar
mTabLayout.addOnTabSelectedListener(this);
- content.findViewById(R.id.translate_infobar_menu_button)
- .setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- initMenuHelper(v);
- mMenuHelper.show(TranslateMenu.MENU_OVERFLOW);
- }
- });
+ mMenuButton = (TintedImageButton) content.findViewById(R.id.translate_infobar_menu_button);
+ mMenuButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ initMenuHelper(TranslateMenu.MENU_OVERFLOW);
+ mOverflowMenuHelper.show(TranslateMenu.MENU_OVERFLOW);
+ }
+ });
parent.addContent(content, 1.0f);
}
- private void initMenuHelper(View anchorView) {
- if (mMenuHelper == null) {
- mMenuHelper = new TranslateMenuHelper(getContext(), anchorView, mOptions, this);
+ private void initMenuHelper(int menuType) {
+ switch (menuType) {
+ case TranslateMenu.MENU_OVERFLOW:
+ if (mOverflowMenuHelper == null) {
+ mOverflowMenuHelper =
+ new TranslateMenuHelper(getContext(), mMenuButton, mOptions, this);
+ }
+ return;
+ case TranslateMenu.MENU_TARGET_LANGUAGE:
+ case TranslateMenu.MENU_SOURCE_LANGUAGE:
+ if (mLanguageMenuHelper == null) {
+ mLanguageMenuHelper =
+ new TranslateMenuHelper(getContext(), mMenuButton, mOptions, this);
+ }
+ return;
+ default:
+ assert false : "Unsupported Menu Item Id";
}
}
@@ -153,7 +173,8 @@ class TranslateCompactInfoBar extends InfoBar
public void onOverflowMenuItemClicked(int itemId) {
switch (itemId) {
case TranslateMenu.ID_OVERFLOW_MORE_LANGUAGE:
- mMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE);
+ initMenuHelper(TranslateMenu.MENU_TARGET_LANGUAGE);
+ mLanguageMenuHelper.show(TranslateMenu.MENU_TARGET_LANGUAGE);
return;
case TranslateMenu.ID_OVERFLOW_ALWAYS_TRANSLATE:
nativeApplyBoolTranslateOption(
@@ -171,7 +192,8 @@ class TranslateCompactInfoBar extends InfoBar
showSnackbar(TranslateSnackbarType.NEVER_TRANSLATE_SITE);
return;
case TranslateMenu.ID_OVERFLOW_NOT_THIS_LANGUAGE:
- mMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE);
+ initMenuHelper(TranslateMenu.MENU_SOURCE_LANGUAGE);
+ mLanguageMenuHelper.show(TranslateMenu.MENU_SOURCE_LANGUAGE);
return;
default:
assert false : "Unexpected overflow menu code";

Powered by Google App Engine
This is Rietveld 408576698