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

Unified Diff: content/browser/android/content_view_core_impl.cc

Issue 2103243002: Factor out ContentViewAndroidDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 5 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
Index: content/browser/android/content_view_core_impl.cc
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc
index b3bbe94d5620a07de286dbb360696bb5a4bd656a..48d546e8b8f4fb4f1956f4ad040be20caedb4f55 100644
--- a/content/browser/android/content_view_core_impl.cc
+++ b/content/browser/android/content_view_core_impl.cc
@@ -213,12 +213,13 @@ ContentViewCoreImpl::ContentViewCoreImpl(
JNIEnv* env,
jobject obj,
WebContents* web_contents,
+ const base::android::JavaRef<jobject>& view_context,
const base::android::JavaRef<jobject>& view_android_delegate,
ui::WindowAndroid* window_android,
jobject java_bridge_retained_object_set)
: WebContentsObserver(web_contents),
java_ref_(env, obj),
- view_(view_android_delegate, window_android),
+ view_(view_context, view_android_delegate, window_android),
web_contents_(static_cast<WebContentsImpl*>(web_contents)),
page_scale_(1),
dpi_scale_(ui::GetScaleFactorForNativeView(&view_)),
@@ -503,8 +504,6 @@ void ContentViewCoreImpl::ShowSelectPopupMenu(
if (j_obj.is_null())
return;
- ScopedJavaLocalRef<jobject> bounds_rect(CreateJavaRect(env, bounds));
-
// For multi-select list popups we find the list of previous selections by
// iterating through the items. But for single selection popups we take the
// given |selected_item| as is.
@@ -541,8 +540,12 @@ void ContentViewCoreImpl::ShowSelectPopupMenu(
}
ScopedJavaLocalRef<jobjectArray> items_array(
base::android::ToJavaArrayOfStrings(env, labels));
+ select_popup_.Reset(view_.AcquireAnchorView());
+ view_.SetAnchorRect(select_popup_.obj(),
+ gfx::ScaleRect(gfx::RectF(bounds), page_scale_));
Java_ContentViewCore_showSelectPopup(
- env, j_obj.obj(), reinterpret_cast<intptr_t>(frame), bounds_rect.obj(),
+ env, j_obj.obj(), select_popup_.obj(), bounds.width() * page_scale_,
+ reinterpret_cast<intptr_t>(frame),
items_array.obj(), enabled_array.obj(), multiple, selected_array.obj(),
right_aligned);
}
@@ -552,6 +555,10 @@ void ContentViewCoreImpl::HideSelectPopupMenu() {
ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
if (!j_obj.is_null())
Java_ContentViewCore_hideSelectPopup(env, j_obj.obj());
+ if (select_popup_.is_null()) {
no sievers 2016/07/14 23:31:17 !select_popup_.is_null()
Jinsuk Kim 2016/07/15 05:46:26 Thanks for catching it. Done.
+ view_.RemoveAnchorView(select_popup_.obj());
+ select_popup_.Reset();
+ }
}
void ContentViewCoreImpl::OnGestureEventAck(const blink::WebGestureEvent& event,
@@ -863,11 +870,6 @@ void ContentViewCoreImpl::SelectBetweenCoordinates(const gfx::PointF& base,
web_contents_->SelectRange(base_point, extent_point);
}
-const base::android::JavaRef<jobject>&
-ContentViewCoreImpl::GetViewAndroidDelegate() const {
- return view_.GetViewAndroidDelegate();
-}
-
ui::WindowAndroid* ContentViewCoreImpl::GetWindowAndroid() const {
return view_.GetWindowAndroid();
}
@@ -1630,11 +1632,13 @@ void ContentViewCoreImpl::PullReset() {
jlong Init(JNIEnv* env,
const JavaParamRef<jobject>& obj,
const JavaParamRef<jobject>& web_contents,
+ const JavaParamRef<jobject>& view_context,
const JavaParamRef<jobject>& view_android_delegate,
jlong window_android,
const JavaParamRef<jobject>& retained_objects_set) {
ContentViewCoreImpl* view = new ContentViewCoreImpl(
env, obj, WebContents::FromJavaWebContents(web_contents),
+ view_context,
view_android_delegate,
reinterpret_cast<ui::WindowAndroid*>(window_android),
retained_objects_set);

Powered by Google App Engine
This is Rietveld 408576698