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

Unified Diff: ui/android/view_android.cc

Issue 2259493005: Let PowerSaveBlocker manager anchor view in Java side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 4 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 | « ui/android/view_android.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « ui/android/view_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698