| 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 5e012e29fa14d8bdd675b78e41dd281e2d8c6bed..2aad65ed5b5b6decf7a34ad900a9f560c674be6d 100644
|
| --- a/content/browser/android/content_view_core_impl.cc
|
| +++ b/content/browser/android/content_view_core_impl.cc
|
| @@ -207,12 +207,13 @@ ContentViewCoreImpl::ContentViewCoreImpl(
|
| JNIEnv* env,
|
| const JavaRef<jobject>& obj,
|
| WebContents* web_contents,
|
| + float dpi_scale,
|
| const JavaRef<jobject>& java_bridge_retained_object_set)
|
| : WebContentsObserver(web_contents),
|
| java_ref_(env, obj),
|
| web_contents_(static_cast<WebContentsImpl*>(web_contents)),
|
| page_scale_(1),
|
| - dpi_scale_(ui::GetScaleFactorForNativeView(GetViewAndroid())),
|
| + dpi_scale_(dpi_scale),
|
| device_orientation_(0),
|
| accessibility_enabled_(false) {
|
| GetViewAndroid()->SetLayer(cc::Layer::Create());
|
| @@ -786,6 +787,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;
|
| @@ -851,6 +861,16 @@ void ContentViewCoreImpl::SetFocus(JNIEnv* env,
|
| SetFocusInternal(focused);
|
| }
|
|
|
| +void ContentViewCoreImpl::SetDIPScale(JNIEnv* env,
|
| + const JavaParamRef<jobject>& obj,
|
| + jfloat dpi_scale) {
|
| + if (dpi_scale_ == dpi_scale)
|
| + return;
|
| +
|
| + dpi_scale_ = dpi_scale;
|
| + SendScreenRectsAndResizeWidget();
|
| +}
|
| +
|
| void ContentViewCoreImpl::SetFocusInternal(bool focused) {
|
| if (!GetRenderWidgetHostViewAndroid())
|
| return;
|
| @@ -1219,16 +1239,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));
|
| GetViewAndroid()->GetLayer()->SetBounds(physical_size);
|
|
|
| - if (view) {
|
| - web_contents_->SendScreenRects();
|
| - view->WasResized();
|
| - }
|
| + SendScreenRectsAndResizeWidget();
|
| }
|
|
|
| long ContentViewCoreImpl::GetNativeImeAdapter(
|
| @@ -1536,6 +1552,7 @@ jlong Init(JNIEnv* env,
|
| const JavaParamRef<jobject>& jweb_contents,
|
| const JavaParamRef<jobject>& jview_android_delegate,
|
| jlong jwindow_android,
|
| + jfloat dipScale,
|
| const JavaParamRef<jobject>& retained_objects_set) {
|
| WebContentsImpl* web_contents = static_cast<WebContentsImpl*>(
|
| WebContents::FromJavaWebContents(jweb_contents));
|
| @@ -1549,8 +1566,9 @@ jlong Init(JNIEnv* env,
|
| DCHECK(window_android);
|
| window_android->AddChild(view_android);
|
|
|
| + // TODO: pass dipScale.
|
| ContentViewCoreImpl* view = new ContentViewCoreImpl(
|
| - env, obj, web_contents, retained_objects_set);
|
| + env, obj, web_contents, dipScale, retained_objects_set);
|
| return reinterpret_cast<intptr_t>(view);
|
| }
|
|
|
|
|