Chromium Code Reviews| 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 077cee9c64d457143b3b1ba17b19b24b9d01703c..a08b3d4ec6d4f586ea50b4e5cb4d0c0348722b04 100644 |
| --- a/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
| +++ b/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
| @@ -12,6 +12,7 @@ |
| #include "base/android/jni_weak_ref.h" |
| #include "base/memory/ptr_util.h" |
| #include "chrome/browser/translate/android/translate_utils.h" |
| +#include "chrome/browser/ui/android/snackbars/translate_snackbar.h" |
| #include "components/translate/core/browser/translate_infobar_delegate.h" |
| #include "jni/TranslateCompactInfoBar_jni.h" |
| @@ -28,6 +29,7 @@ TranslateCompactInfoBar::TranslateCompactInfoBar( |
| translate_driver_ = static_cast<translate::ContentTranslateDriver*>( |
| GetDelegate()->GetTranslateDriver()); |
| translate_driver_->AddObserver(this); |
| + snackbar_type_ = TranslateUtils::TYPE_NONE; |
| } |
| TranslateCompactInfoBar::~TranslateCompactInfoBar() { |
| @@ -78,6 +80,17 @@ void TranslateCompactInfoBar::SetJavaInfoBar( |
| reinterpret_cast<intptr_t>(this)); |
| } |
| +void TranslateCompactInfoBar::ShowSnackbar(JNIEnv* env, |
| + const JavaParamRef<jobject>& obj) { |
| + if (!GetJavaInfoBar()) |
| + return; |
| + |
| + TranslateSnackbar snackbar(snackbar_type_); |
| + Java_TranslateCompactInfoBar_showSnackbar( |
| + env, GetJavaInfoBar(), snackbar_type_, |
| + reinterpret_cast<intptr_t>(&snackbar)); |
|
gone
2017/04/28 00:48:11
I'm not sure how this works. It's a pointer to an
ramyasharma
2017/04/28 03:13:11
Thanks Dan. Good point. It does go out of scope, b
|
| +} |
| + |
| void TranslateCompactInfoBar::ApplyStringTranslateOption( |
| JNIEnv* env, |
| const JavaParamRef<jobject>& obj, |
| @@ -106,14 +119,20 @@ void TranslateCompactInfoBar::ApplyBoolTranslateOption( |
| jboolean value) { |
| translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
| if (option == TranslateUtils::OPTION_ALWAYS_TRANSLATE) { |
| - if (delegate->ShouldAlwaysTranslate() != value) |
| + if (delegate->ShouldAlwaysTranslate() != value) { |
| delegate->ToggleAlwaysTranslate(); |
| + snackbar_type_ = TranslateUtils::TYPE_ALWAYS_TRANSLATE; |
| + } |
| } else if (option == TranslateUtils::OPTION_NEVER_TRANSLATE) { |
| - if (value && delegate->IsTranslatableLanguageByPrefs()) |
| + if (value && delegate->IsTranslatableLanguageByPrefs()) { |
| delegate->ToggleTranslatableLanguageByPrefs(); |
| + snackbar_type_ = TranslateUtils::TYPE_NEVER_TRANSLATE; |
| + } |
| } else if (option == TranslateUtils::OPTION_NEVER_TRANSLATE_SITE) { |
| - if (value && !delegate->IsSiteBlacklisted()) |
| + if (value && !delegate->IsSiteBlacklisted()) { |
| delegate->ToggleSiteBlacklist(); |
| + snackbar_type_ = TranslateUtils::TYPE_NEVER_TRANSLATE_SITE; |
| + } |
| } else { |
| DCHECK(false); |
| } |