Chromium Code Reviews| 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 7854c3e44ecb2dd4432142a395239ddef0b483d0..8680a8138ce36eea7122f1f8c7e04dfee9f130c3 100644 |
| --- a/content/browser/android/content_view_core_impl.cc |
| +++ b/content/browser/android/content_view_core_impl.cc |
| @@ -209,13 +209,14 @@ ContentViewCoreImpl::ContentViewCoreImpl( |
| WebContents* web_contents, |
| const JavaRef<jobject>& view_android_delegate, |
| ui::WindowAndroid* window_android, |
| + float dpi_scale, |
| const JavaRef<jobject>& java_bridge_retained_object_set) |
| : WebContentsObserver(web_contents), |
| java_ref_(env, obj), |
| view_(view_android_delegate), |
| web_contents_(static_cast<WebContentsImpl*>(web_contents)), |
| page_scale_(1), |
| - dpi_scale_(ui::GetScaleFactorForNativeView(&view_)), |
| + dpi_scale_(dpi_scale), |
| device_orientation_(0), |
| accessibility_enabled_(false) { |
| CHECK(web_contents) << |
| @@ -803,6 +804,15 @@ float ContentViewCoreImpl::GetBottomControlsHeightDip() const { |
| return GetBottomControlsHeightPix() / dpi_scale(); |
| } |
| +void ContentViewCoreImpl::SendScreenRectsAndResizeWidget() { |
| + RenderWidgetHostViewAndroid* view = GetRenderWidgetHostViewAndroid(); |
| + if (view) { |
| + // |SendScreenRects()| indirectly calls GetViewSize() that asks Java layer. |
| + web_contents_->SendScreenRects(); |
| + view->WasResized(); |
| + } |
| +} |
| + |
| void ContentViewCoreImpl::MoveRangeSelectionExtent(const gfx::PointF& extent) { |
| if (!web_contents_) |
| return; |
| @@ -868,6 +878,15 @@ void ContentViewCoreImpl::SetFocus(JNIEnv* env, |
| SetFocusInternal(focused); |
| } |
| +void ContentViewCoreImpl::SetDIPScale(JNIEnv* env, |
| + const JavaParamRef<jobject>& obj, |
| + jfloat dpi_scale) { |
| + if (dpi_scale_ != dpi_scale) { |
|
boliu
2016/10/19 20:49:07
nit: general pattern is write it as an early out
i
Tima Vaisburd
2016/10/25 01:51:43
Done.
|
| + dpi_scale_ = dpi_scale; |
| + SendScreenRectsAndResizeWidget(); |
| + } |
| +} |
| + |
| void ContentViewCoreImpl::SetFocusInternal(bool focused) { |
| if (!GetRenderWidgetHostViewAndroid()) |
| return; |
| @@ -1236,16 +1255,12 @@ void ContentViewCoreImpl::RemoveJavascriptInterface( |
| void ContentViewCoreImpl::WasResized(JNIEnv* env, |
| const JavaParamRef<jobject>& obj) { |
| - RenderWidgetHostViewAndroid* view = GetRenderWidgetHostViewAndroid(); |
| gfx::Size physical_size( |
| Java_ContentViewCore_getPhysicalBackingWidthPix(env, obj), |
| Java_ContentViewCore_getPhysicalBackingHeightPix(env, obj)); |
| view_.GetLayer()->SetBounds(physical_size); |
| - if (view) { |
| - web_contents_->SendScreenRects(); |
| - view->WasResized(); |
| - } |
| + SendScreenRectsAndResizeWidget(); |
| } |
| long ContentViewCoreImpl::GetNativeImeAdapter( |
| @@ -1555,11 +1570,12 @@ jlong Init(JNIEnv* env, |
| const JavaParamRef<jobject>& web_contents, |
| const JavaParamRef<jobject>& view_android_delegate, |
| jlong window_android, |
| + jfloat dipScale, |
| const JavaParamRef<jobject>& retained_objects_set) { |
| ContentViewCoreImpl* view = new ContentViewCoreImpl( |
| env, obj, WebContents::FromJavaWebContents(web_contents), |
| view_android_delegate, |
| - reinterpret_cast<ui::WindowAndroid*>(window_android), |
| + reinterpret_cast<ui::WindowAndroid*>(window_android), dipScale, |
| retained_objects_set); |
| return reinterpret_cast<intptr_t>(view); |
| } |