Commit f0f9de6c authored by Tien-Ren Chen's avatar Tien-Ren Chen Committed by Commit Bot

Propagate device scale factor to BrowserCompositorMac

With the new layout test flag --enable-display-compositor-pixel-dump,
BrowserCompositorMac gets desired viewport size in device pixel from the renderer
through BrowserCompositorMac::SynchronizeVisualProperties(), and convert that
from device pixel to DIP and cache it. However BrowserCompositorMac doesn't know
the overriden device scale factor by test scripts, thus the DIP viewport size
will not be properly divided by the overriden device scale factor.

When next time RenderWidgetHostImpl::SynchronizeVisualProperties is invoked,
it will query the current viewport size, we would get the already scaled value
and multiply it by the overriden device scale factor again. This makes the
viewport size keeps growing until it exceeds the maximum texture size and crash.

This CL makes BrowserCompositorMac to use the device scale factor from the
render frame metadata, so the correct DIP size of the viewport can be derived.

BUG=667551

Change-Id: I21f042ba8c158ce139d1ca6693d135b2fbb7b852
Reviewed-on: https://chromium-review.googlesource.com/1080031
Commit-Queue: ccameron <ccameron@chromium.org>
Reviewed-by: default avatarccameron <ccameron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563056}
parent 3a4236be
......@@ -90,6 +90,7 @@ class CONTENT_EXPORT BrowserCompositorMac : public DelegatedFrameHostClient,
// Update the renderer's SurfaceId to reflect |new_size_in_pixels| in
// anticipation of the NSView resizing during auto-resize.
void SynchronizeVisualProperties(
float new_device_scale_factor,
const gfx::Size& new_size_in_pixels,
const viz::LocalSurfaceId& child_allocated_local_surface_id);
......
......@@ -339,10 +339,12 @@ bool BrowserCompositorMac::UpdateNSViewAndDisplay(
}
void BrowserCompositorMac::SynchronizeVisualProperties(
float new_device_scale_factor,
const gfx::Size& new_size_in_pixels,
const viz::LocalSurfaceId& child_allocated_local_surface_id) {
if (dfh_local_surface_id_allocator_.UpdateFromChild(
child_allocated_local_surface_id)) {
dfh_display_.set_device_scale_factor(new_device_scale_factor);
dfh_size_dip_ = gfx::ConvertSizeToDIP(dfh_display_.device_scale_factor(),
new_size_in_pixels);
dfh_size_pixels_ = new_size_in_pixels;
......
......@@ -746,7 +746,7 @@ void RenderWidgetHostViewMac::UpdateNeedsBeginFramesInternal() {
void RenderWidgetHostViewMac::OnDidUpdateVisualPropertiesComplete(
const cc::RenderFrameMetadata& metadata) {
browser_compositor_->SynchronizeVisualProperties(
metadata.viewport_size_in_pixels,
metadata.device_scale_factor, metadata.viewport_size_in_pixels,
metadata.local_surface_id.value_or(viz::LocalSurfaceId()));
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment