Index: content/browser/devtools/renderer_overrides_handler.cc |
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc |
index cfabd7f294af94ba055256f437391bb6471737db..dff8d973836356fa847ce75c6056a7ef5fdab9c4 100644 |
--- a/content/browser/devtools/renderer_overrides_handler.cc |
+++ b/content/browser/devtools/renderer_overrides_handler.cc |
@@ -232,14 +232,10 @@ void RendererOverridesHandler::InnerSwapCompositorFrame() { |
// TODO(vkuzkokov): do not use previous frame metadata. |
cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; |
- float page_scale = metadata.page_scale_factor; |
gfx::SizeF viewport_size_dip = gfx::ScaleSize( |
- metadata.scrollable_viewport_size, page_scale); |
- |
- float total_bar_height_dip = metadata.location_bar_content_translation.y() + |
- metadata.overdraw_bottom_height; |
- gfx::SizeF screen_size_dip(viewport_size_dip.width(), |
- viewport_size_dip.height() + total_bar_height_dip); |
+ metadata.scrollable_viewport_size, metadata.page_scale_factor); |
+ gfx::SizeF screen_size_dip = gfx::ScaleSize(view->GetPhysicalBackingSize(), |
+ 1 / metadata.device_scale_factor); |
std::string format; |
int quality = kDefaultScreenshotQuality; |
@@ -638,6 +634,16 @@ void RendererOverridesHandler::ScreencastFrameCaptured( |
if (metadata.device_scale_factor != 0) { |
base::DictionaryValue* response_metadata = new base::DictionaryValue(); |
+ RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
+ host_->GetView()); |
+ if (!view) |
+ return; |
+ |
+ gfx::SizeF viewport_size_dip = gfx::ScaleSize( |
+ metadata.scrollable_viewport_size, metadata.page_scale_factor); |
+ gfx::SizeF screen_size_dip = gfx::ScaleSize( |
+ view->GetPhysicalBackingSize(), 1 / metadata.device_scale_factor); |
+ |
response_metadata->SetDouble( |
devtools::Page::ScreencastFrameMetadata::kParamDeviceScaleFactor, |
metadata.device_scale_factor); |
@@ -655,7 +661,9 @@ void RendererOverridesHandler::ScreencastFrameCaptured( |
metadata.location_bar_content_translation.y()); |
response_metadata->SetDouble( |
devtools::Page::ScreencastFrameMetadata::kParamOffsetBottom, |
- metadata.overdraw_bottom_height); |
+ screen_size_dip.height() - |
+ metadata.location_bar_content_translation.y() - |
+ viewport_size_dip.height()); |
base::DictionaryValue* viewport = new base::DictionaryValue(); |
viewport->SetDouble(devtools::DOM::Rect::kParamX, |
@@ -669,16 +677,12 @@ void RendererOverridesHandler::ScreencastFrameCaptured( |
response_metadata->Set( |
devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport); |
- gfx::SizeF viewport_size_dip = gfx::ScaleSize( |
- metadata.scrollable_viewport_size, metadata.page_scale_factor); |
response_metadata->SetDouble( |
devtools::Page::ScreencastFrameMetadata::kParamDeviceWidth, |
- viewport_size_dip.width()); |
+ screen_size_dip.width()); |
response_metadata->SetDouble( |
devtools::Page::ScreencastFrameMetadata::kParamDeviceHeight, |
- viewport_size_dip.height() + |
- metadata.location_bar_content_translation.y() + |
- metadata.overdraw_bottom_height); |
+ screen_size_dip.height()); |
response_metadata->SetDouble( |
devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetX, |
metadata.root_scroll_offset.x()); |