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