| 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 |