Index: chrome/browser/ui/android/infobars/translate_infobar.cc |
diff --git a/chrome/browser/ui/android/infobars/translate_infobar.cc b/chrome/browser/ui/android/infobars/translate_infobar.cc |
index d287757448286d8d325ffb7e8be2adb3d2285b03..a2215e7d0b8b5c9ab3b0885b2a12bb9f2d774e2a 100644 |
--- a/chrome/browser/ui/android/infobars/translate_infobar.cc |
+++ b/chrome/browser/ui/android/infobars/translate_infobar.cc |
@@ -9,7 +9,7 @@ |
#include "base/android/jni_weak_ref.h" |
#include "chrome/browser/translate/chrome_translate_client.h" |
#include "components/translate/core/browser/translate_infobar_delegate.h" |
-#include "jni/TranslateInfoBarDelegate_jni.h" |
+#include "jni/TranslateInfoBar_jni.h" |
// ChromeTranslateClient |
// ---------------------------------------------------------- |
@@ -24,14 +24,17 @@ scoped_ptr<infobars::InfoBar> ChromeTranslateClient::CreateInfoBar( |
TranslateInfoBar::TranslateInfoBar( |
scoped_ptr<translate::TranslateInfoBarDelegate> delegate) |
- : InfoBarAndroid(delegate.Pass()), java_translate_delegate_() { |
+ : InfoBarAndroid(delegate.Pass()) { |
} |
TranslateInfoBar::~TranslateInfoBar() { |
+ if (java_info_bar()) { |
David Trainor- moved to gerrit
2015/06/03 19:38:46
Just override onNativeDestroyed() in java?
Changwan Ryu
2015/06/04 01:42:27
Done.
|
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ Java_TranslateInfoBar_onNativeDestroyed(env, java_info_bar()); |
+ } |
} |
ScopedJavaLocalRef<jobject> TranslateInfoBar::CreateRenderInfoBar(JNIEnv* env) { |
- java_translate_delegate_.Reset(Java_TranslateInfoBarDelegate_create(env)); |
translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
std::vector<base::string16> languages; |
languages.reserve(delegate->num_languages()); |
@@ -40,10 +43,10 @@ ScopedJavaLocalRef<jobject> TranslateInfoBar::CreateRenderInfoBar(JNIEnv* env) { |
base::android::ScopedJavaLocalRef<jobjectArray> java_languages = |
base::android::ToJavaArrayOfStrings(env, languages); |
- return Java_TranslateInfoBarDelegate_showTranslateInfoBar( |
- env, java_translate_delegate_.obj(), reinterpret_cast<intptr_t>(this), |
- delegate->translate_step(), delegate->original_language_index(), |
- delegate->target_language_index(), delegate->ShouldAlwaysTranslate(), |
+ return Java_TranslateInfoBar_show( |
+ env, delegate->translate_step(), |
+ delegate->original_language_index(), delegate->target_language_index(), |
+ delegate->ShouldAlwaysTranslate(), |
ShouldDisplayNeverTranslateInfoBarOnCancel(), |
delegate->triggered_from_menu(), java_languages.obj()); |
} |
@@ -80,6 +83,14 @@ void TranslateInfoBar::PassJavaInfoBar(InfoBarAndroid* source) { |
this, delegate->translate_step()); |
} |
+void TranslateInfoBar::SetJavaInfoBar( |
+ const base::android::JavaRef<jobject>& java_info_bar) { |
+ InfoBarAndroid::SetJavaInfoBar(java_info_bar); |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ Java_TranslateInfoBar_setNativePtr(env, java_info_bar.obj(), |
+ reinterpret_cast<intptr_t>(this)); |
+} |
+ |
void TranslateInfoBar::ApplyTranslateOptions(JNIEnv* env, |
jobject obj, |
int source_language_index, |
@@ -104,17 +115,9 @@ void TranslateInfoBar::ApplyTranslateOptions(JNIEnv* env, |
void TranslateInfoBar::TransferOwnership(TranslateInfoBar* destination, |
translate::TranslateStep new_type) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
- if (Java_TranslateInfoBarDelegate_changeTranslateInfoBarTypeAndPointer( |
- env, java_translate_delegate_.obj(), |
- reinterpret_cast<intptr_t>(destination), new_type)) { |
- ReassignJavaInfoBar(destination); |
- destination->SetJavaDelegate(java_translate_delegate_.Release()); |
- } |
-} |
- |
-void TranslateInfoBar::SetJavaDelegate(jobject delegate) { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- java_translate_delegate_.Reset(env, delegate); |
+ Java_TranslateInfoBar_changeTranslateInfoBarType(env, java_info_bar(), |
+ new_type); |
+ ReassignJavaInfoBar(destination); |
} |
bool TranslateInfoBar::ShouldDisplayNeverTranslateInfoBarOnCancel() { |