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

Side by Side 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 setNativeInfoBarPtr calls from child classes 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/android/infobars/translate_infobar.h" 5 #include "chrome/browser/ui/android/infobars/translate_infobar.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h" 8 #include "base/android/jni_array.h"
9 #include "base/android/jni_weak_ref.h" 9 #include "base/android/jni_weak_ref.h"
10 #include "chrome/browser/translate/chrome_translate_client.h" 10 #include "chrome/browser/translate/chrome_translate_client.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 if (never_translate_language && delegate->IsTranslatableLanguageByPrefs()) 97 if (never_translate_language && delegate->IsTranslatableLanguageByPrefs())
98 delegate->ToggleTranslatableLanguageByPrefs(); 98 delegate->ToggleTranslatableLanguageByPrefs();
99 99
100 if (never_translate_site && !delegate->IsSiteBlacklisted()) 100 if (never_translate_site && !delegate->IsSiteBlacklisted())
101 delegate->ToggleSiteBlacklist(); 101 delegate->ToggleSiteBlacklist();
102 } 102 }
103 103
104 void TranslateInfoBar::TransferOwnership(TranslateInfoBar* destination, 104 void TranslateInfoBar::TransferOwnership(TranslateInfoBar* destination,
105 translate::TranslateStep new_type) { 105 translate::TranslateStep new_type) {
106 JNIEnv* env = base::android::AttachCurrentThread(); 106 JNIEnv* env = base::android::AttachCurrentThread();
107 if (Java_TranslateInfoBarDelegate_changeTranslateInfoBarTypeAndPointer( 107 if (destination != nullptr &&
David Trainor- moved to gerrit 2015/06/02 17:51:55 If destination is null, should we just drop owners
Changwan Ryu 2015/06/03 04:55:41 Removed the check as it cannot be null.
108 env, java_translate_delegate_.obj(), 108 Java_TranslateInfoBarDelegate_changeTranslateInfoBarTypeAndPointer(
109 reinterpret_cast<intptr_t>(destination), new_type)) { 109 env, java_translate_delegate_.obj(),
110 reinterpret_cast<intptr_t>(destination->infobar_android()),
111 reinterpret_cast<intptr_t>(destination), new_type)) {
110 ReassignJavaInfoBar(destination); 112 ReassignJavaInfoBar(destination);
111 destination->SetJavaDelegate(java_translate_delegate_.Release()); 113 destination->SetJavaDelegate(java_translate_delegate_.Release());
112 } 114 }
113 } 115 }
114 116
115 void TranslateInfoBar::SetJavaDelegate(jobject delegate) { 117 void TranslateInfoBar::SetJavaDelegate(jobject delegate) {
116 JNIEnv* env = base::android::AttachCurrentThread(); 118 JNIEnv* env = base::android::AttachCurrentThread();
117 java_translate_delegate_.Reset(env, delegate); 119 java_translate_delegate_.Reset(env, delegate);
118 } 120 }
119 121
120 bool TranslateInfoBar::ShouldDisplayNeverTranslateInfoBarOnCancel() { 122 bool TranslateInfoBar::ShouldDisplayNeverTranslateInfoBarOnCancel() {
121 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); 123 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
122 return (delegate->translate_step() == 124 return (delegate->translate_step() ==
123 translate::TRANSLATE_STEP_BEFORE_TRANSLATE) && 125 translate::TRANSLATE_STEP_BEFORE_TRANSLATE) &&
124 delegate->ShouldShowNeverTranslateShortcut(); 126 delegate->ShouldShowNeverTranslateShortcut();
125 } 127 }
126 128
127 translate::TranslateInfoBarDelegate* TranslateInfoBar::GetDelegate() { 129 translate::TranslateInfoBarDelegate* TranslateInfoBar::GetDelegate() {
128 return delegate()->AsTranslateInfoBarDelegate(); 130 return delegate()->AsTranslateInfoBarDelegate();
129 } 131 }
130 132
131 133
132 // Native JNI methods --------------------------------------------------------- 134 // Native JNI methods ---------------------------------------------------------
133 135
134 bool RegisterTranslateInfoBarDelegate(JNIEnv* env) { 136 bool RegisterTranslateInfoBarDelegate(JNIEnv* env) {
135 return RegisterNativesImpl(env); 137 return RegisterNativesImpl(env);
136 } 138 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698