Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1779)

Unified Diff: content/renderer/render_widget.cc

Issue 1737733002: [DevTools] Handle emulated device scale factor and original device scale factor properly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698