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); |
} |