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