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 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 if (!host_ || !host_->GetView()) | 225 if (!host_ || !host_->GetView()) |
226 return; | 226 return; |
227 | 227 |
228 last_frame_time_ = base::TimeTicks::Now(); | 228 last_frame_time_ = base::TimeTicks::Now(); |
229 | 229 |
230 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | 230 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
231 host_->GetView()); | 231 host_->GetView()); |
232 // TODO(vkuzkokov): do not use previous frame metadata. | 232 // TODO(vkuzkokov): do not use previous frame metadata. |
233 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; | 233 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; |
234 | 234 |
235 float page_scale = metadata.page_scale_factor; | |
236 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | 235 gfx::SizeF viewport_size_dip = gfx::ScaleSize( |
237 metadata.scrollable_viewport_size, page_scale); | 236 metadata.scrollable_viewport_size, metadata.page_scale_factor); |
238 | 237 gfx::SizeF screen_size_dip = gfx::ScaleSize(view->GetPhysicalBackingSize(), |
239 float total_bar_height_dip = metadata.location_bar_content_translation.y() + | 238 1 / metadata.device_scale_factor); |
240 metadata.overdraw_bottom_height; | |
241 gfx::SizeF screen_size_dip(viewport_size_dip.width(), | |
242 viewport_size_dip.height() + total_bar_height_dip); | |
243 | 239 |
244 std::string format; | 240 std::string format; |
245 int quality = kDefaultScreenshotQuality; | 241 int quality = kDefaultScreenshotQuality; |
246 double scale = 1; | 242 double scale = 1; |
247 double max_width = -1; | 243 double max_width = -1; |
248 double max_height = -1; | 244 double max_height = -1; |
249 base::DictionaryValue* params = screencast_command_->params(); | 245 base::DictionaryValue* params = screencast_command_->params(); |
250 if (params) { | 246 if (params) { |
251 params->GetString(devtools::Page::startScreencast::kParamFormat, | 247 params->GetString(devtools::Page::startScreencast::kParamFormat, |
252 &format); | 248 &format); |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 &base_64_data); | 627 &base_64_data); |
632 | 628 |
633 base::DictionaryValue* response = new base::DictionaryValue(); | 629 base::DictionaryValue* response = new base::DictionaryValue(); |
634 response->SetString(devtools::Page::screencastFrame::kParamData, | 630 response->SetString(devtools::Page::screencastFrame::kParamData, |
635 base_64_data); | 631 base_64_data); |
636 | 632 |
637 // Consider metadata empty in case it has no device scale factor. | 633 // Consider metadata empty in case it has no device scale factor. |
638 if (metadata.device_scale_factor != 0) { | 634 if (metadata.device_scale_factor != 0) { |
639 base::DictionaryValue* response_metadata = new base::DictionaryValue(); | 635 base::DictionaryValue* response_metadata = new base::DictionaryValue(); |
640 | 636 |
| 637 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
| 638 host_->GetView()); |
| 639 if (!view) |
| 640 return; |
| 641 |
| 642 gfx::SizeF viewport_size_dip = gfx::ScaleSize( |
| 643 metadata.scrollable_viewport_size, metadata.page_scale_factor); |
| 644 gfx::SizeF screen_size_dip = gfx::ScaleSize( |
| 645 view->GetPhysicalBackingSize(), 1 / metadata.device_scale_factor); |
| 646 |
641 response_metadata->SetDouble( | 647 response_metadata->SetDouble( |
642 devtools::Page::ScreencastFrameMetadata::kParamDeviceScaleFactor, | 648 devtools::Page::ScreencastFrameMetadata::kParamDeviceScaleFactor, |
643 metadata.device_scale_factor); | 649 metadata.device_scale_factor); |
644 response_metadata->SetDouble( | 650 response_metadata->SetDouble( |
645 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactor, | 651 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactor, |
646 metadata.page_scale_factor); | 652 metadata.page_scale_factor); |
647 response_metadata->SetDouble( | 653 response_metadata->SetDouble( |
648 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMin, | 654 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMin, |
649 metadata.min_page_scale_factor); | 655 metadata.min_page_scale_factor); |
650 response_metadata->SetDouble( | 656 response_metadata->SetDouble( |
651 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMax, | 657 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMax, |
652 metadata.max_page_scale_factor); | 658 metadata.max_page_scale_factor); |
653 response_metadata->SetDouble( | 659 response_metadata->SetDouble( |
654 devtools::Page::ScreencastFrameMetadata::kParamOffsetTop, | 660 devtools::Page::ScreencastFrameMetadata::kParamOffsetTop, |
655 metadata.location_bar_content_translation.y()); | 661 metadata.location_bar_content_translation.y()); |
656 response_metadata->SetDouble( | 662 response_metadata->SetDouble( |
657 devtools::Page::ScreencastFrameMetadata::kParamOffsetBottom, | 663 devtools::Page::ScreencastFrameMetadata::kParamOffsetBottom, |
658 metadata.overdraw_bottom_height); | 664 screen_size_dip.height() - |
| 665 metadata.location_bar_content_translation.y() - |
| 666 viewport_size_dip.height()); |
659 | 667 |
660 base::DictionaryValue* viewport = new base::DictionaryValue(); | 668 base::DictionaryValue* viewport = new base::DictionaryValue(); |
661 viewport->SetDouble(devtools::DOM::Rect::kParamX, | 669 viewport->SetDouble(devtools::DOM::Rect::kParamX, |
662 metadata.root_scroll_offset.x()); | 670 metadata.root_scroll_offset.x()); |
663 viewport->SetDouble(devtools::DOM::Rect::kParamY, | 671 viewport->SetDouble(devtools::DOM::Rect::kParamY, |
664 metadata.root_scroll_offset.y()); | 672 metadata.root_scroll_offset.y()); |
665 viewport->SetDouble(devtools::DOM::Rect::kParamWidth, | 673 viewport->SetDouble(devtools::DOM::Rect::kParamWidth, |
666 metadata.scrollable_viewport_size.width()); | 674 metadata.scrollable_viewport_size.width()); |
667 viewport->SetDouble(devtools::DOM::Rect::kParamHeight, | 675 viewport->SetDouble(devtools::DOM::Rect::kParamHeight, |
668 metadata.scrollable_viewport_size.height()); | 676 metadata.scrollable_viewport_size.height()); |
669 response_metadata->Set( | 677 response_metadata->Set( |
670 devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport); | 678 devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport); |
671 | 679 |
672 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | |
673 metadata.scrollable_viewport_size, metadata.page_scale_factor); | |
674 response_metadata->SetDouble( | 680 response_metadata->SetDouble( |
675 devtools::Page::ScreencastFrameMetadata::kParamDeviceWidth, | 681 devtools::Page::ScreencastFrameMetadata::kParamDeviceWidth, |
676 viewport_size_dip.width()); | 682 screen_size_dip.width()); |
677 response_metadata->SetDouble( | 683 response_metadata->SetDouble( |
678 devtools::Page::ScreencastFrameMetadata::kParamDeviceHeight, | 684 devtools::Page::ScreencastFrameMetadata::kParamDeviceHeight, |
679 viewport_size_dip.height() + | 685 screen_size_dip.height()); |
680 metadata.location_bar_content_translation.y() + | |
681 metadata.overdraw_bottom_height); | |
682 response_metadata->SetDouble( | 686 response_metadata->SetDouble( |
683 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetX, | 687 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetX, |
684 metadata.root_scroll_offset.x()); | 688 metadata.root_scroll_offset.x()); |
685 response_metadata->SetDouble( | 689 response_metadata->SetDouble( |
686 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetY, | 690 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetY, |
687 metadata.root_scroll_offset.y()); | 691 metadata.root_scroll_offset.y()); |
688 | 692 |
689 response->Set(devtools::Page::screencastFrame::kParamMetadata, | 693 response->Set(devtools::Page::screencastFrame::kParamMetadata, |
690 response_metadata); | 694 response_metadata); |
691 } | 695 } |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1275 return; | 1279 return; |
1276 bool enabled = touch_emulation_enabled_ || screencast_command_; | 1280 bool enabled = touch_emulation_enabled_ || screencast_command_; |
1277 host_->SetTouchEventEmulationEnabled(enabled); | 1281 host_->SetTouchEventEmulationEnabled(enabled); |
1278 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( | 1282 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( |
1279 WebContents::FromRenderViewHost(host_)); | 1283 WebContents::FromRenderViewHost(host_)); |
1280 if (web_contents) | 1284 if (web_contents) |
1281 web_contents->SetForceDisableOverscrollContent(enabled); | 1285 web_contents->SetForceDisableOverscrollContent(enabled); |
1282 } | 1286 } |
1283 | 1287 |
1284 } // namespace content | 1288 } // namespace content |
OLD | NEW |