Index: ui/android/view_android.cc |
diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc |
index 377ea408e7ce276214c26da734154c160adaee4a..8a490cd20771f5a38be4c02981899e2ff97bd742 100644 |
--- a/ui/android/view_android.cc |
+++ b/ui/android/view_android.cc |
@@ -102,11 +102,11 @@ void ViewAndroid::RemoveFromParent() { |
} |
ViewAndroid::ScopedAnchorView ViewAndroid::AcquireAnchorView() { |
- ScopedJavaLocalRef<jobject> delegate(GetViewAndroidDelegate()); |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> delegate = GetViewAndroidDelegate().get(env); |
if (delegate.is_null()) |
return ViewAndroid::ScopedAnchorView(); |
- JNIEnv* env = base::android::AttachCurrentThread(); |
return ViewAndroid::ScopedAnchorView( |
env, Java_ViewAndroidDelegate_acquireView(env, delegate), delegate); |
} |
@@ -116,7 +116,8 @@ void ViewAndroid::SetAnchorRect(const JavaRef<jobject>& anchor, |
if (bounds.IsEmpty()) |
return; |
- ScopedJavaLocalRef<jobject> delegate(GetViewAndroidDelegate()); |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> delegate = GetViewAndroidDelegate().get(env); |
if (delegate.is_null()) |
return; |
@@ -128,7 +129,6 @@ void ViewAndroid::SetAnchorRect(const JavaRef<jobject>& anchor, |
// specific to a given web contents/render widget. |
int top_margin = std::round( |
(GetWindowAndroid()->content_offset().y() + bounds.y()) * scale); |
- JNIEnv* env = base::android::AttachCurrentThread(); |
Java_ViewAndroidDelegate_setViewPosition( |
env, delegate, anchor, bounds.x(), bounds.y(), bounds.width(), |
bounds.height(), scale, left_margin, top_margin); |
@@ -149,14 +149,14 @@ WindowAndroid* ViewAndroid::GetWindowAndroid() const { |
return parent_ ? parent_->GetWindowAndroid() : nullptr; |
} |
-const ScopedJavaLocalRef<jobject> ViewAndroid::GetViewAndroidDelegate() |
+const JavaObjectWeakGlobalRef ViewAndroid::GetViewAndroidDelegate() |
const { |
JNIEnv* env = base::android::AttachCurrentThread(); |
- const ScopedJavaLocalRef<jobject> delegate = delegate_.get(env); |
+ ScopedJavaLocalRef<jobject> delegate = delegate_.get(env); |
if (!delegate.is_null()) |
- return delegate; |
+ return delegate_; |
- return parent_ ? parent_->GetViewAndroidDelegate() : delegate; |
+ return parent_ ? parent_->GetViewAndroidDelegate() : delegate_; |
} |
cc::Layer* ViewAndroid::GetLayer() const { |
@@ -169,10 +169,10 @@ void ViewAndroid::SetLayer(scoped_refptr<cc::Layer> layer) { |
void ViewAndroid::StartDragAndDrop(const JavaRef<jstring>& jtext, |
const JavaRef<jobject>& jimage) { |
- ScopedJavaLocalRef<jobject> delegate(GetViewAndroidDelegate()); |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> delegate = delegate_.get(env); |
if (delegate.is_null()) |
return; |
- JNIEnv* env = base::android::AttachCurrentThread(); |
Java_ViewAndroidDelegate_startDragAndDrop(env, delegate, jtext, jimage); |
} |