Chromium Code Reviews| Index: content/renderer/render_widget.cc |
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
| index 82d7364658e253565bef5d04aeb5d9edc32f8548..c1be13ffe86ebc9f899f07cb5dbb0ed8b79cc525 100644 |
| --- a/content/renderer/render_widget.cc |
| +++ b/content/renderer/render_widget.cc |
| @@ -588,6 +588,7 @@ void RenderWidget::OnEnableDeviceEmulation( |
| resize_params.display_mode = display_mode_; |
| screen_metrics_emulator_.reset(new RenderWidgetScreenMetricsEmulator( |
| this, params, resize_params, view_screen_rect_, window_screen_rect_)); |
| + screen_metrics_emulator_->Apply(); |
| } else { |
| screen_metrics_emulator_->ChangeEmulationParams(params); |
| } |
| @@ -1099,8 +1100,11 @@ void RenderWidget::Resize(const ResizeParams& params) { |
| top_controls_shrink_blink_size_); |
| if (resized) { |
| - gfx::Size new_widget_size = |
| - IsUseZoomForDSFEnabled() ? physical_backing_size_ : size_; |
| + gfx::Size new_widget_size = size_; |
| + if (IsUseZoomForDSFEnabled()) { |
| + new_widget_size = gfx::ScaleToCeiledSize(new_widget_size, |
| + GetOriginalDeviceScaleFactor()); |
| + } |
| // When resizing, we want to wait to paint before ACK'ing the resize. This |
| // ensures that we only resize as fast as we can paint. We only need to |
| // send an ACK if we are resized to a non-empty rect. |
| @@ -1109,8 +1113,9 @@ void RenderWidget::Resize(const ResizeParams& params) { |
| WebSize visual_viewport_size; |
| if (IsUseZoomForDSFEnabled()) { |
| - visual_viewport_size = gfx::ScaleToCeiledSize(params.visible_viewport_size, |
| - device_scale_factor_); |
| + visual_viewport_size = gfx::ScaleToCeiledSize( |
| + params.visible_viewport_size, |
| + GetOriginalDeviceScaleFactor()); |
| } else { |
| visual_viewport_size = visible_viewport_size_; |
| } |
| @@ -1477,9 +1482,8 @@ void RenderWidget::OnImeConfirmComposition(const base::string16& text, |
| void RenderWidget::OnDeviceScaleFactorChanged() { |
| if (!compositor_) |
| return; |
| - |
| if (IsUseZoomForDSFEnabled()) |
| - compositor_->SetPaintedDeviceScaleFactor(device_scale_factor_); |
| + compositor_->SetPaintedDeviceScaleFactor(GetOriginalDeviceScaleFactor()); |
|
dgozman
2016/02/29 20:26:20
These calls start to look messy. When do I use |de
oshima
2016/02/29 21:28:03
Compositor should always use the original scale fa
dgozman
2016/02/29 21:38:41
Are you sure about merging this into 50? Sounds sc
oshima
2016/02/29 22:59:50
This one isn't refactoreing, and we need this to m
|
| else |
| compositor_->setDeviceScaleFactor(device_scale_factor_); |
| } |
| @@ -1570,7 +1574,7 @@ void RenderWidget::UpdateCompositionInfo(bool should_update_range) { |
| void RenderWidget::convertViewportToWindow(blink::WebRect* rect) { |
| if (IsUseZoomForDSFEnabled()) { |
| - float reverse = 1 / device_scale_factor_; |
| + float reverse = 1 / GetOriginalDeviceScaleFactor(); |
| // 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 = |
| @@ -1584,10 +1588,10 @@ void RenderWidget::convertViewportToWindow(blink::WebRect* rect) { |
| void RenderWidget::convertWindowToViewport(blink::WebFloatRect* rect) { |
| if (IsUseZoomForDSFEnabled()) { |
| - rect->x *= device_scale_factor_; |
| - rect->y *= device_scale_factor_; |
| - rect->width *= device_scale_factor_; |
| - rect->height *= device_scale_factor_; |
| + rect->x *= GetOriginalDeviceScaleFactor(); |
| + rect->y *= GetOriginalDeviceScaleFactor(); |
| + rect->width *= GetOriginalDeviceScaleFactor(); |
| + rect->height *= GetOriginalDeviceScaleFactor(); |
| } |
| } |
| @@ -2118,4 +2122,11 @@ void RenderWidget::OnWaitNextFrameForTests(int routing_id) { |
| MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE); |
| } |
| +float RenderWidget::GetOriginalDeviceScaleFactor() const { |
| + return |
| + screen_metrics_emulator_ ? |
| + screen_metrics_emulator_->original_screen_info().deviceScaleFactor : |
| + device_scale_factor_; |
| +} |
| + |
| } // namespace content |