Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/devtools/renderer_overrides_handler.h" | 5 #include "content/browser/devtools/renderer_overrides_handler.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/barrier_closure.h" | 10 #include "base/barrier_closure.h" |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 192 if (!host->GetView()) | 192 if (!host->GetView()) |
| 193 return; | 193 return; |
| 194 | 194 |
| 195 last_frame_time_ = base::TimeTicks::Now(); | 195 last_frame_time_ = base::TimeTicks::Now(); |
| 196 | 196 |
| 197 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | 197 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
| 198 host->GetView()); | 198 host->GetView()); |
| 199 // TODO(vkuzkokov): do not use previous frame metadata. | 199 // TODO(vkuzkokov): do not use previous frame metadata. |
| 200 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; | 200 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; |
| 201 | 201 |
| 202 float page_scale = metadata.page_scale_factor; | |
| 203 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | 202 gfx::SizeF viewport_size_dip = gfx::ScaleSize( |
| 204 metadata.scrollable_viewport_size, page_scale); | 203 metadata.scrollable_viewport_size, metadata.page_scale_factor); |
| 205 | 204 gfx::SizeF screen_size_dip = gfx::ScaleSize(view->GetPhysicalBackingSize(), |
| 206 float total_bar_height_dip = metadata.location_bar_content_translation.y() + | 205 1 / metadata.device_scale_factor); |
| 207 metadata.overdraw_bottom_height; | |
| 208 gfx::SizeF screen_size_dip(viewport_size_dip.width(), | |
| 209 viewport_size_dip.height() + total_bar_height_dip); | |
| 210 | 206 |
| 211 std::string format; | 207 std::string format; |
| 212 int quality = kDefaultScreenshotQuality; | 208 int quality = kDefaultScreenshotQuality; |
| 213 double scale = 1; | 209 double scale = 1; |
| 214 double max_width = -1; | 210 double max_width = -1; |
| 215 double max_height = -1; | 211 double max_height = -1; |
| 216 base::DictionaryValue* params = screencast_command_->params(); | 212 base::DictionaryValue* params = screencast_command_->params(); |
| 217 if (params) { | 213 if (params) { |
| 218 params->GetString(devtools::Page::startScreencast::kParamFormat, | 214 params->GetString(devtools::Page::startScreencast::kParamFormat, |
| 219 &format); | 215 &format); |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 563 &base_64_data); | 559 &base_64_data); |
| 564 | 560 |
| 565 base::DictionaryValue* response = new base::DictionaryValue(); | 561 base::DictionaryValue* response = new base::DictionaryValue(); |
| 566 response->SetString(devtools::Page::screencastFrame::kParamData, | 562 response->SetString(devtools::Page::screencastFrame::kParamData, |
| 567 base_64_data); | 563 base_64_data); |
| 568 | 564 |
| 569 // Consider metadata empty in case it has no device scale factor. | 565 // Consider metadata empty in case it has no device scale factor. |
| 570 if (metadata.device_scale_factor != 0) { | 566 if (metadata.device_scale_factor != 0) { |
| 571 base::DictionaryValue* response_metadata = new base::DictionaryValue(); | 567 base::DictionaryValue* response_metadata = new base::DictionaryValue(); |
| 572 | 568 |
| 569 RenderViewHost* host = GetRenderViewHostImpl(); | |
| 570 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | |
| 571 host->GetView()); | |
| 572 if (!view) | |
| 573 return; | |
| 574 | |
| 575 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | |
| 576 metadata.scrollable_viewport_size, metadata.page_scale_factor); | |
| 577 gfx::SizeF screen_size_dip = gfx::ScaleSize( | |
| 578 view->GetPhysicalBackingSize(), 1 / metadata.device_scale_factor); | |
|
dgozman
2014/08/19 13:05:47
Does GetPhysicalBackingSize() change when top cont
aelias_OOO_until_Jul13
2014/08/19 21:28:39
It doesn't change. GetPhysicalBackingSize returns
dgozman
2014/08/20 04:47:01
Great! I remember we erroneously called method her
| |
| 579 | |
| 573 response_metadata->SetDouble( | 580 response_metadata->SetDouble( |
| 574 devtools::Page::ScreencastFrameMetadata::kParamDeviceScaleFactor, | 581 devtools::Page::ScreencastFrameMetadata::kParamDeviceScaleFactor, |
| 575 metadata.device_scale_factor); | 582 metadata.device_scale_factor); |
| 576 response_metadata->SetDouble( | 583 response_metadata->SetDouble( |
| 577 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactor, | 584 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactor, |
| 578 metadata.page_scale_factor); | 585 metadata.page_scale_factor); |
| 579 response_metadata->SetDouble( | 586 response_metadata->SetDouble( |
| 580 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMin, | 587 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMin, |
| 581 metadata.min_page_scale_factor); | 588 metadata.min_page_scale_factor); |
| 582 response_metadata->SetDouble( | 589 response_metadata->SetDouble( |
| 583 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMax, | 590 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMax, |
| 584 metadata.max_page_scale_factor); | 591 metadata.max_page_scale_factor); |
| 585 response_metadata->SetDouble( | 592 response_metadata->SetDouble( |
| 586 devtools::Page::ScreencastFrameMetadata::kParamOffsetTop, | 593 devtools::Page::ScreencastFrameMetadata::kParamOffsetTop, |
| 587 metadata.location_bar_content_translation.y()); | 594 metadata.location_bar_content_translation.y()); |
| 588 response_metadata->SetDouble( | 595 response_metadata->SetDouble( |
| 589 devtools::Page::ScreencastFrameMetadata::kParamOffsetBottom, | 596 devtools::Page::ScreencastFrameMetadata::kParamOffsetBottom, |
| 590 metadata.overdraw_bottom_height); | 597 screen_size_dip.height() - |
| 598 metadata.location_bar_content_translation.y() - | |
| 599 viewport_size_dip.height()); | |
| 591 | 600 |
| 592 base::DictionaryValue* viewport = new base::DictionaryValue(); | 601 base::DictionaryValue* viewport = new base::DictionaryValue(); |
| 593 viewport->SetDouble(devtools::DOM::Rect::kParamX, | 602 viewport->SetDouble(devtools::DOM::Rect::kParamX, |
| 594 metadata.root_scroll_offset.x()); | 603 metadata.root_scroll_offset.x()); |
| 595 viewport->SetDouble(devtools::DOM::Rect::kParamY, | 604 viewport->SetDouble(devtools::DOM::Rect::kParamY, |
| 596 metadata.root_scroll_offset.y()); | 605 metadata.root_scroll_offset.y()); |
| 597 viewport->SetDouble(devtools::DOM::Rect::kParamWidth, | 606 viewport->SetDouble(devtools::DOM::Rect::kParamWidth, |
| 598 metadata.scrollable_viewport_size.width()); | 607 metadata.scrollable_viewport_size.width()); |
| 599 viewport->SetDouble(devtools::DOM::Rect::kParamHeight, | 608 viewport->SetDouble(devtools::DOM::Rect::kParamHeight, |
| 600 metadata.scrollable_viewport_size.height()); | 609 metadata.scrollable_viewport_size.height()); |
| 601 response_metadata->Set( | 610 response_metadata->Set( |
| 602 devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport); | 611 devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport); |
| 603 | 612 |
| 604 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | |
| 605 metadata.scrollable_viewport_size, metadata.page_scale_factor); | |
| 606 response_metadata->SetDouble( | 613 response_metadata->SetDouble( |
| 607 devtools::Page::ScreencastFrameMetadata::kParamDeviceWidth, | 614 devtools::Page::ScreencastFrameMetadata::kParamDeviceWidth, |
| 608 viewport_size_dip.width()); | 615 screen_size_dip.width()); |
| 609 response_metadata->SetDouble( | 616 response_metadata->SetDouble( |
| 610 devtools::Page::ScreencastFrameMetadata::kParamDeviceHeight, | 617 devtools::Page::ScreencastFrameMetadata::kParamDeviceHeight, |
| 611 viewport_size_dip.height() + | 618 screen_size_dip.height()); |
| 612 metadata.location_bar_content_translation.y() + | |
| 613 metadata.overdraw_bottom_height); | |
| 614 response_metadata->SetDouble( | 619 response_metadata->SetDouble( |
| 615 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetX, | 620 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetX, |
| 616 metadata.root_scroll_offset.x()); | 621 metadata.root_scroll_offset.x()); |
| 617 response_metadata->SetDouble( | 622 response_metadata->SetDouble( |
| 618 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetY, | 623 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetY, |
| 619 metadata.root_scroll_offset.y()); | 624 metadata.root_scroll_offset.y()); |
| 620 | 625 |
| 621 response->Set(devtools::Page::screencastFrame::kParamMetadata, | 626 response->Set(devtools::Page::screencastFrame::kParamMetadata, |
| 622 response_metadata); | 627 response_metadata); |
| 623 } | 628 } |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 961 host->ForwardMouseEvent(mouse_event); | 966 host->ForwardMouseEvent(mouse_event); |
| 962 return command->SuccessResponse(NULL); | 967 return command->SuccessResponse(NULL); |
| 963 } | 968 } |
| 964 | 969 |
| 965 RenderViewHostImpl* RendererOverridesHandler::GetRenderViewHostImpl() { | 970 RenderViewHostImpl* RendererOverridesHandler::GetRenderViewHostImpl() { |
| 966 return static_cast<RenderViewHostImpl*>( | 971 return static_cast<RenderViewHostImpl*>( |
| 967 agent_->GetWebContents()->GetRenderViewHost()); | 972 agent_->GetWebContents()->GetRenderViewHost()); |
| 968 } | 973 } |
| 969 | 974 |
| 970 } // namespace content | 975 } // namespace content |
| OLD | NEW |