| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index cb0944417a612a42d4176a4e3642d324ebeeec02..f5f5bac72ea721dfdb93663481174f924614b6d5 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -879,9 +879,8 @@ void RenderWidget::Resize(const gfx::Size& new_size,
|
| WebSize visual_viewport_size;
|
|
|
| if (IsUseZoomForDSFEnabled()) {
|
| - gfx::SizeF scaled_visible_viewport_size =
|
| - gfx::ScaleSize(gfx::SizeF(visible_viewport_size), device_scale_factor_);
|
| - visual_viewport_size = gfx::ToCeiledSize(scaled_visible_viewport_size);
|
| + visual_viewport_size =
|
| + gfx::ScaleToCeiledSize(visible_viewport_size, device_scale_factor_);
|
| } else {
|
| visual_viewport_size = visible_viewport_size_;
|
| }
|
| @@ -1456,7 +1455,7 @@ void RenderWidget::initializeLayerTreeView() {
|
|
|
| compositor_ = RenderWidgetCompositor::Create(this, compositor_deps_);
|
| compositor_->setViewportSize(physical_backing_size_);
|
| -
|
| + OnDeviceScaleFactorChanged();
|
| // For background pages and certain tests, we don't want to trigger
|
| // OutputSurface creation.
|
| if (compositor_never_visible_ || !RenderThreadImpl::current())
|
| @@ -1712,9 +1711,8 @@ void RenderWidget::setToolTipText(const blink::WebString& text,
|
| Send(new ViewHostMsg_SetTooltipText(routing_id_, text, hint));
|
| }
|
|
|
| -void RenderWidget::setWindowRect(const WebRect& rect) {
|
| - // TODO(oshima): Scale back to DIP coordinates.
|
| - WebRect window_rect = rect;
|
| +void RenderWidget::setWindowRect(const WebRect& rect_in_screen) {
|
| + WebRect window_rect = rect_in_screen;
|
| if (popup_origin_scale_for_emulation_) {
|
| float scale = popup_origin_scale_for_emulation_;
|
| window_rect.x = popup_screen_origin_for_emulation_.x() +
|
| @@ -1792,6 +1790,14 @@ void RenderWidget::OnImeConfirmComposition(const base::string16& text,
|
| UpdateCompositionInfo(true);
|
| }
|
|
|
| +void RenderWidget::OnDeviceScaleFactorChanged() {
|
| + DCHECK(compositor_);
|
| + if (IsUseZoomForDSFEnabled())
|
| + compositor_->SetPaintedDeviceScaleFactor(device_scale_factor_);
|
| + else
|
| + compositor_->setDeviceScaleFactor(device_scale_factor_);
|
| +}
|
| +
|
| void RenderWidget::OnRepaint(gfx::Size size_to_paint) {
|
| // During shutdown we can just ignore this message.
|
| if (!webwidget_)
|
| @@ -1850,7 +1856,7 @@ void RenderWidget::showImeIfNeeded() {
|
| void RenderWidget::convertViewportToWindow(blink::WebRect* rect) {
|
| if (IsUseZoomForDSFEnabled()) {
|
| float reverse = 1 / device_scale_factor_;
|
| - // TODO(oshima): We may wait to allow pixel precision here as the the
|
| + // TODO(oshima): We may need to allow pixel precision here as the the
|
| // anchor element can be placed at half pixel.
|
| gfx::Rect window_rect =
|
| gfx::ScaleToEnclosedRect(gfx::Rect(*rect), reverse);
|
| @@ -1927,6 +1933,9 @@ void RenderWidget::SetDeviceScaleFactor(float device_scale_factor) {
|
| return;
|
|
|
| device_scale_factor_ = device_scale_factor;
|
| +
|
| + OnDeviceScaleFactorChanged();
|
| +
|
| ScheduleComposite();
|
| }
|
|
|
|
|