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 |