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 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
224 if (!host_ || !host_->GetView()) | 224 if (!host_ || !host_->GetView()) |
225 return; | 225 return; |
226 | 226 |
227 last_frame_time_ = base::TimeTicks::Now(); | 227 last_frame_time_ = base::TimeTicks::Now(); |
228 | 228 |
229 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | 229 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
230 host_->GetView()); | 230 host_->GetView()); |
231 // TODO(vkuzkokov): do not use previous frame metadata. | 231 // TODO(vkuzkokov): do not use previous frame metadata. |
232 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; | 232 cc::CompositorFrameMetadata& metadata = last_compositor_frame_metadata_; |
233 | 233 |
234 float page_scale = metadata.page_scale_factor; | |
235 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | 234 gfx::SizeF viewport_size_dip = gfx::ScaleSize( |
236 metadata.scrollable_viewport_size, page_scale); | 235 metadata.scrollable_viewport_size, metadata.page_scale_factor); |
237 | 236 gfx::SizeF screen_size_dip = gfx::ScaleSize(view->GetPhysicalBackingSize(), |
238 float total_bar_height_dip = metadata.location_bar_content_translation.y() + | 237 1 / metadata.device_scale_factor); |
239 metadata.overdraw_bottom_height; | |
240 gfx::SizeF screen_size_dip(viewport_size_dip.width(), | |
241 viewport_size_dip.height() + total_bar_height_dip); | |
242 | 238 |
243 std::string format; | 239 std::string format; |
244 int quality = kDefaultScreenshotQuality; | 240 int quality = kDefaultScreenshotQuality; |
245 double scale = 1; | 241 double scale = 1; |
246 double max_width = -1; | 242 double max_width = -1; |
247 double max_height = -1; | 243 double max_height = -1; |
248 base::DictionaryValue* params = screencast_command_->params(); | 244 base::DictionaryValue* params = screencast_command_->params(); |
249 if (params) { | 245 if (params) { |
250 params->GetString(devtools::Page::startScreencast::kParamFormat, | 246 params->GetString(devtools::Page::startScreencast::kParamFormat, |
251 &format); | 247 &format); |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
614 &base_64_data); | 610 &base_64_data); |
615 | 611 |
616 base::DictionaryValue* response = new base::DictionaryValue(); | 612 base::DictionaryValue* response = new base::DictionaryValue(); |
617 response->SetString(devtools::Page::screencastFrame::kParamData, | 613 response->SetString(devtools::Page::screencastFrame::kParamData, |
618 base_64_data); | 614 base_64_data); |
619 | 615 |
620 // Consider metadata empty in case it has no device scale factor. | 616 // Consider metadata empty in case it has no device scale factor. |
621 if (metadata.device_scale_factor != 0) { | 617 if (metadata.device_scale_factor != 0) { |
622 base::DictionaryValue* response_metadata = new base::DictionaryValue(); | 618 base::DictionaryValue* response_metadata = new base::DictionaryValue(); |
623 | 619 |
620 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | |
621 host_->GetView()); | |
piman
2014/08/19 23:58:45
nit: is the cast safe in tests? (sorry, I'm not fa
aelias_OOO_until_Jul13
2014/08/20 03:09:46
There are similar casts elsewhere in this file. d
dgozman
2014/08/20 04:47:01
We don't use mock views in tests for this function
| |
622 if (!view) | |
623 return; | |
624 | |
625 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | |
626 metadata.scrollable_viewport_size, metadata.page_scale_factor); | |
627 gfx::SizeF screen_size_dip = gfx::ScaleSize( | |
628 view->GetPhysicalBackingSize(), 1 / metadata.device_scale_factor); | |
629 | |
624 response_metadata->SetDouble( | 630 response_metadata->SetDouble( |
625 devtools::Page::ScreencastFrameMetadata::kParamDeviceScaleFactor, | 631 devtools::Page::ScreencastFrameMetadata::kParamDeviceScaleFactor, |
626 metadata.device_scale_factor); | 632 metadata.device_scale_factor); |
627 response_metadata->SetDouble( | 633 response_metadata->SetDouble( |
628 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactor, | 634 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactor, |
629 metadata.page_scale_factor); | 635 metadata.page_scale_factor); |
630 response_metadata->SetDouble( | 636 response_metadata->SetDouble( |
631 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMin, | 637 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMin, |
632 metadata.min_page_scale_factor); | 638 metadata.min_page_scale_factor); |
633 response_metadata->SetDouble( | 639 response_metadata->SetDouble( |
634 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMax, | 640 devtools::Page::ScreencastFrameMetadata::kParamPageScaleFactorMax, |
635 metadata.max_page_scale_factor); | 641 metadata.max_page_scale_factor); |
636 response_metadata->SetDouble( | 642 response_metadata->SetDouble( |
637 devtools::Page::ScreencastFrameMetadata::kParamOffsetTop, | 643 devtools::Page::ScreencastFrameMetadata::kParamOffsetTop, |
638 metadata.location_bar_content_translation.y()); | 644 metadata.location_bar_content_translation.y()); |
639 response_metadata->SetDouble( | 645 response_metadata->SetDouble( |
640 devtools::Page::ScreencastFrameMetadata::kParamOffsetBottom, | 646 devtools::Page::ScreencastFrameMetadata::kParamOffsetBottom, |
641 metadata.overdraw_bottom_height); | 647 screen_size_dip.height() - |
648 metadata.location_bar_content_translation.y() - | |
649 viewport_size_dip.height()); | |
642 | 650 |
643 base::DictionaryValue* viewport = new base::DictionaryValue(); | 651 base::DictionaryValue* viewport = new base::DictionaryValue(); |
644 viewport->SetDouble(devtools::DOM::Rect::kParamX, | 652 viewport->SetDouble(devtools::DOM::Rect::kParamX, |
645 metadata.root_scroll_offset.x()); | 653 metadata.root_scroll_offset.x()); |
646 viewport->SetDouble(devtools::DOM::Rect::kParamY, | 654 viewport->SetDouble(devtools::DOM::Rect::kParamY, |
647 metadata.root_scroll_offset.y()); | 655 metadata.root_scroll_offset.y()); |
648 viewport->SetDouble(devtools::DOM::Rect::kParamWidth, | 656 viewport->SetDouble(devtools::DOM::Rect::kParamWidth, |
649 metadata.scrollable_viewport_size.width()); | 657 metadata.scrollable_viewport_size.width()); |
650 viewport->SetDouble(devtools::DOM::Rect::kParamHeight, | 658 viewport->SetDouble(devtools::DOM::Rect::kParamHeight, |
651 metadata.scrollable_viewport_size.height()); | 659 metadata.scrollable_viewport_size.height()); |
652 response_metadata->Set( | 660 response_metadata->Set( |
653 devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport); | 661 devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport); |
654 | 662 |
655 gfx::SizeF viewport_size_dip = gfx::ScaleSize( | |
656 metadata.scrollable_viewport_size, metadata.page_scale_factor); | |
657 response_metadata->SetDouble( | 663 response_metadata->SetDouble( |
658 devtools::Page::ScreencastFrameMetadata::kParamDeviceWidth, | 664 devtools::Page::ScreencastFrameMetadata::kParamDeviceWidth, |
659 viewport_size_dip.width()); | 665 screen_size_dip.width()); |
660 response_metadata->SetDouble( | 666 response_metadata->SetDouble( |
661 devtools::Page::ScreencastFrameMetadata::kParamDeviceHeight, | 667 devtools::Page::ScreencastFrameMetadata::kParamDeviceHeight, |
662 viewport_size_dip.height() + | 668 screen_size_dip.height()); |
663 metadata.location_bar_content_translation.y() + | |
664 metadata.overdraw_bottom_height); | |
665 response_metadata->SetDouble( | 669 response_metadata->SetDouble( |
666 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetX, | 670 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetX, |
667 metadata.root_scroll_offset.x()); | 671 metadata.root_scroll_offset.x()); |
668 response_metadata->SetDouble( | 672 response_metadata->SetDouble( |
669 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetY, | 673 devtools::Page::ScreencastFrameMetadata::kParamScrollOffsetY, |
670 metadata.root_scroll_offset.y()); | 674 metadata.root_scroll_offset.y()); |
671 | 675 |
672 response->Set(devtools::Page::screencastFrame::kParamMetadata, | 676 response->Set(devtools::Page::screencastFrame::kParamMetadata, |
673 response_metadata); | 677 response_metadata); |
674 } | 678 } |
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1245 return command->InternalErrorResponse("Could not connect to view"); | 1249 return command->InternalErrorResponse("Could not connect to view"); |
1246 | 1250 |
1247 if (event->type == WebInputEvent::MouseWheel) | 1251 if (event->type == WebInputEvent::MouseWheel) |
1248 host_->ForwardWheelEvent(wheel_event); | 1252 host_->ForwardWheelEvent(wheel_event); |
1249 else | 1253 else |
1250 host_->ForwardMouseEvent(mouse_event); | 1254 host_->ForwardMouseEvent(mouse_event); |
1251 return command->SuccessResponse(NULL); | 1255 return command->SuccessResponse(NULL); |
1252 } | 1256 } |
1253 | 1257 |
1254 } // namespace content | 1258 } // namespace content |
OLD | NEW |