Index: chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
diff --git a/chrome/browser/ui/android/infobars/translate_compact_infobar.cc b/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
index 0c0cec0f990aae91c8ac3adad27eb5edc2ee2968..94a729fa268f915958d2e6a02ac3a6c1236e8ccf 100644 |
--- a/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
+++ b/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
@@ -63,12 +63,21 @@ void TranslateCompactInfoBar::ProcessButton(int action) { |
// TODO(ramyasharma): Handle other button clicks. |
translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
- if (action == InfoBarAndroid::ACTION_TRANSLATE) |
+ if (action == InfoBarAndroid::ACTION_TRANSLATE) { |
delegate->Translate(); |
- else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) |
+ if (!delegate->ShouldAlwaysTranslate() && |
+ delegate->ShouldAutoAlwaysTranslate()) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ Java_TranslateCompactInfoBar_setAutoAlwaysTranslate(env, |
+ GetJavaInfoBar()); |
+ } |
+ } else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) { |
delegate->RevertTranslation(); |
- else |
+ } else if (action == InfoBarAndroid::ACTION_CANCEL) { |
+ delegate->TranslationDeclined(); |
+ } else { |
DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action); |
+ } |
} |
void TranslateCompactInfoBar::SetJavaInfoBar( |
@@ -136,6 +145,11 @@ void TranslateCompactInfoBar::OnPageTranslated( |
error_type); |
} |
+bool TranslateCompactInfoBar::ShouldAutoAlwaysTranslate() { |
+ translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
+ return delegate->ShouldAutoAlwaysTranslate(); |
+} |
+ |
translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() { |
return delegate()->AsTranslateInfoBarDelegate(); |
} |