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..1d492a87541aa0b83f0a8b174a57e8d5c7e3234d 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,16 @@ void TranslateCompactInfoBar::SetJavaInfoBar( |
| reinterpret_cast<intptr_t>(this)); |
| } |
| +void TranslateCompactInfoBar::CloseJavaInfoBar() { |
| + if (GetJavaInfoBar() != nullptr) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
|
gone
2017/04/26 17:19:51
I'd make the Java side closeInfoBarInternal call i
ramyasharma
2017/04/27 08:01:42
Thanks. Not using this approach anymore.
|
| + TranslateSnackbar* snackbar = new TranslateSnackbar(snackbar_type); |
| + Java_TranslateCompactInfoBar_closeInfoBar( |
| + env, GetJavaInfoBar(), snackbar_type, |
| + reinterpret_cast<intptr_t>(snackbar)); |
| + } |
| +} |
| + |
| void TranslateCompactInfoBar::ApplyStringTranslateOption( |
| JNIEnv* env, |
| const JavaParamRef<jobject>& obj, |
| @@ -106,14 +118,23 @@ 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; |
| + TranslateCompactInfoBar::CloseJavaInfoBar(); |
|
gone
2017/04/26 17:19:51
You shouldn't need to scope TranslateCompactInfoBa
ramyasharma
2017/04/27 08:01:42
Done.
|
| + } |
| } else if (option == TranslateUtils::OPTION_NEVER_TRANSLATE) { |
| - if (value && delegate->IsTranslatableLanguageByPrefs()) |
| + if (value && delegate->IsTranslatableLanguageByPrefs()) { |
| delegate->ToggleTranslatableLanguageByPrefs(); |
| + snackbar_type = TranslateUtils::TYPE_NEVER_TRANSLATE; |
| + TranslateCompactInfoBar::CloseJavaInfoBar(); |
| + } |
| } 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; |
| + TranslateCompactInfoBar::CloseJavaInfoBar(); |
| + } |
| } else { |
| DCHECK(false); |
| } |