Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Unified Diff: chrome/browser/ui/android/infobars/translate_infobar.cc

Issue 1150193004: Straighten up life cycle of native InfoBar pointers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed unrelated file Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/android/infobars/translate_infobar.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..eaa7af75ad469a9e4bd0f1c38197d508b65600aa 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,13 @@ scoped_ptr<infobars::InfoBar> ChromeTranslateClient::CreateInfoBar(
TranslateInfoBar::TranslateInfoBar(
scoped_ptr<translate::TranslateInfoBarDelegate> delegate)
- : InfoBarAndroid(delegate.Pass()), java_translate_delegate_() {
+ : InfoBarAndroid(delegate.Pass()) {
}
TranslateInfoBar::~TranslateInfoBar() {
}
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,9 +39,8 @@ 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(),
+ 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 +78,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 +110,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, GetJavaInfoBar(),
+ new_type);
+ ReassignJavaInfoBar(destination);
}
bool TranslateInfoBar::ShouldDisplayNeverTranslateInfoBarOnCancel() {
« no previous file with comments | « chrome/browser/ui/android/infobars/translate_infobar.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698